From 873e82a5329dffeeef9c91d0e47cf34c41c53b03 Mon Sep 17 00:00:00 2001 From: Samson <16504129+sagudev@users.noreply.github.com> Date: Wed, 13 Nov 2024 07:50:30 +0100 Subject: [PATCH] Add `js.disable_jit` pref (#34231) Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> --- components/config/prefs.rs | 2 ++ components/script/init.rs | 4 ++++ resources/prefs.json | 1 + 3 files changed, 7 insertions(+) diff --git a/components/config/prefs.rs b/components/config/prefs.rs index d3e37f25bd4..d525f7bf4fa 100644 --- a/components/config/prefs.rs +++ b/components/config/prefs.rs @@ -435,6 +435,8 @@ mod gen { baseline_interpreter: { enabled: bool, }, + /// Whether to disable the jit within SpiderMonkey + disable_jit: bool, baseline_jit: { enabled: bool, unsafe_eager_compilation: { diff --git a/components/script/init.rs b/components/script/init.rs index badd36668bb..ec49c3f2953 100644 --- a/components/script/init.rs +++ b/components/script/init.rs @@ -3,6 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use js::jsapi::JSObject; +use servo_config::pref; use crate::dom::bindings::codegen::RegisterBindings; use crate::dom::bindings::conversions::is_dom_proxy; @@ -61,6 +62,9 @@ unsafe extern "C" fn is_dom_object(obj: *mut JSObject) -> bool { #[allow(unsafe_code)] pub fn init() -> JSEngineSetup { unsafe { + if pref!(js.disable_jit) { + js::jsapi::DisableJitBackend(); + } proxyhandler::init(); // Create the global vtables used by the (generated) DOM diff --git a/resources/prefs.json b/resources/prefs.json index 4a763c8cd6f..e2b32d24449 100644 --- a/resources/prefs.json +++ b/resources/prefs.json @@ -61,6 +61,7 @@ "js.baseline_interpreter.enabled": true, "js.baseline_jit.enabled": true, "js.baseline_jit.unsafe_eager_compilation.enabled": false, + "js.disable_jit": false, "js.discard_system_source.enabled": false, "js.dump_stack_on_debuggee_would_run.enabled": false, "js.ion.enabled": true,