Index: src/runtime/runtime-debug.cc |
diff --git a/src/runtime/runtime-debug.cc b/src/runtime/runtime-debug.cc |
index 637fdb8f88776f920370ea789a4e1bf617bde8fa..031bdb2760f241fbd669867db02f1016501fd166 100644 |
--- a/src/runtime/runtime-debug.cc |
+++ b/src/runtime/runtime-debug.cc |
@@ -859,46 +859,6 @@ |
} |
-MUST_USE_RESULT |
-static MaybeHandle<Context> MaterializeReceiver( |
- Isolate* isolate, Handle<Context> target, Handle<JSFunction> function, |
- JavaScriptFrame* frame) { |
- Handle<SharedFunctionInfo> shared(function->shared()); |
- Handle<ScopeInfo> scope_info(shared->scope_info()); |
- Handle<Object> receiver; |
- switch (scope_info->scope_type()) { |
- case FUNCTION_SCOPE: { |
- VariableMode variable_mode; |
- InitializationFlag init_flag; |
- MaybeAssignedFlag maybe_assigned_flag; |
- |
- // Don't bother creating a fake context node if "this" is in the context |
- // already. |
- if (ScopeInfo::ContextSlotIndex(scope_info, |
- isolate->factory()->this_string(), &variable_mode, &init_flag, |
- &maybe_assigned_flag) >= 0) { |
- return target; |
- } |
- receiver = Handle<Object>(frame->receiver(), isolate); |
- break; |
- } |
- case MODULE_SCOPE: |
- receiver = isolate->factory()->undefined_value(); |
- break; |
- case SCRIPT_SCOPE: |
- receiver = Handle<Object>(function->global_proxy(), isolate); |
- break; |
- default: |
- // For eval code, arrow functions, and the like, there's no "this" binding |
- // to materialize. |
- return target; |
- } |
- |
- return isolate->factory()->NewCatchContext(function, target, |
- isolate->factory()->this_string(), receiver); |
-} |
- |
- |
// Create a plain JSObject which materializes the local scope for the specified |
// frame. |
MUST_USE_RESULT |
@@ -1515,21 +1475,16 @@ |
context_ = Handle<Context>(); |
return; |
} |
- if (scope_type == ScopeTypeScript) { |
- seen_script_scope_ = true; |
- if (context_->IsScriptContext()) { |
+ 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 { |
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); |
@@ -2498,12 +2453,6 @@ |
outer_info_ = handle(function->shared()); |
Handle<Context> inner_context; |
- // The "this" binding, if any, can't be bound via "with". If we need to, |
- // add another node onto the outer context to bind "this". |
- if (!MaterializeReceiver(isolate, outer_context, function, frame) |
- .ToHandle(&outer_context)) |
- return; |
- |
bool stop = false; |
for (ScopeIterator it(isolate, frame, inlined_jsframe_index); |
!it.Failed() && !it.Done() && !stop; it.Next()) { |