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

Reply via email to