From: keuchel@chromium.org Date: Fri, 21 Oct 2011 10:26:59 +0000 (+0000) Subject: Reapply r9673 "Scope tree serialization and ScopeIterator cleanup." X-Git-Tag: upstream/4.7.83~18129 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=666c4be29fad8286811407760d188e174af2b3b1;p=platform%2Fupstream%2Fv8.git Reapply r9673 "Scope tree serialization and ScopeIterator cleanup." This also includes the two fixes from r9674 and r9675. Here's the diff to the previous CL. --- a/src/runtime.cc +++ b/src/runtime.cc @@ -11133,17 +11133,26 @@ class ScopeIterator { context_(Context::cast(frame->context())), nested_scope_chain_(4) { + // Catch the case when the debugger stops in an internal function. + Handle shared_info(function_->shared()); + if (shared_info->script() == isolate->heap()->undefined_value()) { + if (shared_info->scope_info()->HasContext()) Next(); + return; + } + // Check whether we are in global code or function code. If there is a stack // slot for .result then this function has been created for evaluating // global code and it is not a real function. // Checking for the existence of .result seems fragile, but the scope info // saved with the code object does not otherwise have that information. - int index = function_->shared()->scope_info()-> + int index = shared_info->scope_info()-> StackSlotIndex(isolate_->heap()->result_symbol()); // Reparse the code and analyze the scopes. ZoneScope zone_scope(isolate, DELETE_ON_EXIT); - Handle shared_info(function_->shared()); Handle