Allow running IonBuilder without a BaselineScript for definite properties analysis
Categories
(Core :: JavaScript Engine: JIT, task, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox70 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(5 files)
With Baseline ICs moved into JitScript and bailouts hopefully soon bailing to the interpreter, there aren't that many places where Ion cares about BaselineScript. There are still some uses of BaselineScript in IonBuilder but I think those could be fixed by moving these fields to JitScript (maybe a CachedIonData
class hanging off it).
For normal Ion compilation we will still depend on the Baseline JIT (it's where we can OSR into Ion for example) and that is fine. However the definite properties analysis currently eagerly Baseline compiles scripts (also the ones it inlines) and that's something we could stop doing.
First step here is to gather some data on how many scripts the DPA ends up Baseline compiling on typical websites.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
When starting the browser, opening Gmail, a random Google Doc and Sheet, Facebook, Twitter, CNN we Baseline compile > 3300 functions for the definite properties analysis (AnalyzeNewScriptDefiniteProperties + IonBuilder::canInlineTarget). That's significant enough that we should fix this.
Assignee | ||
Comment 2•5 years ago
|
||
Assignee | ||
Comment 3•5 years ago
|
||
Depends on D39166
Assignee | ||
Comment 4•5 years ago
|
||
Now that IonBuilder only depends on JitScript we no longer need to have a BaselineScript.
Depends on D39167
Assignee | ||
Comment 5•5 years ago
|
||
This saves a little memory for JitScripts that are never Ion-compiled.
Depends on D39168
Assignee | ||
Comment 6•5 years ago
|
||
This prevents assertion failures with later patches because we will run the
definite properties analysis in IonBuilder without requiring a Baseline
compilation.
Just aborting in IonBuilder should be fine nowadays: we can now properly
backtrack from inlining failures (instead of aborting the whole compilation)
and when this happens we mark the script uninlineable too.
Comment 8•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/77669a7fee83
https://hg.mozilla.org/mozilla-central/rev/2e0669f670df
https://hg.mozilla.org/mozilla-central/rev/22681d4e56b6
https://hg.mozilla.org/mozilla-central/rev/e61205c33c0c
https://hg.mozilla.org/mozilla-central/rev/820875f59ff9
Description
•