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_; |
}; |