Last Comment Bug 664252 - Recent TraceMonkey merge broke clang builds
: Recent TraceMonkey merge broke clang builds
Status: RESOLVED FIXED
: regression
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: Trunk
: All All
: -- normal (vote)
: ---
Assigned To: Luke Wagner [:luke]
:
Mentors:
Depends on: 666003 667824
Blocks: clang
  Show dependency treegraph
 
Reported: 2011-06-14 12:14 PDT by :Ehsan Akhgari
Modified: 2011-06-28 14:42 PDT (History)
5 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
simplify interpreter call/new business (9.94 KB, patch)
2011-06-14 16:42 PDT, Luke Wagner [:luke]
jwalden+bmo: review+
Details | Diff | Splinter Review

Description :Ehsan Akhgari 2011-06-14 12:14:43 PDT
Here is the build failure log:

/home/ehsan/moz/src/js/src/jsinterp.cpp:4916:9: error: indirect goto might cross protected scopes
        DO_NEXT_OP(len);
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4916:9: note: instantiated from:
        DO_NEXT_OP(len);
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3367:5: error: indirect goto might cross protected scopes
    EQUALITY_OP(==);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3367:5: note: instantiated from:
    EQUALITY_OP(==);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2816:9: error: indirect goto might cross protected scopes
        DO_OP();
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2816:9: note: instantiated from:
        DO_OP();
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3467:5: error: indirect goto might cross protected scopes
    RELATIONAL_OP(<=);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3467:5: note: instantiated from:
    RELATIONAL_OP(<=);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4878:13: error: indirect goto might cross protected scopes
            DO_NEXT_OP(len);
            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4878:13: note: instantiated from:
            DO_NEXT_OP(len);
            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:5977:1: error: indirect goto might cross protected scopes
END_VARLEN_CASE
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from:
# define END_VARLEN_CASE    DO_NEXT_OP(len);
                            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:5977:1: note: instantiated from:
END_VARLEN_CASE
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from:
# define END_VARLEN_CASE    DO_NEXT_OP(len);
                            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:6307:9: error: indirect goto might cross protected scopes
        BRANCH(len);
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:6307:9: note: instantiated from:
        BRANCH(len);
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:6716:17: error: indirect goto might cross protected scopes
                DO_NEXT_OP(len);
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:6716:17: note: instantiated from:
                DO_NEXT_OP(len);
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4388:13: error: indirect goto might cross protected scopes
            DO_NEXT_OP(len);
            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4388:13: note: instantiated from:
            DO_NEXT_OP(len);
            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3839:17: error: indirect goto might cross protected scopes
                DO_NEXT_OP(len);
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3839:17: note: instantiated from:
                DO_NEXT_OP(len);
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2556:5: error: indirect goto might cross protected scopes
    DO_NEXT_OP(len);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2556:5: note: instantiated from:
    DO_NEXT_OP(len);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:6000:1: error: indirect goto might cross protected scopes
END_VARLEN_CASE
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from:
# define END_VARLEN_CASE    DO_NEXT_OP(len);
                            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:6000:1: note: instantiated from:
END_VARLEN_CASE
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from:
# define END_VARLEN_CASE    DO_NEXT_OP(len);
                            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2676:21: error: indirect goto might cross protected scopes
                    DO_OP();    /* keep interrupting for op. */
                    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2676:21: note: instantiated from:
                    DO_OP();    /* keep interrupting for op. */
                    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3463:5: error: indirect goto might cross protected scopes
    RELATIONAL_OP(<);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3463:5: note: instantiated from:
    RELATIONAL_OP(<);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3475:5: error: indirect goto might cross protected scopes
    RELATIONAL_OP(>=);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3475:5: note: instantiated from:
    RELATIONAL_OP(>=);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2698:9: error: indirect goto might cross protected scopes
        JS_EXTENSION_(goto *normalJumpTable[op]);
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2698:23: note: instantiated from:
        JS_EXTENSION_(goto *normalJumpTable[op]);
                      ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3371:5: error: indirect goto might cross protected scopes
    EQUALITY_OP(!=);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3371:5: note: instantiated from:
    EQUALITY_OP(!=);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from:
        TRY_BRANCH_AFTER_COND(cond, 2);                                       \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from:
                BRANCH(len);                                                  \
                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from:
        DO_OP();                                                              \
        ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3916:5: error: indirect goto might cross protected scopes
    DO_NEXT_OP(len);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:3916:5: note: instantiated from:
    DO_NEXT_OP(len);
    ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto
BEGIN_CASE(JSOP_CALL)
^
<scratch space>:152:1: note: instantiated from:
L_JSOP_CALL
^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization
    CallArgs args;
             ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4731:13: error: indirect goto might cross protected scopes
            DO_NEXT_OP(len);
            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:4731:13: note: instantiated from:
            DO_NEXT_OP(len);
            ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from:
                                DO_OP();                                      \
                                ^
/home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from:
                                JS_EXTENSION_(goto *jumpTable[op]);           \
                                              ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
Comment 1 Nomis101 2011-06-14 12:33:23 PDT
I get exactly the same error on Mac now. OS X 10.6.8, Clang 3.0. :-(
Comment 2 :Ehsan Akhgari 2011-06-14 14:33:33 PDT
Luke told me on IRC that he's working on a fix.
Comment 3 Rafael Ávila de Espíndola (:espindola) (not reading bugmail) 2011-06-14 16:06:07 PDT
Clang already has some extensions on what it allows in those cases. I quick look at the firefox doesn't shows any reason why it could not support CallArgs.

I am currently reducing it. Hopefully it will find something I can fix in clang, if not, it will find what is non trivial about CallArgs initialization.
Comment 4 Luke Wagner [:luke] 2011-06-14 16:42:06 PDT
Created attachment 539364 [details] [diff] [review]
simplify interpreter call/new business

This patch simplifies how the interpreter handles eval/new/call to remove a bunch of goto intertwined-ness and hence the goto-past-non-POD-initialization.
Comment 5 Rafael Ávila de Espíndola (:espindola) (not reading bugmail) 2011-06-14 16:45:59 PDT
On the clang side, this is
http://llvm.org/bugs/show_bug.cgi?id=10137
Comment 6 Rafael Ávila de Espíndola (:espindola) (not reading bugmail) 2011-06-15 10:34:59 PDT
ok, looks like there is more than what I thought on the clang side. The Apple gcc rejects the code I reported. Since firefox does build with it, I am now trying to reduce the failure on my laptop to get something that apple's gcc accepts and clang rejects.
Comment 7 Jeff Walden [:Waldo] (remove +bmo to email) 2011-06-15 10:44:43 PDT
Comment on attachment 539364 [details] [diff] [review]
simplify interpreter call/new business

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

::: js/src/jsinterp.cpp
@@ +4553,5 @@
>          }
> +        regs.sp = args.spAfterCall();
> +        CHECK_INTERRUPT_HANDLER();
> +        TRACE_0(NativeCallComplete);
> +        DO_NEXT_OP(JSOP_CALL_LENGTH);

len = ...;
DO_NEXT_OP(len);

There's an assertion under DNE that len is the value passed in -- only when the computed-goto interpreter isn't available.  Which means Windows only, basically.  Ain't it great?
Comment 8 Luke Wagner [:luke] 2011-06-15 11:13:54 PDT
Thanks Waldo, try server was just pointing that out to me.

http://hg.mozilla.org/mozilla-central/rev/ce10e78d030d
Comment 9 :Ehsan Akhgari 2011-06-15 11:16:17 PDT
Rafael, why do you think this is a clang bug?  According to the C++ standard, jump statements cannot skip over the initialization of non-POD object instances, right?  If anything, I think this should be reported as a gcc bug.
Comment 10 Rafael Ávila de Espíndola (:espindola) (not reading bugmail) 2011-06-15 11:44:01 PDT
Not a bug in the strict sense, but if might be an useful extension to have if it is something that c++0x has.

Right now I am mostly curious what construct we are using that Apple's gcc accepts since it rejects the basic case of an empty base class.

Note You need to log in before you can comment on or make changes to this bug.