Revision: 24170
Author: [email protected]
Date: Wed Sep 24 08:39:04 2014 UTC
Log: Simplify stack trace getter wrt prototype chain walk.
[email protected]
Review URL: https://codereview.chromium.org/595253002
https://code.google.com/p/v8/source/detail?r=24170
Modified:
/branches/bleeding_edge/src/messages.js
=======================================
--- /branches/bleeding_edge/src/messages.js Wed Sep 24 08:12:58 2014 UTC
+++ /branches/bleeding_edge/src/messages.js Wed Sep 24 08:39:04 2014 UTC
@@ -1123,23 +1123,25 @@
var StackTraceGetter = function() {
var formatted_stack_trace = UNDEFINED;
var holder = this;
- while (holder && IS_UNDEFINED(formatted_stack_trace)) {
- formatted_stack_trace = GET_PRIVATE(holder,
formatted_stack_trace_symbol);
- holder = %GetPrototype(holder);
- }
- if (IS_UNDEFINED(formatted_stack_trace)) {
- holder = this;
- while (!HAS_DEFINED_PRIVATE(holder, stack_trace_symbol)) {
- holder = %GetPrototype(holder);
- if (!holder) return UNDEFINED;
+ while (holder) {
+ var formatted_stack_trace =
+ GET_PRIVATE(holder, formatted_stack_trace_symbol);
+ if (IS_UNDEFINED(formatted_stack_trace)) {
+ // No formatted stack trace available.
+ var stack_trace = GET_PRIVATE(holder, stack_trace_symbol);
+ if (IS_UNDEFINED(stack_trace)) {
+ // Neither formatted nor structured stack trace available.
+ // Look further up the prototype chain.
+ holder = %GetPrototype(holder);
+ continue;
+ }
+ formatted_stack_trace = FormatStackTrace(holder, stack_trace);
+ SET_PRIVATE(holder, stack_trace_symbol, UNDEFINED);
+ SET_PRIVATE(holder, formatted_stack_trace_symbol,
formatted_stack_trace);
}
- var stack_trace = GET_PRIVATE(holder, stack_trace_symbol);
- if (IS_UNDEFINED(stack_trace)) return UNDEFINED;
- formatted_stack_trace = FormatStackTrace(holder, stack_trace);
- SET_PRIVATE(holder, stack_trace_symbol, UNDEFINED);
- SET_PRIVATE(holder, formatted_stack_trace_symbol,
formatted_stack_trace);
+ return formatted_stack_trace;
}
- return formatted_stack_trace;
+ return UNDEFINED;
};
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.