Closed Bug 691593 Opened 13 years ago Closed 13 years ago

IonMonkey: Assertion failure: *pc == JSOP_CALL, at jsopcode.cpp:4143

Categories

(Core :: JavaScript Engine, defect)

Other Branch
x86_64
Linux
defect
Not set
major

Tracking

()

RESOLVED FIXED

People

(Reporter: decoder, Unassigned)

References

Details

(Keywords: assertion, testcase)

Attachments

(1 file)

The following testcase asserts on ionmonkey revision acf3c1fb7c94 (run with --ion-eager), tested on 64 bit: genexp = "x * x for (x in [])"; genexpParened = "(" + genexp + ")"; needParens(2, "if (1, xx) { }"); function needParens(section, pat, exp) { ft = pat.replace(/xx/, genexpParened); try { f = new Function(ft); } catch(e) { } overParenTest(section, f, exp); } function overParenTest(section, f, exp) { var uf = "" + f; if (uf.indexOf(genexpParened) != -1) { } }
String( (function() { ([] for (x in [])) }) ) asserts js debug shell on IM changeset 5602420006bb without any CLI flags at Assertion failure: *pc == JSOP_CALL, 32-bit js shell in 64-bit Windows 7.
I remember this issue being posted in a bug before, but can't seem to find it now. JSOP_PUSH for |this| is followed by JSOP_NOTEARG so IonBuilder can be single-pass with MPassArg at point-of-definition. In adding JSOP_NOTEARG, I missed a spot that asserts the next op after JSOP_PUSH is JSOP_CALL.
Attachment #564618 - Flags: review?(dvander)
Attachment #564618 - Flags: review?(dvander) → review+
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Blocks: IonFuzz
Summary: IM: Assertion failure: *pc == JSOP_CALL, at jsopcode.cpp:4143 → IonMonkey: Assertion failure: *pc == JSOP_CALL, at jsopcode.cpp:4143
Automatically extracted testcase for this bug was committed: https://hg.mozilla.org/mozilla-central/rev/2e891e0db397
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: