Index: src/ic/keyed-store-generic.cc |
diff --git a/src/ic/keyed-store-generic.cc b/src/ic/keyed-store-generic.cc |
index 89af858539501883852c4896e5cea021c602300e..e50cbb6e9403951e43a1250c92c5146753001f15 100644 |
--- a/src/ic/keyed-store-generic.cc |
+++ b/src/ic/keyed-store-generic.cc |
@@ -729,17 +729,20 @@ void KeyedStoreGenericAssembler::EmitGenericPropertyStore( |
Bind(&stub_cache); |
{ |
Comment("stub cache probe"); |
- // The stub cache lookup is opportunistic: if we find a handler, use it; |
- // otherwise take the slow path. Since this is a generic stub, compiling |
- // a handler (as KeyedStoreIC_Miss would do) is probably a waste of time. |
Variable var_handler(this, MachineRepresentation::kTagged); |
- Label found_handler(this, &var_handler); |
+ Label found_handler(this, &var_handler), stub_cache_miss(this); |
TryProbeStubCache(isolate()->store_stub_cache(), receiver, p->name, |
- &found_handler, &var_handler, slow); |
+ &found_handler, &var_handler, &stub_cache_miss); |
Bind(&found_handler); |
{ |
Comment("KeyedStoreGeneric found handler"); |
- HandleStoreICHandlerCase(p, var_handler.value(), slow); |
+ HandleStoreICHandlerCase(p, var_handler.value(), &stub_cache_miss); |
+ } |
+ Bind(&stub_cache_miss); |
+ { |
+ Comment("KeyedStoreGeneric_miss"); |
+ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, p->context, p->value, |
+ p->slot, p->vector, p->receiver, p->name); |
} |
} |
} |