Improve RegExp stubs more
Categories
(Core :: JavaScript Engine, task, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox115 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
(Blocks 1 open bug)
Details
(Whiteboard: [sp3])
Attachments
(6 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
After the changes in bug 1831314, it should be possible to move a bit more of the BuiltinExec code into the RegExp stubs instead of emitting it before/after calling the stub.
We should also look into calling these stubs from Baseline ICs.
Iain also suggested generating all of the stubs at once when we need one of them, to avoid mprotect overhead.
Assignee | ||
Comment 1•2 years ago
|
||
The RegExpTester stub is now only used for RegExpExecTest, so we can move the
lastIndex code there. This lets us get rid of some extra branches. We now also
directly return a boolean from the stub instead of an integer.
Later patches will rename RegExpTester to RegExpExecTest.
Assignee | ||
Comment 2•2 years ago
|
||
Now it matches the name of the LIR instruction again.
Also add explicit registers for RegExpSearcher instead of reusing the Tester ones.
Depends on D178082
Assignee | ||
Comment 3•2 years ago
|
||
This adds a separate stub instead of reusing the RegExpMatcher stub. This lets us
move more code into the stub and fuses some branches.
Depends on D178083
Assignee | ||
Comment 4•2 years ago
|
||
This removes the lastIndex argument from the C++ functions called from JIT code.
Loading lastIndex now happens either in the RegExp stubs or in the C++ Code.
This is more like the rest of the code and simplifies future changes.
Depends on D178084
Assignee | ||
Comment 5•2 years ago
|
||
After the previous changes, lastIndex can be just a temp register inside the stub
because it's never used outside the stub code.
Depends on D178085
Assignee | ||
Comment 6•2 years ago
|
||
Similar to the previous change, the RegExpExecMatch stub also just uses this
register internally.
Depends on D178086
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Updated•2 years ago
|
Assignee | ||
Updated•2 years ago
|
Comment 8•2 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/574b109aab5f
https://hg.mozilla.org/mozilla-central/rev/46287fa0fd6c
https://hg.mozilla.org/mozilla-central/rev/a6b8c95eff33
https://hg.mozilla.org/mozilla-central/rev/dc43ea76ea71
https://hg.mozilla.org/mozilla-central/rev/040471307c86
https://hg.mozilla.org/mozilla-central/rev/f9b9756b0d51
Updated•1 years ago
|
Description
•