Index: src/crankshaft/x64/lithium-codegen-x64.cc |
diff --git a/src/crankshaft/x64/lithium-codegen-x64.cc b/src/crankshaft/x64/lithium-codegen-x64.cc |
index 236157a24ca7bcb28ea0fcd2d9a3ef71296757f3..0a2a0b687c02719dddfe28148f3cec4e2c40e00b 100644 |
--- a/src/crankshaft/x64/lithium-codegen-x64.cc |
+++ b/src/crankshaft/x64/lithium-codegen-x64.cc |
@@ -3600,10 +3600,13 @@ |
void LCodeGen::DoMathExp(LMathExp* instr) { |
- DCHECK(ToDoubleRegister(instr->value()).is(xmm0)); |
- DCHECK(ToDoubleRegister(instr->result()).is(xmm0)); |
- __ PrepareCallCFunction(1); |
- __ CallCFunction(ExternalReference::ieee754_exp_function(isolate()), 1); |
+ XMMRegister input = ToDoubleRegister(instr->value()); |
+ XMMRegister result = ToDoubleRegister(instr->result()); |
+ XMMRegister temp0 = double_scratch0(); |
+ Register temp1 = ToRegister(instr->temp1()); |
+ Register temp2 = ToRegister(instr->temp2()); |
+ |
+ MathExpGenerator::EmitMathExp(masm(), input, result, temp0, temp1, temp2); |
} |