Index: src/lookup.h |
diff --git a/src/lookup.h b/src/lookup.h |
index 53f1a686828fd0c2d035a4164c8e2668ec4b2063..5fbc10b0daba58ff0602836f7d4be9fa23be197f 100644 |
--- a/src/lookup.h |
+++ b/src/lookup.h |
@@ -31,11 +31,14 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
}; |
enum State { |
+ ACCESS_CHECK, |
+ INTERCEPTOR, |
+ JSPROXY, |
NOT_FOUND, |
PROPERTY, |
- INTERCEPTOR, |
- ACCESS_CHECK, |
- JSPROXY |
+ // Set state_ to BEFORE_PROPERTY to ensure that the next lookup will be a |
+ // PROPERTY lookup. |
+ BEFORE_PROPERTY = INTERCEPTOR |
}; |
enum PropertyKind { |
@@ -100,6 +103,10 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
bool IsFound() const { return state_ != NOT_FOUND; } |
void Next(); |
+ void NotFound() { |
+ has_property_ = false; |
+ state_ = NOT_FOUND; |
+ } |
Heap* heap() const { return isolate_->heap(); } |
Factory* factory() const { return isolate_->factory(); } |
@@ -130,6 +137,9 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
Object::StoreFromKeyed store_mode); |
void ReconfigureDataProperty(Handle<Object> value, |
PropertyAttributes attributes); |
+ void TransitionToAccessorProperty(AccessorComponent component, |
+ Handle<Object> accessor, |
+ PropertyAttributes attributes); |
PropertyKind property_kind() const { |
DCHECK(has_property_); |
return property_kind_; |
@@ -162,6 +172,7 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
MUST_USE_RESULT inline JSReceiver* NextHolder(Map* map); |
inline State LookupInHolder(Map* map); |
Handle<Object> FetchValue() const; |
+ void ReloadPropertyInformation(); |
bool IsBootstrapping() const; |