| Index: src/ic/mips/ic-mips.cc
|
| diff --git a/src/ic/mips/ic-mips.cc b/src/ic/mips/ic-mips.cc
|
| index 0984490fc39dbf52585607dd1d2786626445260b..9dfd9f2e9f31eb1a5f38434b91610190a583268e 100644
|
| --- a/src/ic/mips/ic-mips.cc
|
| +++ b/src/ic/mips/ic-mips.cc
|
| @@ -272,18 +272,32 @@ void LoadIC::GenerateNormal(MacroAssembler* masm) {
|
| static const Register LoadIC_TempRegister() { return a3; }
|
|
|
|
|
| +static void LoadIC_PushArgs(MacroAssembler* masm) {
|
| + Register receiver = LoadDescriptor::ReceiverRegister();
|
| + Register name = LoadDescriptor::NameRegister();
|
| + if (FLAG_vector_ics) {
|
| + Register slot = VectorLoadICDescriptor::SlotRegister();
|
| + Register vector = VectorLoadICDescriptor::VectorRegister();
|
| +
|
| + __ Push(receiver, name, slot, vector);
|
| + } else {
|
| + __ Push(receiver, name);
|
| + }
|
| +}
|
| +
|
| +
|
| void LoadIC::GenerateMiss(MacroAssembler* masm) {
|
| // The return address is in ra.
|
| Isolate* isolate = masm->isolate();
|
|
|
| __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a3, t0);
|
|
|
| - __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister());
|
| - __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister());
|
| + LoadIC_PushArgs(masm);
|
|
|
| // Perform tail call to the entry.
|
| ExternalReference ref = ExternalReference(IC_Utility(kLoadIC_Miss), isolate);
|
| - __ TailCallExternalReference(ref, 2, 1);
|
| + int arg_count = FLAG_vector_ics ? 4 : 2;
|
| + __ TailCallExternalReference(ref, arg_count, 1);
|
| }
|
|
|
|
|
| @@ -414,13 +428,14 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
|
|
|
| __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a3, t0);
|
|
|
| - __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
|
| + LoadIC_PushArgs(masm);
|
|
|
| // Perform tail call to the entry.
|
| ExternalReference ref =
|
| ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
|
|
|
| - __ TailCallExternalReference(ref, 2, 1);
|
| + int arg_count = FLAG_vector_ics ? 4 : 2;
|
| + __ TailCallExternalReference(ref, arg_count, 1);
|
| }
|
|
|
|
|
|
|