summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-12-03 13:56:36 +0000
committerMoonchild <moonchild@palemoon.org>2020-12-03 13:56:36 +0000
commit1a21b526928b0c5815aa3910499ac980714fa25b (patch)
tree4af73d6b72211a61873abfdb63564c7f26f73257
parent7f619fa9bfe5ff80b2244352c1f830fa3cef8cbc (diff)
downloaduxp-1a21b526928b0c5815aa3910499ac980714fa25b.tar.gz
Issue #1624 - Make ion inlining optimizations a pref.
This also adds it to JS_SetGlobalJitCompilerOption()
-rw-r--r--dom/base/nsJSUtils.cpp5
-rw-r--r--js/src/jit/JitOptions.cpp2
-rw-r--r--js/src/jsapi.cpp3
-rw-r--r--js/src/jsapi.h1
-rw-r--r--js/xpconnect/src/XPCJSContext.cpp5
-rw-r--r--modules/libpref/init/all.js1
6 files changed, 14 insertions, 3 deletions
diff --git a/dom/base/nsJSUtils.cpp b/dom/base/nsJSUtils.cpp
index d50a2adbd5..1b667326b0 100644
--- a/dom/base/nsJSUtils.cpp
+++ b/dom/base/nsJSUtils.cpp
@@ -299,10 +299,11 @@ nsJSUtils::CompileModule(JSContext* aCx,
NS_ENSURE_TRUE(xpc::Scriptability::Get(aEvaluationGlobal).Allowed(), NS_OK);
- if (!JS::CompileModule(aCx, aCompileOptions, aSrcBuf, aModule)) {
+ bool compileResult = JS::CompileModule(aCx, aCompileOptions, aSrcBuf, aModule);
+
+ if (!compileResult) {
return NS_ERROR_FAILURE;
}
-
return NS_OK;
}
diff --git a/js/src/jit/JitOptions.cpp b/js/src/jit/JitOptions.cpp
index 7521a9faee..daae3d53b5 100644
--- a/js/src/jit/JitOptions.cpp
+++ b/js/src/jit/JitOptions.cpp
@@ -96,7 +96,7 @@ DefaultJitOptions::DefaultJitOptions()
SET_DEFAULT(disableGvn, false);
// Toggles whether inlining is globally disabled.
- SET_DEFAULT(disableInlining, true);
+ SET_DEFAULT(disableInlining, false);
// Toggles whether loop invariant code motion is globally disabled.
SET_DEFAULT(disableLicm, false);
diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp
index dab4c25a43..e9f86bde10 100644
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -6607,6 +6607,9 @@ JS_SetGlobalJitCompilerOption(JSContext* cx, JSJitCompilerOption opt, uint32_t v
case JSJITCOMPILER_ION_INTERRUPT_WITHOUT_SIGNAL:
jit::JitOptions.ionInterruptWithoutSignals = !!value;
break;
+ case JSJITCOMPILER_ION_INLINING:
+ jit::JitOptions.disableInlining = !value;
+ break;
default:
break;
}
diff --git a/js/src/jsapi.h b/js/src/jsapi.h
index f8203ee1fd..1eecdbf749 100644
--- a/js/src/jsapi.h
+++ b/js/src/jsapi.h
@@ -5905,6 +5905,7 @@ JS_SetOffthreadIonCompilationEnabled(JSContext* cx, bool enabled);
Register(ION_GVN_ENABLE, "ion.gvn.enable") \
Register(ION_FORCE_IC, "ion.forceinlineCaches") \
Register(ION_ENABLE, "ion.enable") \
+ Register(ION_INLINING, "ion.inlining") \
Register(ION_INTERRUPT_WITHOUT_SIGNAL, "ion.interrupt-without-signals") \
Register(ION_CHECK_RANGE_ANALYSIS, "ion.check-range-analysis") \
Register(BASELINE_ENABLE, "baseline.enable") \
diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp
index 5dcc71e82e..9bc69c9574 100644
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim: set ts=8 sts=4 et sw=4 tw=99: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -1428,6 +1429,8 @@ ReloadPrefsCallback(const char* pref, void* data)
bool unboxedObjects = Preferences::GetBool(JS_OPTIONS_DOT_STR "unboxed_objects");
+ bool inlining = Preferences::GetBool(JS_OPTIONS_DOT_STR "ion.inlining");
+
sSharedMemoryEnabled = Preferences::GetBool(JS_OPTIONS_DOT_STR "shared_memory");
#ifdef DEBUG
@@ -1458,6 +1461,8 @@ ReloadPrefsCallback(const char* pref, void* data)
useIonEager ? 0 : -1);
JS_SetGlobalJitCompilerOption(cx, JSJITCOMPILER_UNBOXED_OBJECTS,
unboxedObjects);
+ JS_SetGlobalJitCompilerOption(cx, JSJITCOMPILER_ION_INLINING,
+ inlining);
}
XPCJSContext::~XPCJSContext()
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 7b5825d649..b8adf382b4 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1272,6 +1272,7 @@ pref("javascript.options.strict.debug", false);
pref("javascript.options.unboxed_objects", false);
pref("javascript.options.baselinejit", true);
pref("javascript.options.ion", true);
+pref("javascript.options.ion.inlining", true);
pref("javascript.options.asmjs", true);
pref("javascript.options.wasm", true);
// wasm jit crashes in 32bit builds because of 64bit casts so