Index: src/compiler/ia32/code-generator-ia32.cc |
diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc |
index a21930316efe7908cb1c4eaa59cb07455c049657..9edc222d26faea605f20b9b593c0db62810788cd 100644 |
--- a/src/compiler/ia32/code-generator-ia32.cc |
+++ b/src/compiler/ia32/code-generator-ia32.cc |
@@ -1000,6 +1000,40 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
} |
break; |
} |
+ case kIA32PushFloat32: |
+ if (instr->InputAt(0)->IsDoubleRegister()) { |
+ __ sub(esp, Immediate(kDoubleSize)); |
+ __ movss(Operand(esp, 0), i.InputDoubleRegister(0)); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } else if (HasImmediateInput(instr, 0)) { |
+ __ Move(kScratchDoubleReg, i.InputDouble(0)); |
+ __ sub(esp, Immediate(kDoubleSize)); |
+ __ movss(Operand(esp, 0), kScratchDoubleReg); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } else { |
+ __ movsd(kScratchDoubleReg, i.InputOperand(0)); |
+ __ sub(esp, Immediate(kDoubleSize)); |
+ __ movss(Operand(esp, 0), kScratchDoubleReg); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } |
+ break; |
+ case kIA32PushFloat64: |
+ if (instr->InputAt(0)->IsDoubleRegister()) { |
+ __ sub(esp, Immediate(kDoubleSize)); |
+ __ movsd(Operand(esp, 0), i.InputDoubleRegister(0)); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } else if (HasImmediateInput(instr, 0)) { |
+ __ Move(kScratchDoubleReg, i.InputDouble(0)); |
+ __ sub(esp, Immediate(kDoubleSize)); |
+ __ movsd(Operand(esp, 0), kScratchDoubleReg); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } else { |
+ __ movsd(kScratchDoubleReg, i.InputOperand(0)); |
+ __ sub(esp, Immediate(kDoubleSize)); |
+ __ movsd(Operand(esp, 0), kScratchDoubleReg); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } |
+ break; |
case kIA32Push: |
if (instr->InputAt(0)->IsDoubleRegister()) { |
__ sub(esp, Immediate(kDoubleSize)); |