Index: src/runtime/runtime-debug.cc |
diff --git a/src/runtime/runtime-debug.cc b/src/runtime/runtime-debug.cc |
index 239f2b2e38f36ab7b30a111ce223a5f362525cb7..591c8650e24b4305f0961a2e87924c377ab35534 100644 |
--- a/src/runtime/runtime-debug.cc |
+++ b/src/runtime/runtime-debug.cc |
@@ -1298,16 +1298,21 @@ class ScopeIterator { |
context_ = Handle<Context>(); |
return; |
} |
- if (scope_type == ScopeTypeScript) seen_script_scope_ = true; |
- if (nested_scope_chain_.is_empty()) { |
- if (scope_type == ScopeTypeScript) { |
- if (context_->IsScriptContext()) { |
- context_ = Handle<Context>(context_->previous(), isolate_); |
- } |
- CHECK(context_->IsNativeContext()); |
- } else { |
+ if (scope_type == ScopeTypeScript) { |
+ seen_script_scope_ = true; |
+ if (context_->IsScriptContext()) { |
context_ = Handle<Context>(context_->previous(), isolate_); |
} |
+ if (!nested_scope_chain_.is_empty()) { |
+ DCHECK_EQ(nested_scope_chain_.last()->scope_type(), SCRIPT_SCOPE); |
+ nested_scope_chain_.RemoveLast(); |
+ DCHECK(nested_scope_chain_.is_empty()); |
+ } |
+ CHECK(context_->IsNativeContext()); |
+ return; |
+ } |
+ if (nested_scope_chain_.is_empty()) { |
+ context_ = Handle<Context>(context_->previous(), isolate_); |
} else { |
if (nested_scope_chain_.last()->HasContext()) { |
DCHECK(context_->previous() != NULL); |