Index: src/crankshaft/arm64/lithium-arm64.cc |
diff --git a/src/crankshaft/arm64/lithium-arm64.cc b/src/crankshaft/arm64/lithium-arm64.cc |
index e18fca528b165e8aee6bc5ad224d53a76f6a59e7..d00bc17d4734f77ee822de10c8f66e4d4c0729a7 100644 |
--- a/src/crankshaft/arm64/lithium-arm64.cc |
+++ b/src/crankshaft/arm64/lithium-arm64.cc |
@@ -2462,9 +2462,14 @@ |
case kMathExp: { |
DCHECK(instr->representation().IsDouble()); |
DCHECK(instr->value()->representation().IsDouble()); |
- LOperand* input = UseFixedDouble(instr->value(), d0); |
- LMathExp* result = new (zone()) LMathExp(input); |
- return MarkAsCall(DefineFixedDouble(result, d0), instr); |
+ LOperand* input = UseRegister(instr->value()); |
+ LOperand* double_temp1 = TempDoubleRegister(); |
+ LOperand* temp1 = TempRegister(); |
+ LOperand* temp2 = TempRegister(); |
+ LOperand* temp3 = TempRegister(); |
+ LMathExp* result = new(zone()) LMathExp(input, double_temp1, |
+ temp1, temp2, temp3); |
+ return DefineAsRegister(result); |
} |
case kMathFloor: { |
DCHECK(instr->value()->representation().IsDouble()); |