Last Comment Bug 738577 - IonMonkey: Unwrap MPassArg in encodeSlots().
: IonMonkey: Unwrap MPassArg in encodeSlots().
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: unspecified
: All All
-- normal (vote)
: ---
Assigned To: general
: Jason Orendorff [:jorendorff]
Depends on:
Blocks: IonMonkey
  Show dependency treegraph
Reported: 2012-03-23 03:01 PDT by Jan de Mooij [:jandem]
Modified: 2012-03-23 14:53 PDT (History)
3 users (show)
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

Fix in a better way. (2.01 KB, patch)
2012-03-23 14:21 PDT, Sean Stangl [:sstangl]
dvander: review+
Details | Diff | Splinter Review

Description User image Jan de Mooij [:jandem] 2012-03-23 03:01:16 PDT
This assert breaks Kraken. The problem is that MResumePoint::setOperand unwraps MPassArg, but initOperand calls addUse on the MPassArg instead of its argument:

void MNode::initOperand(size_t index, MDefinition *ins)
    setOperand(index, ins);
    ins->addUse(this, index);

Easiest fix is to change initOperand:

getOperand(index)->addUse(this, index);

Not sure if it's the best fix though. Any thoughts?
Comment 1 User image Sean Stangl [:sstangl] 2012-03-23 14:21:16 PDT
Created attachment 608862 [details] [diff] [review]
Fix in a better way.

The unwrapping shouldn't have been done in setOperand(); the actual bug was that we missed unwrapping in encodeSlots(). We could also elect to unwrap in getOperand().

This passes earley-boyer, but still fails Kraken and a few other tests with TI errors. These regressions appear to be merge fallout.
Comment 2 User image Sean Stangl [:sstangl] 2012-03-23 14:53:07 PDT

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