Index: src/runtime/runtime-scopes.cc |
diff --git a/src/runtime/runtime-scopes.cc b/src/runtime/runtime-scopes.cc |
index 201bf9d4c683030fcdcc3a15d94a7b51b02869ca..9706e1dc98f864776794e579abb3d709ed6018fb 100644 |
--- a/src/runtime/runtime-scopes.cc |
+++ b/src/runtime/runtime-scopes.cc |
@@ -855,16 +855,14 @@ RUNTIME_FUNCTION(Runtime_DeleteLookupSlot) { |
static Object* ComputeReceiverForNonGlobal(Isolate* isolate, JSObject* holder) { |
DCHECK(!holder->IsGlobalObject()); |
- Context* top = isolate->context(); |
- // Get the context extension function. |
- JSFunction* context_extension_function = |
- top->native_context()->context_extension_function(); |
+ |
// If the holder isn't a context extension object, we just return it |
// as the receiver. This allows arguments objects to be used as |
// receivers, but only if they are put in the context scope chain |
// explicitly via a with-statement. |
- Object* constructor = holder->map()->GetConstructor(); |
- if (constructor != context_extension_function) return holder; |
+ if (holder->map()->instance_type() != JS_CONTEXT_EXTENSION_OBJECT_TYPE) { |
+ return holder; |
+ } |
// Fall back to using the global object as the implicit receiver if |
// the property turns out to be a local variable allocated in a |
// context extension object - introduced via eval. |