Index: src/ic/mips/ic-mips.cc |
diff --git a/src/ic/mips/ic-mips.cc b/src/ic/mips/ic-mips.cc |
index fc44ca09e21df1d3344d95229e3aafe60b1031dc..e6bbbb829b5227b0e5ea44fe15a0ec1a15df1cfb 100644 |
--- a/src/ic/mips/ic-mips.cc |
+++ b/src/ic/mips/ic-mips.cc |
@@ -742,12 +742,24 @@ void KeyedStoreIC::GenerateMegamorphic(MacroAssembler* masm, |
} |
+static void StoreIC_PushArgs(MacroAssembler* masm) { |
+ if (FLAG_vector_stores) { |
+ __ Push(StoreDescriptor::ReceiverRegister(), |
+ StoreDescriptor::NameRegister(), StoreDescriptor::ValueRegister(), |
+ VectorStoreICDescriptor::SlotRegister(), |
+ VectorStoreICDescriptor::VectorRegister()); |
+ } else { |
+ __ Push(StoreDescriptor::ReceiverRegister(), |
+ StoreDescriptor::NameRegister(), StoreDescriptor::ValueRegister()); |
+ } |
+} |
+ |
+ |
void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { |
- // Push receiver, key and value for runtime call. |
- __ Push(StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(), |
- StoreDescriptor::ValueRegister()); |
+ StoreIC_PushArgs(masm); |
- __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, 3, 1); |
+ int args = FLAG_vector_stores ? 5 : 3; |
+ __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss, args, 1); |
} |
@@ -770,10 +782,11 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { |
void StoreIC::GenerateMiss(MacroAssembler* masm) { |
- __ Push(StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(), |
- StoreDescriptor::ValueRegister()); |
+ StoreIC_PushArgs(masm); |
+ |
// Perform tail call to the entry. |
- __ TailCallRuntime(Runtime::kStoreIC_Miss, 3, 1); |
+ int args = FLAG_vector_stores ? 5 : 3; |
+ __ TailCallRuntime(Runtime::kStoreIC_Miss, args, 1); |
} |