| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 4aeef9d4558b7a59c3dcb06aa3d2d8052d022b92..79c9d49a894b836b47997a5b1374e5a9ca003af6 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -4870,18 +4870,18 @@ RUNTIME_FUNCTION(Runtime_KeyedGetProperty) {
|
| }
|
| // Lookup cache miss. Perform lookup and update the cache if
|
| // appropriate.
|
| - LookupResult result(isolate);
|
| - receiver->LookupOwn(key, &result);
|
| - if (result.IsField()) {
|
| - FieldIndex field_index = result.GetFieldIndex();
|
| + LookupIterator it(receiver, key, LookupIterator::CHECK_OWN);
|
| + if (it.IsFound() && it.state() == LookupIterator::PROPERTY &&
|
| + it.HasProperty() && 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.
|
| - if (!result.representation().IsDouble()) {
|
| + if (!it.representation().IsDouble()) {
|
| keyed_lookup_cache->Update(receiver_map, key,
|
| field_index.GetKeyedLookupCacheIndex());
|
| }
|
| AllowHeapAllocation allow_allocation;
|
| - return *JSObject::FastPropertyAt(receiver, result.representation(),
|
| + return *JSObject::FastPropertyAt(receiver, it.representation(),
|
| field_index);
|
| }
|
| } else {
|
|
|