Bug 1523015 - Summary: Enable Ion on ARM64, but disable in-browser by pref. r=nbp

Differential Revision: https://phabricator.services.mozilla.com/D19448

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Sean Stangl 2019-02-12 22:50:27 +00:00
Родитель c4234efebc
Коммит c82dda2439
6 изменённых файлов: 23 добавлений и 9 удалений

Просмотреть файл

@ -19,9 +19,15 @@ class JS_PUBLIC_API ContextOptions {
public:
ContextOptions()
: baseline_(true),
#ifdef JS_CODEGEN_ARM64
ion_(false),
asmJS_(false),
wasm_(false),
#else
ion_(true),
asmJS_(true),
wasm_(true),
#endif
wasmVerbose_(false),
wasmBaseline_(true),
wasmIon_(true),

Просмотреть файл

@ -9,13 +9,6 @@ function jitTogglesMatch(opts) {
if (k.indexOf(".enable") > 0 && opts[k] != currentOpts[k])
return false;
}
// ARM64 does not yet have an Ion code generator, so return false if
// ion.enable is requested.
var conf = getBuildConfiguration();
if (conf['arm64'] && opts['ion.enable'])
return false;
return true;
}

Просмотреть файл

@ -1,3 +1,4 @@
// |jit-test| skip-if: !this.getJitCompilerOptions() || !this.getJitCompilerOptions()['ion.enable']
load(libdir + "asserts.js");
var oldOpts = getJitCompilerOptions();
for (var k in oldOpts)

Просмотреть файл

@ -160,8 +160,7 @@ void LinkIonScript(JSContext* cx, HandleScript calleescript);
uint8_t* LazyLinkTopActivation(JSContext* cx, LazyLinkExitFrameLayout* frame);
static inline bool IsIonEnabled(JSContext* cx) {
// The ARM64 Ion engine is not yet implemented.
#if defined(JS_CODEGEN_NONE) || defined(JS_CODEGEN_ARM64)
#if defined(JS_CODEGEN_NONE)
return false;
#else
return cx->options().ion() && cx->options().baseline() &&

Просмотреть файл

@ -9843,14 +9843,25 @@ static MOZ_MUST_USE bool ProcessArgs(JSContext* cx, OptionParser* op) {
static bool SetContextOptions(JSContext* cx, const OptionParser& op) {
enableBaseline = !op.getBoolOption("no-baseline");
#ifdef JS_CODEGEN_ARM64
// TODO: Enable Ion by default.
enableIon = false;
enableAsmJS = false;
#else
enableIon = !op.getBoolOption("no-ion");
enableAsmJS = !op.getBoolOption("no-asmjs");
#endif
enableNativeRegExp = !op.getBoolOption("no-native-regexp");
// Default values for wasm.
enableWasm = true;
enableWasmBaseline = true;
#ifdef JS_CODEGEN_ARM64
// TODO: Enable WasmIon by default.
enableWasmIon = false;
#else
enableWasmIon = true;
#endif
if (const char* str = op.getStringOption("wasm-compiler")) {
if (strcmp(str, "none") == 0) {
enableWasm = false;

Просмотреть файл

@ -1462,7 +1462,11 @@ pref("javascript.options.unboxed_objects", false);
pref("javascript.options.baselinejit", true);
//Duplicated in JitOptions - ensure both match.
pref("javascript.options.baselinejit.threshold", 10);
#ifdef _ARM64_
pref("javascript.options.ion", false);
#else
pref("javascript.options.ion", true);
#endif
//Duplicated in JitOptions - ensure both match.
pref("javascript.options.ion.threshold", 1000);
//Duplicated in JitOptions - ensure both match.