Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 4cdc073f3760971b5e41a808b8ce4e92049d91dd..0cc0d094e16a568b1abccc9b802dcb226371bc97 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -927,7 +927,8 @@ bool Object::IsJSGlobalProxy() { |
bool result = IsHeapObject() && |
(HeapObject::cast(this)->map()->instance_type() == |
JS_GLOBAL_PROXY_TYPE); |
- ASSERT(!result || IsAccessCheckNeeded()); |
+ ASSERT(!result || |
+ HeapObject::cast(this)->map()->is_access_check_needed()); |
return result; |
} |
@@ -952,8 +953,14 @@ bool Object::IsUndetectableObject() { |
bool Object::IsAccessCheckNeeded() { |
- return IsHeapObject() |
- && HeapObject::cast(this)->map()->is_access_check_needed(); |
+ if (!IsHeapObject()) return false; |
+ if (IsJSGlobalProxy()) { |
+ JSGlobalProxy* proxy = JSGlobalProxy::cast(this); |
+ GlobalObject* global = |
+ proxy->GetIsolate()->context()->global_object(); |
+ return proxy->IsDetachedFrom(global); |
+ } |
+ return HeapObject::cast(this)->map()->is_access_check_needed(); |
} |