Chromium Code Reviews| Index: src/arm/code-stubs-arm.cc |
| =================================================================== |
| --- src/arm/code-stubs-arm.cc (revision 6683) |
| +++ src/arm/code-stubs-arm.cc (working copy) |
| @@ -1298,7 +1298,11 @@ |
| void ToBooleanStub::Generate(MacroAssembler* masm) { |
| Label false_result; |
| Label not_heap_number; |
| - Register scratch = r7; |
| + Register scratch = r9; |
|
Alexandre
2011/02/09 13:57:16
Is this more readable?
Register scratch = r9.is(to
Søren Thygesen Gjesse
2011/02/09 14:48:28
Done.
|
| + if (scratch.is(tos_)) { |
| + scratch = r7; |
| + } |
| + ASSERT(!tos_.is(scratch)); |
| __ LoadRoot(ip, Heap::kNullValueRootIndex); |
| __ cmp(tos_, ip); |
| @@ -5809,10 +5813,9 @@ |
| // For equality we do not care about the sign of the result. |
| __ sub(r0, r0, r1, SetCC); |
| } else { |
| - __ sub(r1, r1, r0, SetCC); |
| - // Correct sign of result in case of overflow. |
| - __ rsb(r1, r1, Operand(0), SetCC, vs); |
| - __ mov(r0, r1); |
| + // Untag before subtracting to avoid handling overflow. |
| + __ SmiUntag(r1); |
| + __ sub(r0, r1, SmiUntagOperand(r0)); |
| } |
| __ Ret(); |