I started getting failure in the mjsunit/div-mod.js test on the ARM
simulator after this commit. It does not show up on the buildbot.
Running
$ tools/test.py -S simulator=arm
mjsunit/div-mod.js fails with:
(function(left) { return left / 0; })
(function(left) { return left / 1; })
(function(left) { return left / 2; })
(function(left) { return left / 3; })
/home/sgjesse/prj/v8/edge-ro/test/mjsunit/mjsunit.js:50: Failure (-256%3):
expected <-1> found <3>
throw new MjsUnitAssertionError(start + " expected <" + expected + ">
found
Regards,
Søren
On Fri, Apr 23, 2010 at 12:09, <[email protected]> wrote:
> Revision: 4483
> Author: [email protected]
> Date: Fri Apr 23 03:08:24 2010
> Log: Fix BinaryOpIC implementation on ARM.
>
> On a pair of smis HEAP_NUMBERS stub is significantly slower than GENERIC.
> This slows
> down some tests dramatically (crypto-aes from SunSpider).
> With this change HEAP_NUMBERS stub switches to GENERIC stub the first time
> it sees 2 smis
> as its operands.
>
> Review URL: http://codereview.chromium.org/1687005
> http://code.google.com/p/v8/source/detail?r=4483
>
> Modified:
> /branches/bleeding_edge/src/arm/codegen-arm.cc
>
> =======================================
> --- /branches/bleeding_edge/src/arm/codegen-arm.cc Fri Apr 23 00:42:45
> 2010
> +++ /branches/bleeding_edge/src/arm/codegen-arm.cc Fri Apr 23 03:08:24
> 2010
> @@ -6467,12 +6467,23 @@
> __ Call(stub3.GetCode(), RelocInfo::CODE_TARGET);
> __ pop(lr);
> }
> +
> + // HEAP_NUMBERS stub is slower than GENERIC on a pair of smis.
> + // r0 is known to be a smi. If r1 is also a smi then switch to
> GENERIC.
> + Label r1_is_not_smi;
> + if (runtime_operands_type_ == BinaryOpIC::HEAP_NUMBERS) {
> + __ tst(r1, Operand(kSmiTagMask));
> + __ b(ne, &r1_is_not_smi);
> + GenerateTypeTransition(masm);
> + __ jmp(&r1_is_smi);
> + }
>
> __ bind(&finished_loading_r0);
>
> // Move r1 to a double in r0-r1.
> __ tst(r1, Operand(kSmiTagMask));
> __ b(eq, &r1_is_smi); // It's a Smi so don't check it's a heap number.
> + __ bind(&r1_is_not_smi);
> __ CompareObjectType(r1, r4, r4, HEAP_NUMBER_TYPE);
> __ b(ne, &slow);
> if (mode_ == OVERWRITE_LEFT) {
>
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
>
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev