| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 4c30fd539ec7c8296217f9e1efb628b15cc87fb6..e5aed8b3ab2b762ad02d5cc0f7471cae6e908a42 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -802,14 +802,26 @@ static MayAccessDecision MayAccessPreCheck(Isolate* isolate,
|
| }
|
|
|
|
|
| +bool Isolate::IsInternallyUsedPropertyName(Handle<Object> name) {
|
| + return name.is_identical_to(factory()->hidden_string()) ||
|
| + name.is_identical_to(factory()->prototype_users_symbol());
|
| +}
|
| +
|
| +
|
| +bool Isolate::IsInternallyUsedPropertyName(Object* name) {
|
| + return name == heap()->hidden_string() ||
|
| + name == heap()->prototype_users_symbol();
|
| +}
|
| +
|
| +
|
| bool Isolate::MayNamedAccess(Handle<JSObject> receiver,
|
| Handle<Object> key,
|
| v8::AccessType type) {
|
| DCHECK(receiver->IsJSGlobalProxy() || receiver->IsAccessCheckNeeded());
|
|
|
| - // Skip checks for hidden properties access. Note, we do not
|
| + // Skip checks for internally used properties. Note, we do not
|
| // require existence of a context in this case.
|
| - if (key.is_identical_to(factory()->hidden_string())) return true;
|
| + if (IsInternallyUsedPropertyName(key)) return true;
|
|
|
| // Check for compatibility between the security tokens in the
|
| // current lexical context and the accessed object.
|
|
|