diff --git a/components/config/prefs.rs b/components/config/prefs.rs index f1854581371..10e824241e1 100644 --- a/components/config/prefs.rs +++ b/components/config/prefs.rs @@ -346,7 +346,10 @@ mod gen { asyncstack: { enabled: bool, }, - baseline: { + baseline_interpreter: { + enabled: bool, + }, + baseline_jit: { enabled: bool, unsafe_eager_compilation: { enabled: bool, diff --git a/components/script/script_runtime.rs b/components/script/script_runtime.rs index f797a61e212..476617e05d5 100644 --- a/components/script/script_runtime.rs +++ b/components/script/script_runtime.rs @@ -530,10 +530,15 @@ unsafe fn new_rt_and_cx_with_parent( // Enable or disable the JITs. let cx_opts = &mut *ContextOptionsRef(cx); + JS_SetGlobalJitCompilerOption( + cx, + JSJitCompilerOption::JSJITCOMPILER_BASELINE_INTERPRETER_ENABLE, + pref!(js.baseline_interpreter.enabled) as u32, + ); JS_SetGlobalJitCompilerOption( cx, JSJitCompilerOption::JSJITCOMPILER_BASELINE_ENABLE, - pref!(js.baseline.enabled) as u32, + pref!(js.baseline_jit.enabled) as u32, ); JS_SetGlobalJitCompilerOption( cx, @@ -564,7 +569,7 @@ unsafe fn new_rt_and_cx_with_parent( JS_SetGlobalJitCompilerOption( cx, JSJitCompilerOption::JSJITCOMPILER_BASELINE_WARMUP_TRIGGER, - if pref!(js.baseline.unsafe_eager_compilation.enabled) { + if pref!(js.baseline_jit.unsafe_eager_compilation.enabled) { 0 } else { u32::max_value() diff --git a/ports/jniapi/src/lib.rs b/ports/jniapi/src/lib.rs index 9f2d186d57d..0178e996de1 100644 --- a/ports/jniapi/src/lib.rs +++ b/ports/jniapi/src/lib.rs @@ -7,6 +7,7 @@ mod gl_glue; mod simpleservo; +use std::collections::HashMap; use std::os::raw::{c_char, c_int, c_void}; use std::sync::Arc; use std::thread; @@ -845,13 +846,20 @@ fn get_options( }; let native_window = unsafe { ANativeWindow_fromSurface(env.get_native_interface(), surface) }; + + // FIXME: enable JIT compilation on Android after the startup crash issue (#31134) is fixed. + let mut prefs = HashMap::new(); + prefs.insert("js.baseline_interpreter.enabled".to_string(), false.into()); + prefs.insert("js.baseline_jit.enabled".to_string(), false.into()); + prefs.insert("js.ion.enabled".to_string(), false.into()); + let opts = InitOptions { args: args.unwrap_or(vec![]), coordinates, density, xr_discovery: None, surfman_integration: simpleservo::SurfmanIntegration::Widget(native_window), - prefs: None, + prefs: Some(prefs), }; Ok((opts, log, log_str, gst_debug_str)) } diff --git a/resources/prefs.json b/resources/prefs.json index 16aa45741b5..af885090165 100644 --- a/resources/prefs.json +++ b/resources/prefs.json @@ -55,8 +55,9 @@ "gfx.texture-swizzling.enabled": true, "js.asmjs.enabled": true, "js.asyncstack.enabled": false, - "js.baseline.enabled": true, - "js.baseline.unsafe_eager_compilation.enabled": false, + "js.baseline_interpreter.enabled": true, + "js.baseline_jit.enabled": true, + "js.baseline_jit.unsafe_eager_compilation.enabled": false, "js.discard_system_source.enabled": false, "js.dump_stack_on_debuggee_would_run.enabled": false, "js.ion.enabled": true,