diff --git a/js/src/jit-test/tests/basic/bug673731.js b/js/src/jit-test/tests/basic/bug673731.js new file mode 100644 index 00000000000..4a27681d72d --- /dev/null +++ b/js/src/jit-test/tests/basic/bug673731.js @@ -0,0 +1,3 @@ +// |jit-test| error: ReferenceError + +const IS_TOKEN_ARRAY = [ printBugNumber && IS_TOKEN_ARRAY++ && this() ? this() : this() ]; diff --git a/js/src/jsemit.cpp b/js/src/jsemit.cpp index 8d3cb23ce8b..964d61debd4 100644 --- a/js/src/jsemit.cpp +++ b/js/src/jsemit.cpp @@ -6554,8 +6554,13 @@ js_EmitTree(JSContext *cx, JSCodeGenerator *cg, JSParseNode *pn) EMIT_UINT16_IMM_OP(op, atomIndex); } else { JS_ASSERT(JOF_OPTYPE(op) == JOF_ATOM); - if (!EmitNameIncDec(cx, pn2, op, cg)) - return JS_FALSE; + if (js_CodeSpec[op].format & (JOF_INC | JOF_DEC)) { + if (!EmitNameIncDec(cx, pn2, op, cg)) + return JS_FALSE; + } else { + if (!EmitAtomOp(cx, pn2, op, cg)) + return JS_FALSE; + } break; } if (pn2->isConst()) {