Chromium Code Reviews| Index: src/arm/lithium-codegen-arm.cc |
| =================================================================== |
| --- src/arm/lithium-codegen-arm.cc (revision 6592) |
| +++ src/arm/lithium-codegen-arm.cc (working copy) |
| @@ -1398,7 +1398,18 @@ |
| __ vdiv(left, left, right); |
| break; |
| case Token::MOD: { |
|
Søren Thygesen Gjesse
2011/02/03 09:00:23
Please use Push(r3, r2, r1, r0)
|
| - Abort("DoArithmeticD unimplemented for MOD."); |
| + // 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); |
| + __ CallCFunction(ExternalReference::double_fp_operation(Token::MOD), 4); |
| + // Move the result in the double result register. |
| + __ vmov(ToDoubleRegister(instr->result()), r0, r1); |
| + |
| + // Restore r0-r3. |
|
Søren Thygesen Gjesse
2011/02/03 09:00:23
We currently don't have a Pop(r0, r1, r2, r4), so
|
| + __ ldm(ia_w, sp, r0.bit() | r1.bit() | r2.bit() | r3.bit()); |
| break; |
| } |
| default: |