Warp: Support CacheIR's LoadObject
Categories
(Core :: JavaScript Engine: JIT, task, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox77 | --- | fixed |
People
(Reporter: evilpies, Assigned: jandem)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
LoadObject is used for example for guarding on properties on the prototype chain.
A simple version that just creates an MConstant for the JSObject* in LoadObject triggers nursery related assertions. We probably have to implement something like IonBuilder::checkNurseryObject, however that might not be possible off-thread.
Assignee | ||
Comment 1•5 years ago
|
||
There's a TODO to check for nursery things in WarpOracle. I hope that will be good enough for now because the builtin prototypes are tenured...
If we wanted to support this, I think the best approach is to store a list/set of nursery objects in the snapshot, copy it to the IonScript and then have JIT code load from that instead of baking nursery objects in the code. I don't really like the mechanism IonBuilder has for this.
Updated•5 years ago
|
Assignee | ||
Comment 2•5 years ago
|
||
We don't transpile CacheIR if the stub data contains nursery pointers. We will
probably need to support that at some point, but this lets us improve our
coverage for now.
Updated•5 years ago
|
Assignee | ||
Comment 3•5 years ago
|
||
While working on the previous patch I noticed some builtin prototypes weren't tenured.
Use createBlankPrototypeInheriting for consistency with similar code elsewhere.
Depends on D73221
Comment 5•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/437e68411565
https://hg.mozilla.org/mozilla-central/rev/66899ba0dcbe
Description
•