Simplify MThrow
Categories
(Core :: JavaScript Engine: JIT, task, P1)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox76 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(3 files)
Ion code for JSOp::Throw is complicated. We can clean this all up by making MThrow a plain, non-control instruction with its own resume point and then use MUnreachable as the control instruction terminating the block.
| Assignee | ||
Comment 1•5 years ago
|
||
The changes:
- Make MThrow a non-control-instruction (followed by the MUnreachable control instruction).
- This allows us to remove the separate MNop and attach the resume point to MThrow itself.
- WarpBuilder only allows resumeAfter() on effectful instructions, so make sure MThrow isEffectful() by giving it a store AliasSet.
| Assignee | ||
Comment 2•5 years ago
|
||
We can now easily terminate the block for JSOp::ThrowSetConst too.
In theory we could also terminate the block after the MThrowRuntimeLexicalError
added in IonBuilder::addLexicalCheck, but because that depends on type information
instead of being a static property of the bytecode I'm not completely sure it's
always safe (considering arguments/definite-properties analysis, for example).
Depends on D68164
| Assignee | ||
Comment 3•5 years ago
|
||
Just a drive-by change to be more consistent with JSOp::Throw and JSOp::ThrowMsg.
It also results in slightly more compact code in Baseline Interpreter and JIT.
Updated•5 years ago
|
Comment 5•5 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/f0a1f1eade8b
https://hg.mozilla.org/mozilla-central/rev/635cc9ec177c
https://hg.mozilla.org/mozilla-central/rev/f72280a54c6e
Description
•