Prior to this patch, Wasm/Baseline's stackmap creation logic failed to take
into account reftyped locals which are not also parameters. This patch fixes
that. It also adds a new test that reliably exposes the failure on all 4
primary targets. The test case also runs on Ion, and it appears that Wasm/Ion
does not suffer from an analogous problem.
Differential Revision: https://phabricator.services.mozilla.com/D28654
--HG--
extra : rebase_source : 893bb5ad7e2028a29385f4624472d63defe3af19
The Context 0.1 format specifies that the (de)compression of nodes is determined by:
- its node type;
- its parent type;
- the index in the parent node;
- whether the node is an element of an array.
This patch modifies the parser generator to pass the information during parsing.
Differential Revision: https://phabricator.services.mozilla.com/D28534
--HG--
extra : moz-landing-system : lando
They are only used in non-Intl resp. system ICU builds in jsdate.cpp.
Depends on D28481
Differential Revision: https://phabricator.services.mozilla.com/D28482
--HG--
extra : moz-landing-system : lando
The one optimization introduced by this is the rearrangement of branches to
prefer fallthrough whenever possible, as well as folding branches when
comparing against 0. See also
https://github.com/CraneStation/cranelift/pull/629 for details.
Differential Revision: https://phabricator.services.mozilla.com/D28512
--HG--
extra : rebase_source : f0d765a1cb1e2f7872037c18b9951077a08ae4b7
extra : histedit_source : 1a1dd95618e166705f7165c045f3b5af12f96d5b
MachineStackTracker::setGCPointer claims in a comment that its argument
`offsetFromSP` is an index up from the lowest address denoted by the stack
map. It implements that consistently with the comment.
MachineStackTracker::isGCPointer makes the same claim in a comment, but
actually implements the indexing in the opposite direction.
This patch:
* inverts the indexing direction of ::isGCPointer, making it consistent with
the comments and with ::setGCPointer
* changes the one-and-only use point of ::isGCPointer, in createStackMap(),
accordingly. Rather than change the argument to ::isGCPointer, the
iteration direction of the containing loop is inverted, since that fits
better with the surrounding code.
Differential Revision: https://phabricator.services.mozilla.com/D28594
--HG--
extra : rebase_source : 43d146d097fc44cda2e06e5ed30b6babe5d419eb
Gating that explicitly lists the architectures that are supported
is more resilient than one that lists architectures that are not.
Differential Revision: https://phabricator.services.mozilla.com/D28447
--HG--
extra : rebase_source : f80372c2c5ef1b6b31b69a493f3ea8e1426327ab
extra : amend_source : 5ff1ff04b0ad9bbfd175655c4bf007a34d0a755e
When the Baseline Interpreter is enabled unconditionally we will be able to
simplify this a bit more, but for now we support both cases.
Differential Revision: https://phabricator.services.mozilla.com/D27665
--HG--
extra : moz-landing-system : lando
We moved fuzzing options out of `toolkit/moz.configure` into `js`'s
configure a while back, but we seem to have snuck some fuzzing-related
options into `toolchain.configure` in the interim. But we can't make
the `toolchain.configure` bits depend on the `js` bits; let's just put
everything in `toolchain.configure`.
Differential Revision: https://phabricator.services.mozilla.com/D28084
--HG--
extra : moz-landing-system : lando
The Context 0.1 format specifies that the (de)compression of nodes is determined by:
- its node type;
- its parent type;
- the index in the parent node;
- whether the node is an element of an array.
This patch modifies the parser generator to pass the information during parsing.
Differential Revision: https://phabricator.services.mozilla.com/D28534
--HG--
extra : moz-landing-system : lando
We implemented table.grow with an initializer argument before there was a spec
for it, and the draft spec now takes the arguments in the opposite order of
what we have, to follow table.fill and memory.fill: we should pop the delta
first, then the init value, ie in the high-level notation, the init value is
the first argument and the delta the second. This corresponds to the last two
arguments of the fill instructions, which are initializer value and length.
This commit fixes both the implementation and test cases: it swaps the order
of the 'initial value' and 'delta' arguments.
Differential Revision: https://phabricator.services.mozilla.com/D27887
--HG--
extra : moz-landing-system : lando
Added 'RunnableTask' struct to Utility.h to unify HelperThread task types in a way that can be exposed to XPCOM thread pools. Re-implemented tasks within native HelperThreads using their runnableTask method.
Differential Revision: https://phabricator.services.mozilla.com/D24921
--HG--
extra : moz-landing-system : lando
There are currently some odd circumstances where we deadlock waiting for the
background save thread to finish while it is blocked on sync dispatch to the
main thread during shutdown.
There were existing workarounds to prevent this, which tried to synchronously
complete the main thread work required by the background thread at the start
of shutdown, and some fallback anti-deadlock assertions to catch any remaining
corner cases, but apparently Fennec has corner cases of its own that we didn't
anticipate.
This patch takes the more straightforward route of using an async shutdown
blocker, which allows the async shutdown service to safely spin the event loop
until the save completes, rather than an independent monitor loop, which does
not.
It also fixes a potential data race where the save thread could clear its
mSaveThread member before NS_NewNamedThread returned, running afoul of
nsCOMPtr sanity checks.
Differential Revision: https://phabricator.services.mozilla.com/D28127
--HG--
extra : rebase_source : 4aed24f4a255063d87dff2609e9913418d5c16fa