Remove IonBuilder and TI, part deux
Categories
(Core :: JavaScript Engine: JIT, task, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox86 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(48 files)
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details |
Assignee | ||
Comment 1•4 years ago
|
||
Assignee | ||
Comment 2•4 years ago
|
||
Depends on D99870
Assignee | ||
Comment 3•4 years ago
|
||
It was always true at this point.
Depends on D99871
Assignee | ||
Comment 4•4 years ago
|
||
We never used this with Warp.
Depends on D99872
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 6•4 years ago
|
||
This was used by IonBuilder/BaselineInspector.
Assignee | ||
Comment 7•4 years ago
|
||
Depends on D99992
Assignee | ||
Comment 8•4 years ago
|
||
Depends on D99993
Assignee | ||
Comment 9•4 years ago
|
||
Depends on D99994
Assignee | ||
Comment 10•4 years ago
|
||
collectCoverage and collectCoverageForDebug are equivalent after removing
collectCoverageForPGO. The patch kept collectCoverageForDebug because it had
more callers than collectCoverage.
Also remove the counter increment from the bailout code.
Depends on D99995
Assignee | ||
Comment 11•4 years ago
|
||
Depends on D99996
Assignee | ||
Comment 12•4 years ago
|
||
The Unconditionally type has been unused since bug 1614622, so we can inline
IfUnmarked::ShouldTrace directly and remove the abstraction.
Depends on D99997
Assignee | ||
Comment 13•4 years ago
|
||
Depends on D99998
Assignee | ||
Comment 14•4 years ago
|
||
This function never returned true in practice (tested by adding a MOZ_CRASH and
running jit-tests, Kraken, Octane, SunSpider) so is probably no longer relevant
without the MFilterTypeSet code that was removed earlier.
Depends on D99999
Assignee | ||
Comment 15•4 years ago
|
||
Without TI we can always just return |undefined| for missing properties.
Depends on D100000
Comment 16•4 years ago
|
||
bugherder |
Comment 17•4 years ago
|
||
Assignee | ||
Comment 18•4 years ago
|
||
Assignee | ||
Comment 19•4 years ago
|
||
This isn't really relevant for fallback stubs because they're never discarded and
are always in the fallback space, so this lets us remove some confusing code.
Depends on D100105
Assignee | ||
Comment 20•4 years ago
|
||
Depends on D100106
Comment 21•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/ace4b47bc69c
https://hg.mozilla.org/mozilla-central/rev/39f87356de52
https://hg.mozilla.org/mozilla-central/rev/1ac0c1a59eaa
https://hg.mozilla.org/mozilla-central/rev/6f370df4c888
https://hg.mozilla.org/mozilla-central/rev/efd4634dbe39
https://hg.mozilla.org/mozilla-central/rev/04986d2d60e7
https://hg.mozilla.org/mozilla-central/rev/0c04df0acbbc
https://hg.mozilla.org/mozilla-central/rev/172464950902
https://hg.mozilla.org/mozilla-central/rev/4c684fa892fd
https://hg.mozilla.org/mozilla-central/rev/ec44a2e66c38
Comment 22•4 years ago
|
||
Assignee | ||
Comment 23•4 years ago
|
||
Assignee | ||
Comment 24•4 years ago
|
||
The disabled jit-tests now pass (likely from changes to the inlining heuristics).
Depends on D100676
Assignee | ||
Comment 25•4 years ago
|
||
Depends on D100677
Assignee | ||
Comment 26•4 years ago
|
||
Depends on D100678
Assignee | ||
Comment 27•4 years ago
|
||
- Rename CopyInitializerObject to CopyTemplateObject because it's also used for |new|.
- Change CopyTemplateObject to use the template object's proto instead of changing the group later.
- Change CreateThisWithTemplate to call CopyTemplateObject directly instead of going through NewObjectOperationWithTemplate.
Depends on D100679
Assignee | ||
Comment 28•4 years ago
|
||
Also remove a pointless isSingleton check in DoNewArrayFallback: at this point
only the global object is a singleton.
Depends on D100680
Assignee | ||
Comment 29•4 years ago
|
||
Depends on D100681
Assignee | ||
Comment 30•4 years ago
|
||
There are no any actual uses anymore. Later patches make more changes in this area.
Depends on D100682
Assignee | ||
Comment 31•4 years ago
|
||
Depends on D100683
Assignee | ||
Comment 32•4 years ago
|
||
Depends on D100684
Assignee | ||
Comment 33•4 years ago
|
||
Depends on D100685
Assignee | ||
Comment 34•4 years ago
|
||
This was mainly used to select between JSOp::NewObjectWithGroup and JSOp::NewObject.
Follow-up patches will make more changes in this area.
Depends on D100686
Assignee | ||
Comment 35•4 years ago
|
||
- Rename ObjLiteralFlag::NoValues to ObjLiteralFlag::Singleton and invert it.
- Update comments.
The code in emitObject is massively simpler now and less brittle without TI so
this also deletes the "don't change this" warning there.
Depends on D100687
Assignee | ||
Comment 36•4 years ago
|
||
When disabling/removing the COW-array code we accidentally disabled the
JSOp::Object optimization for array literals in singleton contexts. This patch
restores it.
Depends on D100688
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Comment 37•4 years ago
|
||
bugherder |
Comment 38•4 years ago
|
||
Assignee | ||
Comment 39•4 years ago
|
||
This was also used to optimize object-or-null type barriers but now it's only
used for bounds checks.
Assignee | ||
Comment 40•4 years ago
|
||
Assignee | ||
Comment 41•4 years ago
|
||
This reverts a change made for IonBuilder loop restarts (to preserve loop header
phis when restarting a loop).
Then removeBlockIncludingPhis can be removed because removeBlock now always removes
phis too.
Depends on D100790
Comment 42•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/538b3438ea17
https://hg.mozilla.org/mozilla-central/rev/cd28fb3ff964
https://hg.mozilla.org/mozilla-central/rev/c38229ecc9a4
https://hg.mozilla.org/mozilla-central/rev/b7097bb2492d
https://hg.mozilla.org/mozilla-central/rev/44024aa16de7
https://hg.mozilla.org/mozilla-central/rev/e4b62ca3e934
https://hg.mozilla.org/mozilla-central/rev/e29abe932823
https://hg.mozilla.org/mozilla-central/rev/d17b081264ff
https://hg.mozilla.org/mozilla-central/rev/3d98e102d0a5
https://hg.mozilla.org/mozilla-central/rev/5553826cc186
https://hg.mozilla.org/mozilla-central/rev/fefd283bfc68
https://hg.mozilla.org/mozilla-central/rev/b465a27e6555
https://hg.mozilla.org/mozilla-central/rev/3e9185713037
https://hg.mozilla.org/mozilla-central/rev/c69c83d5f6ca
Comment 43•4 years ago
|
||
Assignee | ||
Comment 44•4 years ago
|
||
Assignee | ||
Comment 45•4 years ago
|
||
Before this patch, the global object was allocated as a singleton object (with its
own group) and after creating the global we changed this group's prototype in
splicePrototype.
With this patch splicePrototype give the object a new group for the new prototype.
This is nicer because it means groups are now almost immutable (there's still a
setProtoUnchecked in mergeRealms that will go away with Stencil).
This will let us remove singleton groups/objects completely in the next patch.
A later patch will clean up and document the code around prototype-splicing more.
Depends on D100906
Assignee | ||
Comment 46•4 years ago
|
||
This also removes ObjectGroup's flags field.
Depends on D100907
Assignee | ||
Comment 47•4 years ago
|
||
Moves splicePrototype from JSObject to GlobalObject.
Depends on D100908
Assignee | ||
Comment 48•4 years ago
|
||
Depends on D100909
Assignee | ||
Comment 49•4 years ago
|
||
Depends on D100910
Assignee | ||
Comment 50•4 years ago
|
||
Also replace the realm-switching code with an assertion and fix one caller.
Depends on D100911
Assignee | ||
Comment 51•4 years ago
|
||
Depends on D100912
Assignee | ||
Comment 52•4 years ago
|
||
Depends on D100913
Assignee | ||
Comment 53•4 years ago
|
||
We now set it in the constructor instead of calling setTypeDescr. Also use
GCPtr<> to simplify the GC tracing code.
Depends on D100914
Comment 54•4 years ago
|
||
bugherder |
Comment 55•4 years ago
|
||
Assignee | ||
Comment 56•4 years ago
|
||
Now that we don't have to worry about maintaining property types, we can share more code.
This moves the Baseline version to the base class. Also moves the ArrayPush code
because it uses some of the shared helper functions.
The Ion implementation had some minor differences:
- Typed value register (ported by the next patch).
- For StoreDenseElementHole it ignored the handleAdd flag but now we are consistent with Baseline.
- Ion used AutoSpectreBoundsScratchRegister for x86 but now we pass InvalidReg because the Baseline code does not have enough registers (hopefully fine for Ion IC code given decline of x86).
Assignee | ||
Comment 57•4 years ago
|
||
Depends on D101038
Comment 58•4 years ago
|
||
bugherder |
Comment 59•4 years ago
|
||
Comment 60•4 years ago
|
||
bugherder |
Comment 61•4 years ago
|
||
Comment 62•4 years ago
|
||
bugherder |
Assignee | ||
Comment 63•4 years ago
|
||
These functions use mightBeType for each type, but without TypeSets that always
returns true because the operand has MIRType::Value, so simplify based on that.
There are probably other calls to mightBeType that we can audit/change later as
we notice them, but these ones seemed particularly unnecessary.
Assignee | ||
Comment 64•4 years ago
|
||
Warp doesn't use this and there's a lot of complexity to support recompiling
an IonScript while continuing to use the current one.
It might make sense to add a similar hot tier to Warp at some point, but because
Warp uses trial inlining the implementation would likely be pretty different:
we could invalidate, flag the JitScript as supporting different inlining thresholds,
and go back to Baseline to gather information.
Depends on D101456
Comment 65•4 years ago
|
||
Comment 66•4 years ago
|
||
bugherder |
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
Updated•4 years ago
|
Description
•