| Index: src/lookup.h
|
| diff --git a/src/lookup.h b/src/lookup.h
|
| index a114bc5c0745d8fd42884dc9cd503244e119085d..c6bbb66f72240bba0cd3fd34457b2954f8746b04 100644
|
| --- a/src/lookup.h
|
| +++ b/src/lookup.h
|
| @@ -31,6 +31,7 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
|
|
| enum State {
|
| ACCESS_CHECK,
|
| + INTEGER_INDEXED_EXOTIC,
|
| INTERCEPTOR,
|
| JSPROXY,
|
| NOT_FOUND,
|
| @@ -46,6 +47,7 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| Configuration configuration = PROTOTYPE_CHAIN)
|
| : configuration_(ComputeConfiguration(configuration, name)),
|
| state_(NOT_FOUND),
|
| + exotic_index_state_(ExoticIndexState::kUninitialized),
|
| property_details_(NONE, v8::internal::DATA, 0),
|
| isolate_(name->GetIsolate()),
|
| name_(name),
|
| @@ -61,6 +63,7 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| Configuration configuration = PROTOTYPE_CHAIN)
|
| : configuration_(ComputeConfiguration(configuration, name)),
|
| state_(NOT_FOUND),
|
| + exotic_index_state_(ExoticIndexState::kUninitialized),
|
| property_details_(NONE, v8::internal::DATA, 0),
|
| isolate_(name->GetIsolate()),
|
| name_(name),
|
| @@ -140,11 +143,6 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| // Usually returns the value that was passed in, but may perform
|
| // non-observable modifications on it, such as internalize strings.
|
| Handle<Object> WriteDataValue(Handle<Object> value);
|
| -
|
| - // Checks whether the receiver is an indexed exotic object
|
| - // and name is a special numeric index.
|
| - bool IsSpecialNumericIndex() const;
|
| -
|
| void InternalizeName();
|
|
|
| private:
|
| @@ -185,11 +183,15 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| }
|
| }
|
|
|
| + enum class ExoticIndexState { kUninitialized, kNoIndex, kIndex };
|
| + bool IsIntegerIndexedExotic(JSReceiver* holder);
|
| +
|
| // If configuration_ becomes mutable, update
|
| // HolderIsReceiverOrHiddenPrototype.
|
| Configuration configuration_;
|
| State state_;
|
| bool has_property_;
|
| + ExoticIndexState exotic_index_state_;
|
| PropertyDetails property_details_;
|
| Isolate* isolate_;
|
| Handle<Name> name_;
|
|
|