Warp: transpile getter/setter calls
Categories
(Core :: JavaScript Engine: JIT, task, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox82 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
(Blocks 1 open bug)
Details
Attachments
(6 files)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
Assignee | ||
Comment 1•3 years ago
|
||
We had different CacheIR ops for receiver-is-object and receiver-is-Value. This
patch unifies them by always using the receiver-is-Value version. This makes it
easier to transpile in Warp.
When generating CacheIR, pass and use the receiverId (Value) in a few places
instead of objId. This also lets us support non-object receivers for super.prop
There are two places where this doesn't work and boxObject is used to convert
from object-id to value-id. In the future this could be a dedicated CacheIR op
instead of a cast, but that would require BaselineInspector changes.
Assignee | ||
Comment 2•3 years ago
|
||
This is for use by the transpiler, similar to GuardSpecificFunction.
Depends on D88264
Assignee | ||
Comment 3•3 years ago
|
||
Depends on D88265
Assignee | ||
Comment 4•3 years ago
|
||
We can reuse most of the code in maybeCallTarget for creating a WrappedFunction
from callee/nargs/flags, so that was factored out as a helper function.
Instead of the "stack spoofing" that IonBuilder does (see ensureHasSlots call),
add initForGetterCall to CallInfo so we can set callee/thisv directly.
Depends on D88266
Assignee | ||
Comment 5•3 years ago
|
||
Add nargsAndFlags, add sameRealm flag to CallNativeSetter.
Depends on D88267
Assignee | ||
Comment 6•3 years ago
|
||
Again similar to the IonBuilder code but without the stack spoofing.
IonBuilder uses BytecodeIsPopped(pc) for ignoresReturnValue but the return value
of a setter is never used so we can just pass true.
Depends on D88268
Pushed by jdemooij@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/fc681a8e552e part 1 - Clean up CacheIR ops for getter calls. r=iain https://hg.mozilla.org/integration/autoland/rev/d01415c7707e part 2 - Store nargsAndFlags for getter calls. r=iain https://hg.mozilla.org/integration/autoland/rev/e25e289e016c part 3 - Add sameRealm flag to CallNativeGetterResult. r=iain https://hg.mozilla.org/integration/autoland/rev/a86d23fda071 part 4 - Transpile getter calls. r=iain https://hg.mozilla.org/integration/autoland/rev/73140c7a14a4 part 5 - CacheIR changes preparing for transpiling setter calls. r=iain https://hg.mozilla.org/integration/autoland/rev/04787b6cf6a3 part 6 - Transpile setter calls. r=iain
Comment 8•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/fc681a8e552e
https://hg.mozilla.org/mozilla-central/rev/d01415c7707e
https://hg.mozilla.org/mozilla-central/rev/e25e289e016c
https://hg.mozilla.org/mozilla-central/rev/a86d23fda071
https://hg.mozilla.org/mozilla-central/rev/73140c7a14a4
https://hg.mozilla.org/mozilla-central/rev/04787b6cf6a3
Description
•