Index: src/x64/ic-x64.cc |
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc |
index 5ed89b5d4ddd37b184876b4e05e4766fd7c5eb6c..dd9ab9c01eeb552007690a036d51b54e9a2b02b3 100644 |
--- a/src/x64/ic-x64.cc |
+++ b/src/x64/ic-x64.cc |
@@ -710,7 +710,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) { |
char_at_generator.GenerateSlow(masm, call_helper); |
__ bind(&miss); |
- GenerateMiss(masm); |
+ GenerateMiss(masm, false); |
} |
@@ -753,7 +753,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { |
1); |
__ bind(&slow); |
- GenerateMiss(masm); |
+ GenerateMiss(masm, false); |
} |
@@ -1292,7 +1292,7 @@ void LoadIC::GenerateMiss(MacroAssembler* masm) { |
} |
-void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { |
+void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, bool force_generic) { |
// ----------- S t a t e ------------- |
// -- rax : key |
// -- rdx : receiver |
@@ -1308,8 +1308,10 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { |
__ push(rbx); // return address |
// Perform tail call to the entry. |
- ExternalReference ref |
- = ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate()); |
+ ExternalReference ref = force_generic |
+ ? ExternalReference(IC_Utility(kKeyedLoadIC_MissForceGeneric), |
+ masm->isolate()) |
+ : ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate()); |
__ TailCallExternalReference(ref, 2, 1); |
} |
@@ -1493,7 +1495,7 @@ void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, |
} |
-void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { |
+void KeyedStoreIC::GenerateMiss(MacroAssembler* masm, bool force_generic) { |
// ----------- S t a t e ------------- |
// -- rax : value |
// -- rcx : key |
@@ -1508,8 +1510,10 @@ void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { |
__ push(rbx); // return address |
// Do tail-call to runtime routine. |
- ExternalReference ref = |
- ExternalReference(IC_Utility(kKeyedStoreIC_Miss), masm->isolate()); |
+ ExternalReference ref = force_generic |
+ ? ExternalReference(IC_Utility(kKeyedStoreIC_MissForceGeneric), |
+ masm->isolate()) |
+ : ExternalReference(IC_Utility(kKeyedStoreIC_Miss), masm->isolate()); |
__ TailCallExternalReference(ref, 3, 1); |
} |