This has equivalent overall behavior as before, but computes the
precise LazyScript::TreatAsRunOnce flag rather than checking the extra
conditions during delazification. The heuristics can be computed using
just the LazyScript information so the result is the same.
Differential Revision: https://phabricator.services.mozilla.com/D38025
--HG--
extra : moz-landing-system : lando
Decouple the JSScript creation for delazification from needing
CompileOptions. When JSScript and LazyScript become unified, this
operation will become a no-op.
Differential Revision: https://phabricator.services.mozilla.com/D38023
--HG--
extra : moz-landing-system : lando
With the current design of ImmutableScriptData, even empty arrays have a
legal span so we no longer need to change the hasTryNotes and friends
helpers. In most cases we were performing a range-for afterwards so this
has simpler semantics.
Differential Revision: https://phabricator.services.mozilla.com/D37882
--HG--
extra : moz-landing-system : lando
The 50 threshold for Baseline is pretty arbitrary and will likely change later.
Differential Revision: https://phabricator.services.mozilla.com/D37214
--HG--
extra : moz-landing-system : lando
We no longer need the early-check mechanism if we always do environment chain
initialization + stack check before initializing locals. A comment mentions that
environment initialization can only happen _after_ pushing locals, but that
didn't match the code anyway: if the early stack check failed, we would end up
in initEnvironmentChain _without_ having initialized locals.
Ion prologue bailouts now resume in the prologue after environment chain
initialization, so the bailout code needed some small changes to always
initialize the environment chain instead of relying on the Baseline
prologue doing that.
Overall this is much simpler and deletes about 70 lines of code.
Differential Revision: https://phabricator.services.mozilla.com/D37566
--HG--
extra : moz-landing-system : lando
Because ShouldIncludeEdge considers the |origin| node as well, it was possible for
the old code to 'miss' nodes and never write them to the core dump even though we
also wrote some edges with the node as referent.
Differential Revision: https://phabricator.services.mozilla.com/D37701
--HG--
extra : moz-landing-system : lando
XDR should be a structural clone, so check if we have a lazy script
directly when deciding if it should be coded. Whether relazification
should be supported is a VM decision, not an XDR decision. This gives a
cleaner round-trip of data when using XDR.
Differential Revision: https://phabricator.services.mozilla.com/D37578
--HG--
extra : moz-landing-system : lando
* Remove double spaces after periods.
* Add periods at the end of sentances.
* Fix a spelling error.
* Use a simpler sentance.
Differential Revision: https://phabricator.services.mozilla.com/D37366
--HG--
extra : moz-landing-system : lando
After this patch a JSScript will have Private, Runtime, and Immutable
script data type attached to it.
Differential Revision: https://phabricator.services.mozilla.com/D37867
--HG--
extra : moz-landing-system : lando
Add an 'Offset' type-alias to better document as well as fixing up
out-of-date comments. This also moves the optArrayOffset to beginning of
structure.
Differential Revision: https://phabricator.services.mozilla.com/D37866
--HG--
extra : moz-landing-system : lando
This optimisation added to the specification doesn't improve performance for us,
because we're already optimising the lookups in Promise.all & co. So we only
need to perform the initial check for `PromiseLookup::isDefaultPromiseState`
outside of the main loop in `CommonPerformPromiseAllRace` and that's more or
less all what needs to be changed.
Differential Revision: https://phabricator.services.mozilla.com/D37531
--HG--
extra : moz-landing-system : lando
This records the size of the heap at the start of collection and maintains a count of bytes freed during collection. From this we calcuate a 'survival rate' at the end of collection. The intention is that this is like the nursery's promotion rate so it's the fraction retained rather than the fraction freed.
Differential Revision: https://phabricator.services.mozilla.com/D37452
Factor out methods to send GC telemetry at the end of a slice and at the end of a collection. Rename heap size fields to indicate that they are for total heap size in bytes as opposed to the size of collected zones.
Differential Revision: https://phabricator.services.mozilla.com/D37451
Negative zero can be treated the same way as positive zero for MInArray,
MStoreTypedArrayElementHole, and MPostWriteElementBarrier. This avoids possible negative zero
bailouts for these operations.
Depends on D37260
Differential Revision: https://phabricator.services.mozilla.com/D37261
--HG--
extra : moz-landing-system : lando
Use the correct index position for MStoreElementHold and MFallibleStoreElement to avoid possible
negative zero bailouts for these operations.
Depends on D37259
Differential Revision: https://phabricator.services.mozilla.com/D37260
--HG--
extra : moz-landing-system : lando
The string representation of negative zero is equal to the one for positive zero, so there's no
need to call into the runtime for that case.
Differential Revision: https://phabricator.services.mozilla.com/D37259
--HG--
extra : moz-landing-system : lando
When we shrink the nursery below one chunk, poison and mark as inaccessible
the now unused part of that chunk.
This is the only patch in this patch series that adds extra memory poisoning.
Differential Revision: https://phabricator.services.mozilla.com/D37348
--HG--
extra : moz-landing-system : lando
This restores the use of GC invocation kind that was inadvertantly removed by the patch in bug 1395509 comment 33 from the call to ZoneAllocator::updateAllGCThresholds in GCRuntime::endSweepingSweepGroup. Also refactors ZoneMallocThreshold::computeZoneTriggerBytes a little.
Differential Revision: https://phabricator.services.mozilla.com/D36924