Last Comment Bug 738577 - IonMonkey: Unwrap MPassArg in encodeSlots().
: IonMonkey: Unwrap MPassArg in encodeSlots().
Status: RESOLVED FIXED
:
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: unspecified
: All All
: -- normal (vote)
: ---
Assigned To: general
:
Mentors:
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:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
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 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 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 Sean Stangl [:sstangl] 2012-03-23 14:53:07 PDT
https://hg.mozilla.org/projects/ionmonkey/rev/dec79c24caa3

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