diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp index 8d9de1e01a..5f5485dba2 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp @@ -301,6 +301,11 @@ LoadContextOptions(const char* aPrefName, void* /* aClosure */) useIon = false; #endif + bool useNativeRegExp = GetWorkerPref(NS_LITERAL_CSTRING("native_regexp")); +#if defined(JS_CODEGEN_LOONGARCH64) + useNativeRegExp = false; +#endif + JS::ContextOptions contextOptions; contextOptions.setAsmJS(useAsmJS) .setWasm(useWasm) @@ -308,7 +313,7 @@ LoadContextOptions(const char* aPrefName, void* /* aClosure */) NS_LITERAL_CSTRING("throw_on_asmjs_validation_failure"))) .setBaseline(GetWorkerPref(NS_LITERAL_CSTRING("baselinejit"))) .setIon(useIon) - .setNativeRegExp(GetWorkerPref(NS_LITERAL_CSTRING("native_regexp"))) + .setNativeRegExp(useNativeRegExp) .setAsyncStack(GetWorkerPref(NS_LITERAL_CSTRING("asyncstack"))) .setWerror(GetWorkerPref(NS_LITERAL_CSTRING("werror"))) .setStreams(GetWorkerPref(NS_LITERAL_CSTRING("streams"))) diff --git a/js/src/irregexp/RegExpEngine.cpp b/js/src/irregexp/RegExpEngine.cpp index 75c6f4547a..058f3ba354 100644 --- a/js/src/irregexp/RegExpEngine.cpp +++ b/js/src/irregexp/RegExpEngine.cpp @@ -1251,7 +1251,7 @@ SampleChars(FrequencyCollator* collator, const CharT* chars, size_t length) static bool IsNativeRegExpEnabled(JSContext* cx) { -#ifdef JS_CODEGEN_NONE +#if defined(JS_CODEGEN_NONE) || defined(JS_CODEGEN_LOONGARCH64) return false; #else return cx->options().nativeRegExp(); diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp index 1a102fe820..da8d6b137c 100644 --- a/js/xpconnect/src/XPCJSContext.cpp +++ b/js/xpconnect/src/XPCJSContext.cpp @@ -1426,6 +1426,7 @@ ReloadPrefsCallback(const char* pref, void* data) useAsmJS = false; useWasm = false; useWasmBaseline = false; + useNativeRegExp = false; #endif bool parallelParsing = Preferences::GetBool(JS_OPTIONS_DOT_STR "parallel_parsing"); diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index cbf3478dc1..4b240a65b0 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -1289,7 +1289,11 @@ pref("javascript.options.wasm_baselinejit", true); #else pref("javascript.options.wasm_baselinejit", false); #endif +#ifdef JS_CODEGEN_LOONGARCH64 +pref("javascript.options.native_regexp", false); +#else pref("javascript.options.native_regexp", true); +#endif pref("javascript.options.parallel_parsing", true); // asyncstack is used for debugging promises in devtools. pref("javascript.options.asyncstack", false);