Index: src/compiler/mips/code-generator-mips.cc |
diff --git a/src/compiler/mips/code-generator-mips.cc b/src/compiler/mips/code-generator-mips.cc |
index fd6885b7555aa26ed6ca18573d730f5a5480f864..0c5ff85d2de1211973d07100a21d5d4d1bb7306b 100644 |
--- a/src/compiler/mips/code-generator-mips.cc |
+++ b/src/compiler/mips/code-generator-mips.cc |
@@ -790,14 +790,23 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
__ sdc1(i.InputDoubleRegister(2), i.MemoryOperand()); |
break; |
case kMipsPush: |
- __ Push(i.InputRegister(0)); |
+ if (instr->InputAt(0)->IsDoubleRegister()) { |
+ __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); |
+ __ Subu(sp, sp, Operand(kDoubleSize)); |
+ } else { |
+ __ Push(i.InputRegister(0)); |
+ } |
break; |
case kMipsStackClaim: { |
__ Subu(sp, sp, Operand(i.InputInt32(0))); |
break; |
} |
case kMipsStoreToStackSlot: { |
- __ sw(i.InputRegister(0), MemOperand(sp, i.InputInt32(1))); |
+ if (instr->InputAt(0)->IsDoubleRegister()) { |
+ __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, i.InputInt32(1))); |
+ } else { |
+ __ sw(i.InputRegister(0), MemOperand(sp, i.InputInt32(1))); |
+ } |
break; |
} |
case kMipsStoreWriteBarrier: { |