| Index: src/arm/full-codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/full-codegen-arm.cc (revision 4487)
|
| +++ src/arm/full-codegen-arm.cc (working copy)
|
| @@ -1593,10 +1593,9 @@
|
|
|
| // Inline smi case if we are in a loop.
|
| Label stub_call, done;
|
| + int count_value = expr->op() == Token::INC ? 1 : -1;
|
| if (loop_depth() > 0) {
|
| - __ add(r0, r0, Operand(expr->op() == Token::INC
|
| - ? Smi::FromInt(1)
|
| - : Smi::FromInt(-1)));
|
| + __ add(r0, r0, Operand(Smi::FromInt(count_value)), SetCC);
|
| __ b(vs, &stub_call);
|
| // We could eliminate this smi check if we split the code at
|
| // the first smi check before calling ToNumber.
|
| @@ -1604,11 +1603,9 @@
|
| __ b(eq, &done);
|
| __ bind(&stub_call);
|
| // Call stub. Undo operation first.
|
| - __ sub(r0, r0, Operand(r1));
|
| + __ sub(r0, r0, Operand(Smi::FromInt(count_value)));
|
| }
|
| - __ mov(r1, Operand(expr->op() == Token::INC
|
| - ? Smi::FromInt(1)
|
| - : Smi::FromInt(-1)));
|
| + __ mov(r1, Operand(Smi::FromInt(count_value)));
|
| GenericBinaryOpStub stub(Token::ADD, NO_OVERWRITE);
|
| __ CallStub(&stub);
|
| __ bind(&done);
|
|
|