| Index: src/lookup.h
|
| diff --git a/src/lookup.h b/src/lookup.h
|
| index 2d609c5f666c6b77851cf3917f000e18e8d5b6e0..8705eea1d2766c910add5d0bfbd34300da651951 100644
|
| --- a/src/lookup.h
|
| +++ b/src/lookup.h
|
| @@ -15,15 +15,15 @@ namespace internal {
|
| class LookupIterator V8_FINAL BASE_EMBEDDED {
|
| public:
|
| enum Configuration {
|
| - CHECK_OWN_REAL = 0,
|
| - CHECK_HIDDEN = 1 << 0,
|
| - CHECK_DERIVED = 1 << 1,
|
| - CHECK_INTERCEPTOR = 1 << 2,
|
| + CHECK_OWN_REAL = 0,
|
| + CHECK_HIDDEN = 1 << 0,
|
| + CHECK_DERIVED = 1 << 1,
|
| + CHECK_INTERCEPTOR = 1 << 2,
|
| CHECK_ACCESS_CHECK = 1 << 3,
|
| - CHECK_ALL = CHECK_HIDDEN | CHECK_DERIVED |
|
| - CHECK_INTERCEPTOR | CHECK_ACCESS_CHECK,
|
| - SKIP_INTERCEPTOR = CHECK_ALL ^ CHECK_INTERCEPTOR,
|
| - CHECK_OWN = CHECK_ALL ^ CHECK_DERIVED
|
| + CHECK_HIDDEN_ACCESS = CHECK_HIDDEN | CHECK_ACCESS_CHECK,
|
| + SKIP_INTERCEPTOR = CHECK_HIDDEN_ACCESS | CHECK_DERIVED,
|
| + CHECK_ALL = SKIP_INTERCEPTOR | CHECK_INTERCEPTOR,
|
| + CHECK_OWN = CHECK_HIDDEN_ACCESS | CHECK_INTERCEPTOR
|
| };
|
|
|
| enum State {
|
| @@ -90,7 +90,7 @@ class LookupIterator V8_FINAL BASE_EMBEDDED {
|
| Heap* heap() const { return isolate_->heap(); }
|
| Factory* factory() const { return isolate_->factory(); }
|
| Handle<Object> GetReceiver() const {
|
| - return Handle<Object>::cast(maybe_receiver_.ToHandleChecked());
|
| + return maybe_receiver_.ToHandleChecked();
|
| }
|
| Handle<Map> holder_map() const { return holder_map_; }
|
| template <class T>
|
| @@ -100,16 +100,7 @@ class LookupIterator V8_FINAL BASE_EMBEDDED {
|
| }
|
| Handle<JSReceiver> GetRoot() const;
|
| bool HolderIsReceiverOrHiddenPrototype() const;
|
| -
|
| - /* Dynamically reduce the trapped types. */
|
| - void skip_interceptor() {
|
| - configuration_ = static_cast<Configuration>(
|
| - configuration_ & ~CHECK_INTERCEPTOR);
|
| - }
|
| - void skip_access_check() {
|
| - configuration_ = static_cast<Configuration>(
|
| - configuration_ & ~CHECK_ACCESS_CHECK);
|
| - }
|
| + bool HolderIsNonGlobalHiddenPrototype() const;
|
|
|
| /* ACCESS_CHECK */
|
| bool HasAccess(v8::AccessType access_type) const;
|
| @@ -123,6 +114,8 @@ class LookupIterator V8_FINAL BASE_EMBEDDED {
|
| void TransitionToDataProperty(Handle<Object> value,
|
| PropertyAttributes attributes,
|
| Object::StoreFromKeyed store_mode);
|
| + void ReconfigureDataProperty(Handle<Object> value,
|
| + PropertyAttributes attributes);
|
| PropertyKind property_kind() const {
|
| DCHECK(has_property_);
|
| return property_kind_;
|
| @@ -196,6 +189,8 @@ class LookupIterator V8_FINAL BASE_EMBEDDED {
|
| }
|
| }
|
|
|
| + // If configuration_ becomes mutable, update
|
| + // HolderIsReceiverOrHiddenPrototype.
|
| Configuration configuration_;
|
| State state_;
|
| bool has_property_;
|
|
|