Closed Bug 1701711 Opened 4 years ago Closed 2 years ago

Support undefined properties in scalar replacement

Categories

(Core :: JavaScript Engine: JIT, task, P3)

task

Tracking

()

RESOLVED FIXED
108 Branch
Tracking Status
firefox108 --- fixed

People

(Reporter: iain, Assigned: anba)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

ion/recover-objects.js contains the following (currently disabled) test:

function unknownLoad(i) {
    var obj = { foo: i };
    // Unknown properties are inlined as undefined.
    assertEq(obj.bar, undefined);
    assertRecoveredOnBailout(obj, true);
}

To scalar-replace obj.bar with undefined, we need to ensure that the prototype chain hasn't been modified. In Ion, we could rely on TI. In Warp, we generate ObjectStaticProto + GuardShape, which isn't trivial to scalar-replace.

This might be another case where a fuse is the nicest approach.

We no longer load the prototype after bug 1792228, so we don't have to support
MObjectStaticProto during scalar replacement. This also means scalar
replacement when loading undefined properties is now trivially supported.

Assignee: nobody → andrebargull
Status: NEW → ASSIGNED
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/7f6ed6a483ff Enable test case for undefined loads. r=iain
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 108 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: