| Index: src/ic/mips64/ic-mips64.cc
|
| diff --git a/src/ic/mips64/ic-mips64.cc b/src/ic/mips64/ic-mips64.cc
|
| index 98a5c708112edee36bfd58883c5be964fe9388f1..c2f3cb6024871b9923f21fc415421290b7adc232 100644
|
| --- a/src/ic/mips64/ic-mips64.cc
|
| +++ b/src/ic/mips64/ic-mips64.cc
|
| @@ -496,7 +496,8 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| __ SmiScale(scratch, key, kPointerSizeLog2);
|
| __ Daddu(address, address, scratch);
|
| __ sd(value, MemOperand(address));
|
| - __ Ret();
|
| + __ Ret(USE_DELAY_SLOT);
|
| + __ Move(v0, value); // Ensure the stub returns correct value.
|
|
|
| __ bind(&non_smi_value);
|
| // Escape to elements kind transition case.
|
| @@ -518,7 +519,8 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| __ mov(scratch, value); // Preserve the value which is returned.
|
| __ RecordWrite(elements, address, scratch, kRAHasNotBeenSaved,
|
| kDontSaveFPRegs, EMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
|
| - __ Ret();
|
| + __ Ret(USE_DELAY_SLOT);
|
| + __ Move(v0, value); // Ensure the stub returns correct value.
|
|
|
| __ bind(fast_double);
|
| if (check_map == kCheckMap) {
|
| @@ -549,7 +551,8 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| __ Daddu(scratch, key, Operand(Smi::FromInt(1)));
|
| __ sd(scratch, FieldMemOperand(receiver, JSArray::kLengthOffset));
|
| }
|
| - __ Ret();
|
| + __ Ret(USE_DELAY_SLOT);
|
| + __ Move(v0, value); // Ensure the stub returns correct value.
|
|
|
| __ bind(&transition_smi_elements);
|
| // Transition the array appropriately depending on the value type.
|
| @@ -759,7 +762,8 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
| GenerateDictionaryStore(masm, &miss, dictionary, name, value, a6, a7);
|
| Counters* counters = masm->isolate()->counters();
|
| __ IncrementCounter(counters->ic_store_normal_hit(), 1, a6, a7);
|
| - __ Ret();
|
| + __ Ret(USE_DELAY_SLOT);
|
| + __ Move(v0, value); // Ensure the stub returns correct value.
|
|
|
| __ bind(&miss);
|
| __ IncrementCounter(counters->ic_store_normal_miss(), 1, a6, a7);
|
|
|