| Index: src/lookup.h | 
| diff --git a/src/lookup.h b/src/lookup.h | 
| index 9a053198cbc8378c07c0806964ff0b320b43e06e..3d52c103dcd7f318ec88bd6a6cbecc6d12cd7b62 100644 | 
| --- a/src/lookup.h | 
| +++ b/src/lookup.h | 
| @@ -51,10 +51,11 @@ class LookupIterator final BASE_EMBEDDED { | 
| property_details_(PropertyDetails::Empty()), | 
| isolate_(name->GetIsolate()), | 
| name_(isolate_->factory()->InternalizeName(name)), | 
| +        receiver_(receiver), | 
| +        initial_holder_(GetRoot(isolate_, receiver)), | 
| // kMaxUInt32 isn't a valid index. | 
| index_(kMaxUInt32), | 
| -        receiver_(receiver), | 
| -        initial_holder_(GetRoot(isolate_, receiver)) { | 
| +        number_(DescriptorArray::kNotFound) { | 
| #ifdef DEBUG | 
| uint32_t index;  // Assert that the name is not an array index. | 
| DCHECK(!name->AsArrayIndex(&index)); | 
| @@ -70,10 +71,11 @@ class LookupIterator final BASE_EMBEDDED { | 
| property_details_(PropertyDetails::Empty()), | 
| isolate_(name->GetIsolate()), | 
| name_(isolate_->factory()->InternalizeName(name)), | 
| +        receiver_(receiver), | 
| +        initial_holder_(holder), | 
| // kMaxUInt32 isn't a valid index. | 
| index_(kMaxUInt32), | 
| -        receiver_(receiver), | 
| -        initial_holder_(holder) { | 
| +        number_(DescriptorArray::kNotFound) { | 
| #ifdef DEBUG | 
| uint32_t index;  // Assert that the name is not an array index. | 
| DCHECK(!name->AsArrayIndex(&index)); | 
| @@ -87,10 +89,10 @@ class LookupIterator final BASE_EMBEDDED { | 
| interceptor_state_(InterceptorState::kUninitialized), | 
| property_details_(PropertyDetails::Empty()), | 
| isolate_(isolate), | 
| -        name_(), | 
| -        index_(index), | 
| receiver_(receiver), | 
| -        initial_holder_(GetRoot(isolate, receiver, index)) { | 
| +        initial_holder_(GetRoot(isolate, receiver, index)), | 
| +        index_(index), | 
| +        number_(DescriptorArray::kNotFound) { | 
| // kMaxUInt32 isn't a valid index. | 
| DCHECK_NE(kMaxUInt32, index_); | 
| Start<true>(); | 
| @@ -103,10 +105,10 @@ class LookupIterator final BASE_EMBEDDED { | 
| interceptor_state_(InterceptorState::kUninitialized), | 
| property_details_(PropertyDetails::Empty()), | 
| isolate_(isolate), | 
| -        name_(), | 
| -        index_(index), | 
| receiver_(receiver), | 
| -        initial_holder_(holder) { | 
| +        initial_holder_(holder), | 
| +        index_(index), | 
| +        number_(DescriptorArray::kNotFound) { | 
| // kMaxUInt32 isn't a valid index. | 
| DCHECK_NE(kMaxUInt32, index_); | 
| Start<true>(); | 
| @@ -253,7 +255,10 @@ class LookupIterator final BASE_EMBEDDED { | 
| Handle<Object> GetAccessors() const; | 
| inline Handle<InterceptorInfo> GetInterceptor() const { | 
| DCHECK_EQ(INTERCEPTOR, state_); | 
| -    return handle(GetInterceptor(JSObject::cast(*holder_)), isolate_); | 
| +    InterceptorInfo* result = | 
| +        IsElement() ? GetInterceptor<true>(JSObject::cast(*holder_)) | 
| +                    : GetInterceptor<false>(JSObject::cast(*holder_)); | 
| +    return handle(result, isolate_); | 
| } | 
| Handle<Object> GetDataValue() const; | 
| void WriteDataValue(Handle<Object> value); | 
| @@ -302,10 +307,12 @@ class LookupIterator final BASE_EMBEDDED { | 
| template <bool is_element> | 
| void ReloadPropertyInformation(); | 
|  | 
| -  inline bool SkipInterceptor(JSObject* holder); | 
| +  template <bool is_element> | 
| +  bool SkipInterceptor(JSObject* holder); | 
| +  template <bool is_element> | 
| inline InterceptorInfo* GetInterceptor(JSObject* holder) const { | 
| -    if (IsElement()) return holder->GetIndexedInterceptor(); | 
| -    return holder->GetNamedInterceptor(); | 
| +    return is_element ? holder->GetIndexedInterceptor() | 
| +                      : holder->GetNamedInterceptor(); | 
| } | 
|  | 
| bool check_hidden() const { return (configuration_ & kHidden) != 0; } | 
| @@ -357,11 +364,11 @@ class LookupIterator final BASE_EMBEDDED { | 
| PropertyDetails property_details_; | 
| Isolate* const isolate_; | 
| Handle<Name> name_; | 
| -  uint32_t index_; | 
| Handle<Object> transition_; | 
| const Handle<Object> receiver_; | 
| Handle<JSReceiver> holder_; | 
| const Handle<JSReceiver> initial_holder_; | 
| +  uint32_t index_; | 
| uint32_t number_; | 
| }; | 
|  | 
|  |