Closed Bug 821502 Opened 12 years ago Closed 11 years ago

Type punning warnings in JS when compiling with GCC 4.4 causing miscompilations and crashes in JS. Fixed by disabling strict aliasing in the JS engine for GCC 4.4 and earlier.

Categories

(Firefox OS Graveyard :: GonkIntegration, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(blocking-basecamp:-, firefox18 fixed, firefox19 fixed, firefox20 fixed, firefox21 fixed, b2g18 fixed)

RESOLVED FIXED
B2G C4 (2jan on)
blocking-basecamp -
Tracking Status
firefox18 --- fixed
firefox19 --- fixed
firefox20 --- fixed
firefox21 --- fixed
b2g18 --- fixed

People

(Reporter: justin.lebar+bug, Unassigned)

References

Details

Attachments

(4 files, 1 obsolete file)

I see a ton of strict aliasing warnings when building js in B2G.  For example:

> ../../../../ff-git/src/js/src/gc/Root.h:241: warning: dereferencing pointer 
> 'obj$ptr' does break strict-aliasing rules

It appears that we're not building with -fno-strict-aliasing.  Examining GCC invocations confirms this.

I wonder if this is the source of some of our crashes.
Unsafe compilation flags should block.
blocking-basecamp: --- → ?
Desktop Firefox doesn't compile with -fno-strict-aliasing either. If there are problems with strict aliasing, we need to fix them.
(In reply to Bill McCloskey (:billm) from comment #2)
> Desktop Firefox doesn't compile with -fno-strict-aliasing either.

...in JS.  That makes much more sense.

Let's morph this bug into figuring out these type punning errors?  I'll attach a build log in a moment.
Summary: We don't build JS with -fno-strict-aliasing on B2G → Type punning errors in JS on B2G
Summary: Type punning errors in JS on B2G → Type punning warnings in JS when compiling B2G
The unique warnings are:

> js/src/gc/root.h:241: warning: dereferencing pointer '<anonymous>' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'atom$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'dataproto$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'funobjarg$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'mapobj$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'obj$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'parent$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'prefixarg$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'refobj$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'setobj$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'str$ptr' does break strict-aliasing rules
> js/src/gc/root.h:374: warning: dereferencing pointer '<anonymous>' does break strict-aliasing rules
> js/src/jsapi.h:1041: warning: dereferencing pointer 'this.3175' does break strict-aliasing rules
> js/src/jstypedarray.cpp:2667: warning: dereferencing pointer 'rwdest' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer '<anonymous>' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'mapobj$ptr' does break strict-aliasing rules
> js/src/gc/root.h:241: warning: dereferencing pointer 'obj$ptr' does break strict-aliasing rules
What version of gcc are you using? Terrence, could you take a look?
I cannot get the spidermonkey shell build to generate warnings with any combination of GCC 4.6.3 or 4.7.2 and -fno-strict-aliasing or -fstrict-aliasing.  Justin, can you give more details on what your build configuration looks like?
B2G builds with gcc-4.4.3; I believe it's from some version of the NDK.

$ toolchain/arm-linux-androideabi-c++ --version
arm-linux-androideabi-c++ (GCC) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I'm getting these warnings on Mac; I don't know if they appear on Linux too, although I imagine they do.

You can get the binaries and so on by setting up your own B2G build, naturally.
blocking-basecamp: ? → +
Terrence, can you take this B2G blocker and figure out what we need to do here?
(In reply to Justin Lebar [:jlebar] from comment #9)
> Terrence, can you take this B2G blocker and figure out what we need to do
> here?

Not really.  I'm on holiday until the end of the year.  I'd be happy to review any patches however.
How about you, Bill?
Can you take a look at this Jeff? It seems very unlikely to be a problem to me, but we are doing some reinterpret_casts in the constructor.
Hmm.  We're doing some cross-casts from T** to U** when T and U are compatible; I wonder if the compiler's just not smart enough to take into account the type-compatibility.  Or maybe I'm just not understanding things correctly at a glance.  I'll try looking harder at this tomorrow.
Flags: needinfo?(jwalden+bmo)
I've tried a plain desktop build of Firefox using GCC 4.4.7 (x86_64-unknown-linux-gnu) and observed the same warnings seen here. IIRC GCC 4.4.x had some known issues regarding how it reported certain strict-aliasing warnings which went away in later versions. Quieting them might require us jumping through some hoops in the sources.
Target Milestone: --- → B2G C3 (12dec-1jan)
The question is really whether these warnings are benign; we may want to turn off strict aliasing for this version of GCC if we're not convinced GCC isn't mis-compiling things.
AFAIK those warnings should be benign and just an effect of GCC 4.4 misreporting strict-aliasing warnings but it's hard to be certain. I can try to dig out the relevant GCC bugs to have a little bit more insight on this matter. I would recur to turning off strict aliasing as a last resort however; it impacts a lot of optimization passes potentially giving us slower/larger code.
Based on the previous comment and on the fact that there are no warnings with newer versions of GCC we won't be blocking on this.
blocking-basecamp: + → -
I'm not convinced that these are *just* warnings now. We use gcc 4.4 to build Firefox for Ubuntu 10.04, and ever since bug 817091 landed, we've been getting a whole bunch of test failures:

FAILURES:
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/arguments/rest-debugger.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/bug657975.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/bug657975.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/bug657975.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/eif-generator.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug552248.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug677367.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug683470.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug683470.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testBug683470.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testEvalFromTrap.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-01.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-01.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-01.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-01.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-01.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-01.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-02.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-find-06.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-01.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-gc-02.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-getVariable-01.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-identity-03.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-08.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-08.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-08.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-08.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-10.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-11.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-11.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-11.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-11.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-11.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-11.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-type-01.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Environment-variables.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-03.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-07.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-07.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-08.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-09.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-09.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-09.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-13.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-14.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-14.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-14.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-eval-15.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-04.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-04.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-04.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-06.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-10.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-10.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-evalWithBindings-10.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
    --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/Object-environment-02.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-10.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-10.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-10.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/breakpoint-gc-03.js
    --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/onDebuggerStatement-04.js
    --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/onDebuggerStatement-04.js
    --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/debug/onDebuggerStatement-04.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/invokeSessionGuard.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-newvar.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call-typechange.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-call.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-newvar.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter-typechange.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-getter.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-newvar.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap-typechange.js
    -a -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -a -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/eif-trap.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/simple-trap-2.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/test-debugger-1.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/test-debugger-1.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/test-debugger-1.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/test-throwhook-1.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/test-throwhook-1.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/test-throwhook-1.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-inline.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-from-add-ool.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent-from-trap.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-parent.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-as-parent.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self-from-trap.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/trap-self.js
    -d --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --ion-eager /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion --no-jm --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion --no-ti /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion --no-ti -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion --no-jm /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion -a /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion -a -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js
    -d --no-ion -d /build/buildd/firefox-trunk-20.0~a1~hg20121222r116860/js/src/jit-test/tests/jaeger/bug563000/untrap-own-trapsite.js

I've not looked at it in depth yet, but building with -fno-strict-aliasing fixes all of the test failures :(
Attached patch Guessing here.Splinter Review
Yeah, that does look pretty serious. :-(

Looking at the initial warnings, this patch tries to remove the only thing that could feasibly be calling get() in js_InitExceptionObject. I'm building gcc-4.4.7 now to see if I can reproduce locally.
I do not get these warnings building with gcc-4.4.7 on mozilla-inbound.  What branch should I be using?
(In reply to Terrence Cole [:terrence] from comment #20)
> I do not get these warnings building with gcc-4.4.7 on mozilla-inbound. 
> What branch should I be using?

You can try the b2g-18 branch, but I suspect I was building trunk when I reported this bug.

Again, note that B2G builds with GCC 4.4.3, and I believe it's patched by Android.  If you need help setting up a B2G ARM build, feel free to ping me on #b2g.
I've managed to reproduce this locally using a B2G build. It did not reproduce for me before because -Wstrict-aliasing is only enabled at -O2 and I was doing debug builds. 

After doing an excessive amount of reading and talking it over with #jsapi, it appears that this is a bug in GCC 4.4 when compiling with -Wstrict-aliasing. My recommendation is that we force -Wno-strict-aliasing when compiling in this configuration. Details follow:

In |template<class T> Handle| we have a constructor:

template <typename S>
Handle(Handle<S> handle,
       typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0)
{
    ptr = reinterpret_cast<const T *>(handle.address());
}

A typical usage is for something like |setParent(... HandleObject obj, ...)| with a call like |HandleFunction foo; JSObject::setParent(... foo ...)|. Before handlification this was a downcast from JSFunction* to JSObject*, which is fine because JSFunction derives from JSObject. Now, eliding |const|, this is converting a JSFunction** to a JSObject**, which is not convertible, hence the reinterpret_cast. Since HandleFunction::ptr has a different type from HandleObject::ptr, compilers are allowed to assume that the value stored behind |foo| above will never be modified by |setParent|.

However, this isn't the end of the story. The actual type of pointer stored in a Handle, not eliding |const|, is |const T*|, which unfolds through templatization into types of |JSFunction * const *| and |JSObject * const *|. Although I don't fully understand why, this appears to make the two convertible in the case we are using them. Hence, most compilers do not mis-compile when using strict aliasing.

In the parallel case of MutableHandle, |ptr| is non-const. We provide a similar constructor, but it is completely unused. The valid MutableHandle(Root<S>*), however, needs revisiting. I will open a new bug for this last case and we can simply turn on -Wno-strict-aliasing for the b2g18 branch in this bug.
Won't we need -Wno-strict-aliasing on all B2G branches until B2G moves off of 4.4.3?
(In reply to Terrence Cole [:terrence] from comment #22)
> I will open a new bug
> for this last case and we can simply turn on -Wno-strict-aliasing for the
> b2g18 branch in this bug.

Do you mean turning on -fno-strict-aliasing? That could have a measurable impact on both performance and code size, we should probably gauge it before adding that flag to our builds.
(In reply to Dave Hylands [:dhylands] from comment #23)
> Won't we need -Wno-strict-aliasing on all B2G branches until B2G moves off
> of 4.4.3?

Yes.

(In reply to Gabriele Svelto [:gsvelto] from comment #24)
> (In reply to Terrence Cole [:terrence] from comment #22)
> > I will open a new bug
> > for this last case and we can simply turn on -Wno-strict-aliasing for the
> > b2g18 branch in this bug.
> 
> Do you mean turning on -fno-strict-aliasing?

Yes, you are correct.

> That could have a measurable
> impact on both performance and code size, we should probably gauge it before
> adding that flag to our builds.

The number of jit-test failures seems to indicate that GCC-4.4 is failing *very* badly here. I believe that upgrading our compiler would be less risky than turning on this broken optimization, if we simply cannot live with whatever slowdown results. Looking at the failing tests, I think the only reason anything works at all with these builds is that our JITs don't have this issue. Of course, the fact that our JITs are already doing most of the work means we shouldn't see much performance change from toggling compiler options.
> Of course, the fact that our JITs are already doing most of the work means we shouldn't see much 
> performance change from toggling compiler options.

Indeed.  I think the simplest thing to do here is to turn off strict aliasing for gcc 4.4 (desktop and mobile).  We can then measure the perf/size hit and, if it's unacceptable, we can look into upgrading our compiler (which we're already doing on Android).

Correctness has to come first, though.
blocking-basecamp: - → ?
> we can look into upgrading our compiler (which we're already doing on Android).

The Fennec work for upgrading the compiler is bug 769099.
Attachment #698224 - Flags: review?(terrence)
Attachment #698224 - Flags: review?(mh+mozilla)
Comment on attachment 698224 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android.

Review of attachment 698224 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/configure.in
@@ +4114,5 @@
> +
> +        GCC_MAJOR_VERSION=`echo ${GCC_VERSION} | $AWK -F\. '{ print $1 }'`
> +        GCC_MINOR_VERSION=`echo ${GCC_VERSION} | $AWK -F\. '{ print $2 }'`
> +
> +        if test "$GCC_MAJOR_VERSION" -lt "4" -o "$GCC_MINOR_VERSION" -lt "5" ; then

We don't support gcc < 4.0, so the "$GCC_MAJOR_VERSION" -lt "4" test is useless ; more importantly, the test would fail with an hypothetical gcc 5.0.
Attachment #698224 - Flags: review?(mh+mozilla) → review-
Attachment #698224 - Attachment is obsolete: true
Attachment #698224 - Flags: review?(terrence)
Attachment #698243 - Flags: review?(terrence)
Attachment #698243 - Flags: review?(mh+mozilla)
> more importantly, the test would fail with an hypothetical gcc 5.0.

Heh, thanks.

(Every time I touch configure.in, I want more and more to rewrite it in Python.

  if 'linux' in target and gcc_version < (4,4):

)
Attachment #698243 - Flags: review?(mh+mozilla) → review+
Still not going to hold the release here, but we'll gladly consider uplifting a patch here if it's not causing unacceptable performance regressions etc.
blocking-basecamp: ? → -
FYI we need to land this /very soon/ to get it into B2G v1 (taking into account the time necessary to evaluate its impact on JS size and speed).  Ideally today.

Terrence, if you can't review this, please let me know and we can find another peer.
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Review of attachment 698243 [details] [diff] [review]:
-----------------------------------------------------------------

Sorry for the delay: I should have checked my mail this weekend, but really I didn't expect to be r?'ed on this. I'm not terribly familiar with M4 or perl, but what you have looks reasonable. If Mike is r+ on it, then I'm fine having this in SpiderMonkey.
Attachment #698243 - Flags: review?(terrence) → review+
>  I'm not terribly familiar with M4 or perl

Heh, tbh I just copy/pasted most of this from elsewhere in configure.  I just wanted to check with a JS peer whether this was OK for SM.  Thanks for the review!
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

[Approval Request Comment]
Bug caused by (feature/regressing bug #): n/a

* User impact if declined: Known invalid compiler optimizations causing JS test failures on desktop Linux for people who build with old GCCs.  I expect these same misoptimizations may also cause invalid code to be generated on ARM.

* Testing completed (on m-c, etc.): I'll see what I can do wrt testing, but our testing story on B2G is poor, and I can't use Talos on desktop as a proxy for mobile perf because we don't build on desktop with GCC <= 4.4.

* Risk to taking this patch (and alternatives if risky): This could cause our builds to be slightly slower or slightly larger.  I think it is unlikely that either of these regressions will be noticeable.  It's also possible (but highly unlikely) that disabling these optimizations will cause new problems.

But I think the right way to look at this question is to turn it around -- what's the risk to /not/ taking this patch?  We know that desktop GCC 4.4 generates invalid code, and the mobile version is emitting warnings which usually correspond to compiler mis-optimizations.  So IMO the risk to /not/ taking this patch is much higher than the risk to taking it.

The burden of proof should be to show that /enabling/ an optimization doesn't hurt.  (I'm looking at you, gsvelto.  :)  After all, if we're willing to accept incorrect results, I can optimize Firefox to make it go /really/ fast.  :)

String or UUID changes made by this patch: None.
Attachment #698243 - Flags: approval-mozilla-beta?
Attachment #698243 - Flags: approval-mozilla-aurora?
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Whoops, we're setting different flags now.
Attachment #698243 - Flags: approval-mozilla-beta?
Attachment #698243 - Flags: approval-mozilla-b2g18?
Attachment #698243 - Flags: approval-mozilla-aurora?
Flags: needinfo?(jwalden+bmo)
(In reply to Justin Lebar [:jlebar] from comment #36)
> The burden of proof should be to show that /enabling/ an optimization
> doesn't hurt.  (I'm looking at you, gsvelto.  :)  After all, if we're
> willing to accept incorrect results, I can optimize Firefox to make it go
> /really/ fast.  :)

You're absolutely right :-) I'll make it a spin today to compare the code size with and without strict aliasing enabled and report the results in this bug.
> I'll make it a spin today to compare the code size with and without strict aliasing 
> enabled and report the results in this bug.

You may be able to compare code size on inbound before and after this was checked in.
https://hg.mozilla.org/mozilla-central/rev/80a3e4771be7
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
I've recompiled mozilla-central both with and without this patch applied and attached the results of calling 'size -t js/src/libjs_static.a' on the output. 

Code size changes seem minor with -fno-strict-aliasing growing the total by only 2KiB. I was more concerned with code size increases rather than performance regressions but I'll try to run benchmarks on both versions if I have enough time.
Attachment #698243 - Flags: approval-mozilla-b2g18? → approval-mozilla-b2g18+
https://hg.mozilla.org/releases/mozilla-b2g18/rev/f284eaa6ce19
Target Milestone: B2G C3 (12dec-1jan) → B2G C4 (2jan on)
Blocks: 828205
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Bug 828205 is the #1 topcrasher on Linux.  It's fixed by disabling strict aliasing.  The cause is that Ubuntu builds of Firefox are built with gcc 4.4.

I'm actually tempted to ask for this as a chemspill ridealong for 18; it's zero risk for our official builds (it changes nothing, because we build on Linux with newer than GCC 4.4).  Or maybe we can just ask the folks who build Firefox for distribution to backport this for 18.

[Approval Request Comment]
* If this is not a sec:{high,crit} bug, please state case for ESR consideration: Compiler mis-optimization causing crashes (e.g. bug 828205).
* User impact if declined: Crashes
* Fix Landed on Version: 21
* Risk to taking this patch (and alternatives if risky): No effect on official builds.  It's possible something would break in other peoples' builds, but we already know that we're in a broken state, and it's hard to imagine things getting /worse/...
* String or UUID changes made by this patch: None
Attachment #698243 - Flags: approval-mozilla-esr17?
Attachment #698243 - Flags: approval-mozilla-beta?
Attachment #698243 - Flags: approval-mozilla-aurora?
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Considering the risk profile here and as this is a top crasher, approving the fix for beta, aurora.
Attachment #698243 - Flags: approval-mozilla-beta?
Attachment #698243 - Flags: approval-mozilla-beta+
Attachment #698243 - Flags: approval-mozilla-aurora?
Attachment #698243 - Flags: approval-mozilla-aurora+
(In reply to bhavana bajaj [:bajaj] from comment #45)
> Comment on attachment 698243 [details] [diff] [review]
> Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and
> Android, v2
> 
> Considering the risk profile here and as this is a top crasher, approving
> the fix for beta, aurora.

In the above, I meant "as this is a top crasher" -> "as this fixes a top crasher"
Summary: Type punning warnings in JS when compiling B2G → Type punning warnings in JS when compiling with GCC 4.4 causing miscompilations and crashes in JS. Fixed by disabling strict aliasing in the JS engine for GCC 4.4 and earlier.
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

[Approval Request Comment]
Requesting approval for an 18.0.1 ridealong.

Again, no affect on Mozilla's official builds, but we know that at least Ubuntu will want this (and may just backport it themselves).  I'm in the process of contacting other package maintainers.
Attachment #698243 - Flags: approval-mozilla-release?
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Please go ahead and land this in mozilla-release in preparation for a 18.0.1 to help fix Bug 828205
Attachment #698243 - Flags: approval-mozilla-release? → approval-mozilla-release+
Backed out at bajaj's request for causing a burning Windows debug tree:

https://hg.mozilla.org/releases/mozilla-release/rev/cdd6e38f9b9e

She'll be watching the tree for the moment.
Windows builds are *such* fun anymore. Both 44b7ba240e86 and 645e91825c90 above it had some red builds which claimed not to be clobbers, and some green builds that claimed to be clobbers, despite a clobber having been set at 9 this morning so they all really should have been. I set another clobber and repushed it in https://hg.mozilla.org/releases/mozilla-release/rev/f64a3223c828, maybe that'll be stickier.
Thanks for taking care of it!
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Review of attachment 698243 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/configure.in
@@ +4104,5 @@
> +dnl = Disable -fstrict-aliasing on Linux/Android with GCC 4.4 and earlier.
> +dnl = See bug 821502.
> +dnl ========================================================
> +case "$target" in
> +*-android*|*-linuxandroid*|*-*linux*)

I just realized there are other systems building with gcc 4.4... we might as well not check the target type.

@@ +4105,5 @@
> +dnl = See bug 821502.
> +dnl ========================================================
> +case "$target" in
> +*-android*|*-linuxandroid*|*-*linux*)
> +    if test "$GNU_CC"; then

It also appears this is true for clang, which then fails to get a version number, and sh complains about non numeric values in the test.
> I just realized there are other systems building with gcc 4.4... we might as well not check the 
> target type.

We're checking for version <= (4,4), so if we didn't check target type, we'd hit mac as well.

We could check gcc == (4,4), but I don't know that 4.3 does not have this problem.

> It also appears this is true for clang, which then fails to get a version number, and sh complains 
> about non numeric values in the test.

If you have the exact error message kicking around, can you file a separate bug?
(In reply to Justin Lebar [:jlebar] from comment #55)
> > I just realized there are other systems building with gcc 4.4... we might as well not check the 
> > target type.
> 
> We're checking for version <= (4,4), so if we didn't check target type, we'd
> hit mac as well.
> 
> We could check gcc == (4,4), but I don't know that 4.3 does not have this
> problem.

We don't support building with gcc < 4.4 anyways.
Does the mac build error out if you try to build with gcc?  Even if we don't support it, if people are building with it, I'm not sure we want to turn off strict aliasing for them.
Depends on: 832620
(In reply to Justin Lebar [:jlebar] from comment #57)
> Does the mac build error out if you try to build with gcc?  Even if we don't
> support it, if people are building with it, I'm not sure we want to turn off
> strict aliasing for them.

I thought we were explicitely rejecting gcc < 4.4 at configure time, but i can't find it atm. Anyways, my point was that there is much more than android, linux and mac that use gcc. In my case, it's kfreebsd and hurd ; i wouldn't be surprised if opensolaris used gcc as well.
(In reply to Mike Hommey [:glandium] from comment #59)
> Ah found it:
> https://mxr.mozilla.org/mozilla-central/source/js/src/build/autoconf/
> compiler-opts.m4#45

Ah, awesome.  We can just do what you were saying, then.  I'll file a bug.
Blocks: 832623
Comment on attachment 698243 [details] [diff] [review]
Disable -fstrict-aliasing in JS for GCC 4.4 and earlier on Linux and Android, v2

Not approving on esr as this is not critical & also does not satisfy the esr criteria for uplift.Also note Bug 828205 is not a top-crasher on esr (the primary reason this patch was uplifted on all other channels).
Attachment #698243 - Flags: approval-mozilla-esr17? → approval-mozilla-esr17-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: