The ARM64 Simulator can take upwards of 6 minutes to execute this test, causing intermittent timeouts.
Differential Revision: https://phabricator.services.mozilla.com/D25391
--HG--
extra : moz-landing-system : lando
This ensures the JS shell and browser behave the same way and it's nice for fuzzing.
Differential Revision: https://phabricator.services.mozilla.com/D25204
--HG--
extra : moz-landing-system : lando
1. If an object needs a custom function to |write|, it will be added to |memory|
in |JSStructuredCloneWriter| before calling the custom function. But in
JSStructuredCloneReader::startRead we did the opposite. This will cause
out-of-order if the custom function also writes some objects (e.g.
WriteStructuredCloneImageData). We fix this by keeping the same order in
|startRead|.
2. |JS_WriteTypedArray| should not call |writeTypedArray| directly, because it
will miss an entry in |memory| for the typed array itself. We fix this by calling
|startWrite| instead.
Differential Revision: https://phabricator.services.mozilla.com/D24670
--HG--
extra : moz-landing-system : lando
This was causing test failures in some uncommon try configurations like fuzzing.
Depends on D24208
Differential Revision: https://phabricator.services.mozilla.com/D25253
--HG--
extra : moz-landing-system : lando
Replacing values defined as constants in Unicode.h in the CharacterEncoding.cpp file
Differential Revision: https://phabricator.services.mozilla.com/D24601
--HG--
extra : moz-landing-system : lando
Ion can do aggressive inlining, but inlining a lot of code has a negative
effect on compilation time and memory usage. It also means we spend more time
in the slower Baseline code while compiling the Ion code off-thread or after an
invalidation.
To address this, Ion now consists of two tiers:
* Normal: the first tier (warm-up threshold of 1,000) only inlines small
functions one level deep. This tier also has recompile checks to
recompile the script when it becomes very hot.
* Full: the second tier (warm-up threshold of 100,000) is only used for very
hot code so we can afford inlining a lot more code.
This improves Speedometer and GDocs by more than 5%.
Differential Revision: https://phabricator.services.mozilla.com/D24159
--HG--
extra : moz-landing-system : lando
The old code would assert because we needed too many scratch registers, but it
was dead code until this patch.
Differential Revision: https://phabricator.services.mozilla.com/D24158
--HG--
extra : moz-landing-system : lando
We want this to be more than 100 for the full-optimizations tier. Making this
relative also works better for tests that set a small Ion warm-up threshold.
Also disables OSR in some tests depending on the old behavior.
Differential Revision: https://phabricator.services.mozilla.com/D24157
--HG--
extra : moz-landing-system : lando
Also adds a javascript.options.ion.full.threshold browser pref and similar shell
flags.
This doesn't rename the existing prefs yet.
Differential Revision: https://phabricator.services.mozilla.com/D24156
--HG--
extra : moz-landing-system : lando
In bug 256180, the size of the stack on 64-bit Windows was changed from 2MB to
8MB, and on 32-bit Windows, from 1MB to 1.5MB. This is so large that it takes
significantly longer for a runaway recursive function to throw "too much
recursion", which causes terrible performance in scripts obfuscated using
obfuscator.io.
This patch leaves the actual stack size as-is, but changes the
JS-engine-specific stack quota back to 2MB on 64-bit Windows (6MB if ASAN is
enabled). 32-bit Windows is unaffected by the new cap.
Differential Revision: https://phabricator.services.mozilla.com/D24597
--HG--
extra : moz-landing-system : lando
There's a lot of complexity around setting/unsetting the eagerCompilation flag.
It's simpler to determine this based on the warm-up threshold being 0.
The patch also fixes some jit-tests where this patch would result in a change in
behavior.
Differential Revision: https://phabricator.services.mozilla.com/D24155
--HG--
extra : moz-landing-system : lando
Storing this also in IonOptimizationLevels.h/cpp is more complicated than
necessary.
Differential Revision: https://phabricator.services.mozilla.com/D24154
--HG--
extra : moz-landing-system : lando
We used to have a different threshold for small functions but now they're both
set to 1000 so there's no need to special-case small functions.
Differential Revision: https://phabricator.services.mozilla.com/D24153
--HG--
extra : moz-landing-system : lando
Since this mode covers both incremental and zonal GC, let's rename it to
reflect that. JSGC_MODE_ZONE_INCREMENTAL.
Differential Revision: https://phabricator.services.mozilla.com/D24849
--HG--
extra : moz-landing-system : lando
StackGCVector and RootedVector are partial template specialization and cause
cargo test failure. Bypass the classes by adding them to OPAQUE_TYPES.
Depends on D23184
Differential Revision: https://phabricator.services.mozilla.com/D23185
--HG--
extra : moz-landing-system : lando
Introduce a MOZ_STACK_CLASS StackGCVector, which is
specialization of inline capacity to 8 of GCVector.
Differential Revision: https://phabricator.services.mozilla.com/D23182
--HG--
extra : moz-landing-system : lando