Last Comment Bug 691593 - IonMonkey: Assertion failure: *pc == JSOP_CALL, at jsopcode.cpp:4143
: IonMonkey: Assertion failure: *pc == JSOP_CALL, at jsopcode.cpp:4143
Status: RESOLVED FIXED
: assertion, testcase
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: Other Branch
: x86_64 Linux
: -- major (vote)
: ---
Assigned To: general
:
: Jason Orendorff [:jorendorff]
Mentors:
Depends on:
Blocks: langfuzz IonFuzz
  Show dependency treegraph
 
Reported: 2011-10-03 17:05 PDT by Christian Holler (:decoder)
Modified: 2013-02-07 05:16 PST (History)
4 users (show)
choller: in‑testsuite+
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
Assert that JSOP_NOTEARG occurs after |this| push. (935 bytes, patch)
2011-10-04 11:37 PDT, Sean Stangl [:sstangl]
dvander: review+
Details | Diff | Splinter Review

Description Christian Holler (:decoder) 2011-10-03 17:05:40 PDT
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) {  }
}
Comment 1 Gary Kwong [:gkw] [:nth10sd] 2011-10-04 09:46:49 PDT
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.
Comment 2 Sean Stangl [:sstangl] 2011-10-04 11:37:12 PDT
Created attachment 564618 [details] [diff] [review]
Assert that JSOP_NOTEARG occurs after |this| push.

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.
Comment 3 Sean Stangl [:sstangl] 2011-10-04 14:26:07 PDT
http://hg.mozilla.org/projects/ionmonkey/rev/5dbfb891d8df
Comment 4 Christian Holler (:decoder) 2013-02-07 05:16:47 PST
Automatically extracted testcase for this bug was committed:

https://hg.mozilla.org/mozilla-central/rev/2e891e0db397

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