Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 8b33e3a06a8b3d63fd3b8292e9f0b85a78ec8dc4..f0c5edc53b1e8947646ddac4420a27a65d8149e9 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -1990,8 +1990,7 @@ MUST_USE_RESULT static MaybeHandle<Object> GetOwnProperty(Isolate* isolate, |
if (attrs == ABSENT) return factory->undefined_value(); |
// Get AccessorPair if present. |
- if (it.state() == LookupIterator::PROPERTY && |
- it.property_kind() == LookupIterator::ACCESSOR && |
+ if (it.state() == LookupIterator::ACCESSOR && |
it.GetAccessors()->IsAccessorPair()) { |
maybe_accessors = Handle<AccessorPair>::cast(it.GetAccessors()); |
} |
@@ -2323,7 +2322,7 @@ RUNTIME_FUNCTION(Runtime_InitializeConstGlobal) { |
// Ignore if we can't reconfigure the value. |
if ((old_attributes & DONT_DELETE) != 0) { |
if ((old_attributes & READ_ONLY) != 0 || |
- it.property_kind() == LookupIterator::ACCESSOR) { |
+ it.state() == LookupIterator::ACCESSOR) { |
return *value; |
} |
attr = static_cast<PropertyAttributes>(old_attributes | READ_ONLY); |
@@ -2468,7 +2467,7 @@ RUNTIME_FUNCTION(Runtime_InitializeLegacyConstLookupSlot) { |
// Ignore if we can't reconfigure the value. |
if ((old_attributes & DONT_DELETE) != 0) { |
if ((old_attributes & READ_ONLY) != 0 || |
- it.property_kind() == LookupIterator::ACCESSOR) { |
+ it.state() == LookupIterator::ACCESSOR) { |
return *value; |
} |
attr = static_cast<PropertyAttributes>(old_attributes | READ_ONLY); |
@@ -4891,8 +4890,8 @@ RUNTIME_FUNCTION(Runtime_KeyedGetProperty) { |
// Lookup cache miss. Perform lookup and update the cache if |
// appropriate. |
LookupIterator it(receiver, key, LookupIterator::OWN); |
- if (it.IsFound() && it.state() == LookupIterator::PROPERTY && |
- it.HasProperty() && it.property_details().type() == FIELD) { |
+ if (it.state() == LookupIterator::DATA && |
+ it.property_details().type() == FIELD) { |
FieldIndex field_index = it.GetFieldIndex(); |
// Do not track double fields in the keyed lookup cache. Reading |
// double values requires boxing. |
@@ -5050,8 +5049,7 @@ RUNTIME_FUNCTION(Runtime_DefineDataPropertyUnchecked) { |
// Take special care when attributes are different and there is already |
// a property. |
- if (it.IsFound() && it.HasProperty() && |
- it.property_kind() == LookupIterator::ACCESSOR) { |
+ if (it.state() == LookupIterator::ACCESSOR) { |
// Use IgnoreAttributes version since a readonly property may be |
// overridden and SetProperty does not allow this. |
Handle<Object> result; |
@@ -10898,6 +10896,7 @@ static Handle<Object> DebugGetProperty(LookupIterator* it, |
switch (it->state()) { |
case LookupIterator::NOT_FOUND: |
case LookupIterator::TRANSITION: |
+ case LookupIterator::UNKNOWN: |
UNREACHABLE(); |
case LookupIterator::ACCESS_CHECK: |
// Ignore access checks. |
@@ -10905,30 +10904,25 @@ static Handle<Object> DebugGetProperty(LookupIterator* it, |
case LookupIterator::INTERCEPTOR: |
case LookupIterator::JSPROXY: |
return it->isolate()->factory()->undefined_value(); |
- case LookupIterator::PROPERTY: |
- if (!it->HasProperty()) continue; |
- switch (it->property_kind()) { |
- case LookupIterator::ACCESSOR: { |
- Handle<Object> accessors = it->GetAccessors(); |
- if (!accessors->IsAccessorInfo()) { |
- return it->isolate()->factory()->undefined_value(); |
- } |
- MaybeHandle<Object> maybe_result = |
- JSObject::GetPropertyWithAccessor(it->GetReceiver(), it->name(), |
- it->GetHolder<JSObject>(), |
- accessors); |
- Handle<Object> result; |
- if (!maybe_result.ToHandle(&result)) { |
- result = |
- handle(it->isolate()->pending_exception(), it->isolate()); |
- it->isolate()->clear_pending_exception(); |
- if (has_caught != NULL) *has_caught = true; |
- } |
- return result; |
- } |
- case LookupIterator::DATA: |
- return it->GetDataValue(); |
+ case LookupIterator::ACCESSOR: { |
+ Handle<Object> accessors = it->GetAccessors(); |
+ if (!accessors->IsAccessorInfo()) { |
+ return it->isolate()->factory()->undefined_value(); |
} |
+ MaybeHandle<Object> maybe_result = JSObject::GetPropertyWithAccessor( |
+ it->GetReceiver(), it->name(), it->GetHolder<JSObject>(), |
+ accessors); |
+ Handle<Object> result; |
+ if (!maybe_result.ToHandle(&result)) { |
+ result = handle(it->isolate()->pending_exception(), it->isolate()); |
+ it->isolate()->clear_pending_exception(); |
+ if (has_caught != NULL) *has_caught = true; |
+ } |
+ return result; |
+ } |
+ |
+ case LookupIterator::DATA: |
+ return it->GetDataValue(); |
} |
} |
@@ -10983,8 +10977,7 @@ RUNTIME_FUNCTION(Runtime_DebugGetPropertyDetails) { |
if (!it.IsFound()) return isolate->heap()->undefined_value(); |
Handle<Object> maybe_pair; |
- if (it.state() == LookupIterator::PROPERTY && |
- it.property_kind() == LookupIterator::ACCESSOR) { |
+ if (it.state() == LookupIterator::ACCESSOR) { |
maybe_pair = it.GetAccessors(); |
} |