The default bug view has changed. See this FAQ.

IonMonkey: Unwrap MPassArg in encodeSlots().

RESOLVED FIXED

Status

()

Core
JavaScript Engine
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: jandem, Unassigned)

Tracking

(Blocks: 1 bug)

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

5 years ago
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?
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.
Attachment #608862 - Flags: review?(dvander)
Attachment #608862 - Flags: review?(dvander) → review+
https://hg.mozilla.org/projects/ionmonkey/rev/dec79c24caa3
Status: NEW → RESOLVED
Last Resolved: 5 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.