Index: src/compiler/arm/code-generator-arm.cc |
diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc |
index cef16c2faa09ad8085c9110d7e34aae5a7000a8d..38ec63122cee8c79f06ec3c04c8f29d087a0e43c 100644 |
--- a/src/compiler/arm/code-generator-arm.cc |
+++ b/src/compiler/arm/code-generator-arm.cc |
@@ -1204,8 +1204,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
} |
case kArmPush: |
if (instr->InputAt(0)->IsFPRegister()) { |
- __ vpush(i.InputDoubleRegister(0)); |
- frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ LocationOperand* op = LocationOperand::cast(instr->InputAt(0)); |
+ if (op->representation() == MachineRepresentation::kFloat64) { |
+ __ vpush(i.InputFloat64Register(0)); |
+ frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); |
+ } else { |
+ DCHECK_EQ(MachineRepresentation::kFloat32, op->representation()); |
+ __ vpush(i.InputFloat32Register(0)); |
+ frame_access_state()->IncreaseSPDelta(1); |
+ } |
} else { |
__ push(i.InputRegister(0)); |
frame_access_state()->IncreaseSPDelta(1); |