| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 74fecc29df17614a9f6b1378ff980b2ca5059146..823a4ee399ef800c779e649e521e95cb0f0fb437 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -1341,8 +1341,7 @@ void LCodeGen::DoArithmeticD(LArithmeticD* instr) {
|
| __ stm(db_w, sp, r0.bit() | r1.bit() | r2.bit() | r3.bit());
|
|
|
| __ PrepareCallCFunction(4, scratch0());
|
| - __ vmov(r0, r1, left);
|
| - __ vmov(r2, r3, right);
|
| + __ SetCallCDoubleArguments(left, right);
|
| __ CallCFunction(
|
| ExternalReference::double_fp_operation(Token::MOD, isolate()), 4);
|
| // Move the result in the double result register.
|
| @@ -2962,18 +2961,17 @@ void LCodeGen::DoPower(LPower* instr) {
|
| if (exponent_type.IsDouble()) {
|
| // Prepare arguments and call C function.
|
| __ PrepareCallCFunction(4, scratch);
|
| - __ vmov(r0, r1, ToDoubleRegister(left));
|
| - __ vmov(r2, r3, ToDoubleRegister(right));
|
| + __ SetCallCDoubleArguments(ToDoubleRegister(left),
|
| + ToDoubleRegister(right));
|
| __ CallCFunction(
|
| ExternalReference::power_double_double_function(isolate()), 4);
|
| } else if (exponent_type.IsInteger32()) {
|
| ASSERT(ToRegister(right).is(r0));
|
| // Prepare arguments and call C function.
|
| - __ PrepareCallCFunction(4, scratch);
|
| - __ mov(r2, ToRegister(right));
|
| - __ vmov(r0, r1, ToDoubleRegister(left));
|
| + __ PrepareCallCFunction(3, scratch);
|
| + __ SetCallCDoubleArguments(ToDoubleRegister(left), ToRegister(right));
|
| __ CallCFunction(
|
| - ExternalReference::power_double_int_function(isolate()), 4);
|
| + ExternalReference::power_double_int_function(isolate()), 3);
|
| } else {
|
| ASSERT(exponent_type.IsTagged());
|
| ASSERT(instr->hydrogen()->left()->representation().IsDouble());
|
| @@ -3004,8 +3002,7 @@ void LCodeGen::DoPower(LPower* instr) {
|
| // Prepare arguments and call C function.
|
| __ bind(&call);
|
| __ PrepareCallCFunction(4, scratch);
|
| - __ vmov(r0, r1, ToDoubleRegister(left));
|
| - __ vmov(r2, r3, result_reg);
|
| + __ SetCallCDoubleArguments(ToDoubleRegister(left), result_reg);
|
| __ CallCFunction(
|
| ExternalReference::power_double_double_function(isolate()), 4);
|
| }
|
|
|