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); |