| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 135727c5bad5dc77c31ef77a44b5569a594c4f5a..228366a271f7f6e679cdb4941ab86c39c62d7ef1 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -1345,9 +1345,8 @@ void LCodeGen::DoArithmeticD(LArithmeticD* instr) {
|
| // Save r0-r3 on the stack.
|
| __ stm(db_w, sp, r0.bit() | r1.bit() | r2.bit() | r3.bit());
|
|
|
| - __ PrepareCallCFunction(4, scratch0());
|
| - __ vmov(r0, r1, left);
|
| - __ vmov(r2, r3, right);
|
| + __ PrepareCallCFunction(0, 2, scratch0());
|
| + __ SetCallCDoubleArguments(left, right);
|
| __ CallCFunction(
|
| ExternalReference::double_fp_operation(Token::MOD, isolate()), 4);
|
| // Move the result in the double result register.
|
| @@ -2966,19 +2965,18 @@ void LCodeGen::DoPower(LPower* instr) {
|
| Representation exponent_type = instr->hydrogen()->right()->representation();
|
| if (exponent_type.IsDouble()) {
|
| // Prepare arguments and call C function.
|
| - __ PrepareCallCFunction(4, scratch);
|
| - __ vmov(r0, r1, ToDoubleRegister(left));
|
| - __ vmov(r2, r3, ToDoubleRegister(right));
|
| + __ PrepareCallCFunction(0, 2, scratch);
|
| + __ 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(1, 1, 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());
|
| @@ -3008,9 +3006,8 @@ 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);
|
| + __ PrepareCallCFunction(0, 2, scratch);
|
| + __ SetCallCDoubleArguments(ToDoubleRegister(left), result_reg);
|
| __ CallCFunction(
|
| ExternalReference::power_double_double_function(isolate()), 4);
|
| }
|
|
|