Revision: 7055
Author: [email protected]
Date: Thu Mar 3 23:36:52 2011
Log: Minor bug in int32 TypeRecordingBinaryOpStub.
BUG=none
TEST=none
Patch by Rodolph Perfetta from ARM Ltd.
Review URL: http://codereview.chromium.org/6612017
http://code.google.com/p/v8/source/detail?r=7055
Modified:
/branches/bleeding_edge/src/arm/code-stubs-arm.cc
=======================================
--- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Wed Mar 2 06:40:38
2011
+++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Thu Mar 3 23:36:52
2011
@@ -872,12 +872,11 @@
// Exponent greater than 31 cannot yield 32-bit integers.
// Also, a positive value with an exponent equal to 31 is outside of the
// signed 32-bit integer range.
- __ tst(src1, Operand(HeapNumber::kSignMask));
- __ cmp(scratch, Operand(30), eq); // Executed for positive. If exponent
is 30
- // the gt condition will be "correct"
and
- // the next instruction will be
skipped.
- __ cmp(scratch, Operand(31), ne); // Executed for negative and positive
where
- // exponent is not 30.
+ // Another way to put it is that if (exponent - signbit) > 30 then the
+ // number cannot be represented as an int32.
+ Register tmp = dst;
+ __ sub(tmp, scratch, Operand(src1, LSR, 31));
+ __ cmp(tmp, Operand(30));
__ b(gt, not_int32);
// - Bits [21:0] in the mantissa are not null.
__ tst(src2, Operand(0x3fffff));
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev