The tracing framework is unused but Matthew found the hook points useful, so this changes those into empty inline functions that can be used to insert probes.
Differential Revision: https://phabricator.services.mozilla.com/D73816
Also move the pre-barrier to JSFunction::maybeRelazify for consistency even
though currently barriers are disabled while running relazification.
JSScript::fullyInitFromStencil does not encounter self-hosted lazy scripts so
remove the dead code.
Differential Revision: https://phabricator.services.mozilla.com/D71373
Defer initializing the canonicalFunction while the FunctionScope::Data is
owned by the ScopeCreationData. When the data is released to create the
concrete js::Scope, we fill in the canonicalFunction.
Depends on D73765
Differential Revision: https://phabricator.services.mozilla.com/D73772
Use similar helper methods as js::BaseScript for consistency. Also fix the
inconsistent accessor names so they match js::BaseScript and the flag itself.
Depends on D73704
Differential Revision: https://phabricator.services.mozilla.com/D73705
As we progress towards Stencil, these "prepare" abstractions make less sense
as their original purpose was to allocate GC-things.
Differential Revision: https://phabricator.services.mozilla.com/D73697
This removes all other locations through the frontend where these flags would
be set. The transitive options are applied to all SharedContext, while the
non-transitive flags are only applied to top-level (non-function)
SharedContext. Also update frontend to stop reading these CompileOptions
flags directly and instead rely on the SharedContext::immutableFlags.
Depends on D73695
Differential Revision: https://phabricator.services.mozilla.com/D73696
"conjunction-long.js" can be removed, because the more thorough
"conjunction-type.js" test gets enabled in this patch.
Differential Revision: https://phabricator.services.mozilla.com/D72917
`ulistfmt_openForType` is a draft API, so it may not be available when compiling
against a system ICU. Instead of disabling `Intl.ListFormat` completely, this
patch adds a boolean parameter to `InitializeListFormat` to conditionally enable
the "type" and "style" options when ICU draft APIs are available.
Differential Revision: https://phabricator.services.mozilla.com/D72916
Import a rough-and-ready translation of the SIMD spec test cases. We
place these in wasm/simd/spec instead of in wasm/spec/simd since the
latter location will eventually be occupied by the canonical
translation, after which the tests imported by the present patch can
be deleted.
Differential Revision: https://phabricator.services.mozilla.com/D71006
Clean up porting APIs and implement many new ones. Also implement
many new instructions required by the new porting APIs.
We only care about x64, sse4.1, non-avx, and only register operands,
and this simplifies things a lot for the new instructions.
Differential Revision: https://phabricator.services.mozilla.com/D69381
Here we're *only* extracting porting APIs from the -SIMD.cpp file and
exposing them in MacroAssembler.h, along with a little bit of
renaming. Almost all the interesting action happens in the next patch.
Differential Revision: https://phabricator.services.mozilla.com/D60856
We add V128 to the ValType enum and insert it in all switches
throughout the engine. In many cases we insert MOZ_CRASH() that
will be resolved in later patches.
Note we're currently using MIRType::Int8x16 to represent V128. This
will change later, when we do the Ion work.
Differential Revision: https://phabricator.services.mozilla.com/D57941
We add a configuration option for SIMD and apply ENABLE_WASM_SIMD
throughout the engine as appropriate, mostly to insert #error or
MOZ_CRASH where things need to be done in later patches or for
architectures that we won't currently consider.
We add a command line switch for the shell and an option for
about:config and plumb the value of this through the engine.
Differential Revision: https://phabricator.services.mozilla.com/D57940
The BaseShape flag ensures a shape guard can be used to guard against frozen
elements. This is nice for ICs and Warp because it means they don't need to check
the ObjectElements flag on every dense element store.
The ObjectElements flag still exists because it's useful for assertions and JIT code
(MFallibleStoreElement, hopefully that can be removed with IonBuilder).
Without TI there are no copy-on-write and double arrays so this patch adds the
guards for those in an IsTypeInferenceEnabled() if-statement.
Differential Revision: https://phabricator.services.mozilla.com/D73610