| Index: src/ic/mips64/ic-mips64.cc
|
| diff --git a/src/ic/mips64/ic-mips64.cc b/src/ic/mips64/ic-mips64.cc
|
| index b4055b23679dbbab6d06aef112ed8afd7772ab6b..1dd5fc4f89f18622909076bc66506dbfbeb1e213 100644
|
| --- a/src/ic/mips64/ic-mips64.cc
|
| +++ b/src/ic/mips64/ic-mips64.cc
|
| @@ -270,18 +270,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 on the stack.
|
| Isolate* isolate = masm->isolate();
|
|
|
| __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a3, a4);
|
|
|
| - __ 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);
|
| }
|
|
|
|
|
| @@ -412,13 +426,14 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
|
|
|
| __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a3, a4);
|
|
|
| - __ 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);
|
| }
|
|
|
|
|
|
|