Chromium Code Reviews| Index: src/ic/ic.cc |
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
| index 313d8eb6ec200d5bf541201040764d388b462c80..3e6c1c070dc09823b3179ddc48942f08d6b8f757 100644 |
| --- a/src/ic/ic.cc |
| +++ b/src/ic/ic.cc |
| @@ -1279,6 +1279,10 @@ Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup, |
| #endif |
| DCHECK(IsCompatibleReceiver(lookup, map)); |
| + if (lookup->TryLookupCacheProperty()) { |
|
Toon Verwaest
2016/10/21 08:22:14
Shouldn't this be moved in the IsAccessorPair case
vogelheim
2016/11/03 16:12:23
Done.
|
| + DCHECK_EQ(LookupIterator::DATA, lookup->state()); |
| + return CompileHandler(lookup, unused, cache_holder); |
|
Toon Verwaest
2016/10/21 08:22:14
Don't we have to go through ComputeHandler again?
vogelheim
2016/11/03 16:12:23
Done.
|
| + } |
| Handle<Object> accessors = lookup->GetAccessors(); |
| if (accessors->IsAccessorPair()) { |
| DCHECK(holder->HasFastProperties()); |
| @@ -1332,7 +1336,6 @@ Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup, |
| // -------------- Fields -------------- |
| if (lookup->property_details().type() == DATA) { |
| FieldIndex field = lookup->GetFieldIndex(); |
| - DCHECK(!receiver_is_holder); |
|
Toon Verwaest
2016/10/21 08:22:14
Why is this removed? I'm pretty sure we need this.
vogelheim
2016/11/03 16:12:23
Done.
(I guess this was an artefact of the Comp[i
|
| TRACE_HANDLER_STATS(isolate(), LoadIC_LoadField); |
| NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); |
| return compiler.CompileLoadField(lookup->name(), field); |