Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index bdaffa42bb68d017477d78fb1f2ae6a843b68b23..d958f03a58949b0bd8e57be78b709d5adc5b7dfa 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -6893,7 +6893,13 @@ namespace { |
Maybe<bool> GetPropertyDescriptorWithInterceptor(LookupIterator* it, |
PropertyDescriptor* desc) { |
- if (it->state() == LookupIterator::INTERCEPTOR) { |
+ bool has_access = true; |
+ if (it->state() == LookupIterator::ACCESS_CHECK) { |
+ has_access = it->HasAccess() || JSObject::AllCanRead(it); |
+ it->Next(); |
+ } |
+ |
+ if (has_access && it->state() == LookupIterator::INTERCEPTOR) { |
Isolate* isolate = it->isolate(); |
Handle<InterceptorInfo> interceptor = it->GetInterceptor(); |
if (!interceptor->descriptor()->IsUndefined(isolate)) { |
@@ -6937,6 +6943,7 @@ Maybe<bool> GetPropertyDescriptorWithInterceptor(LookupIterator* it, |
} |
} |
} |
+ it->Restart(); |
return Just(false); |
} |
} // namespace |