Closed Bug 738577 Opened 12 years ago Closed 12 years ago

IonMonkey: Unwrap MPassArg in encodeSlots().

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jandem, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

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?
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.
Attachment #608862 - Flags: review?(dvander)
Attachment #608862 - Flags: review?(dvander) → review+
https://hg.mozilla.org/projects/ionmonkey/rev/dec79c24caa3
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Summary: IonMonkey: Assertion failure: isLowered(), at MIR.h:423 → IonMonkey: Unwrap MPassArg in encodeSlots().
You need to log in before you can comment on or make changes to this bug.