Clean up Ion bailouts
Categories
(Core :: JavaScript Engine: JIT, task, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox70 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(14 files, 1 obsolete file)
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 | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
Bug 1567438 part 10 - Remove now-unnecessary AutoSuppressGC in FinishBailoutToBaseline. r?tcampbell!
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
86.54 KB,
patch
|
Details | Diff | Splinter Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
We can now resume in the interpreter and this simplifies a number of things, for example we no longer have to worry about unsynced R0/R1 stack values.
However there's more to clean up, for example the enter-monitor-chain code can be removed if we monitor this Value in C++.
Assignee | ||
Comment 1•6 years ago
|
||
When we resumeAfter a JOF_TYPESET op, we had code to enter the type monitor
chain for the bailing op, passing it the top stack value. It's simpler to do
this monitoring in C++ in FinishFromBailout and then treat it as a regular
resumeAfter bailout.
The code for this will be simplified more later in the stack.
Assignee | ||
Comment 2•6 years ago
|
||
We now always set the frame's environment chain to a non-null value and have
an explicit isPrologueBailout flag instead of relying on envChain == nullptr.
Depends on D38860
Assignee | ||
Comment 3•6 years ago
|
||
The old code happened to work but didn't really make sense and I ran into some assertion
failures with other changes. Later patches will clean this up more.
Depends on D38861
Assignee | ||
Comment 4•6 years ago
|
||
The old code happened to work for Baseline JIT bailouts because the JIT ignores
the return value slot for noScriptRval scripts, but when bailing out to the
interpreter we would have an optimized-out MagicValue in the return value slot
and get confused.
Depends on D38862
Assignee | ||
Comment 5•6 years ago
|
||
We need this for the next patch because we have a JSOp instead of a pc when
generating the interpreter. (In general it's nicer for functions to take a JSOp
instead of a PC because it can be used in strictly more contexts.)
Depends on D38863
Assignee | ||
Comment 6•6 years ago
|
||
We need this for interpreter bailouts for bailouts involving inlining.
Depends on D38864
Assignee | ||
Comment 7•6 years ago
|
||
This adds/changes some methods we need later on.
Depends on D38865
Assignee | ||
Comment 8•6 years ago
|
||
There will be more clean up in later patches.
Depends on D38866
Assignee | ||
Comment 9•6 years ago
|
||
Use proper C++ constructors/destructors, use UniquePtr instead of js_free.
Depends on D38867
Assignee | ||
Comment 10•6 years ago
|
||
Depends on D38868
Assignee | ||
Comment 11•6 years ago
|
||
Making variables in InitFromBailout immutable makes the code a lot easier to reason about.
Depends on D38869
Updated•6 years ago
|
Updated•6 years ago
|
Assignee | ||
Comment 12•6 years ago
|
||
Assignee | ||
Comment 13•6 years ago
|
||
Depends on D38870
Assignee | ||
Comment 14•6 years ago
|
||
Updated•6 years ago
|
Assignee | ||
Comment 15•6 years ago
|
||
Instead of storing both buffer_ and header_ we now store just header_ (as UniquePtr).
This also removes HeaderSize() and uses sizeof(BaselineBailoutInfo) directly.
Depends on D38975
Assignee | ||
Updated•6 years ago
|
Comment 16•6 years ago
|
||
Comment 17•6 years ago
|
||
Assignee | ||
Updated•6 years ago
|
Comment 18•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/58ea17fc315e
https://hg.mozilla.org/mozilla-central/rev/ff457522f563
https://hg.mozilla.org/mozilla-central/rev/ea48a9066430
https://hg.mozilla.org/mozilla-central/rev/92cda183a416
https://hg.mozilla.org/mozilla-central/rev/9267308e0b89
https://hg.mozilla.org/mozilla-central/rev/ffe515491b2a
https://hg.mozilla.org/mozilla-central/rev/92c20b931f96
https://hg.mozilla.org/mozilla-central/rev/3c3b12e8c597
https://hg.mozilla.org/mozilla-central/rev/9a1eeba0d050
https://hg.mozilla.org/mozilla-central/rev/cc928df24bc5
https://hg.mozilla.org/mozilla-central/rev/6e65f403e1ce
https://hg.mozilla.org/mozilla-central/rev/098b10e61991
https://hg.mozilla.org/mozilla-central/rev/e7d2e7780cbd
Description
•