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,