Title: [244505] trunk/Source/_javascript_Core
Revision
244505
Author
ysuz...@apple.com
Date
2019-04-22 11:30:16 -0700 (Mon, 22 Apr 2019)

Log Message

[JSC] useJIT should subsume useRegExpJIT
https://bugs.webkit.org/show_bug.cgi?id=197153

Reviewed by Alex Christensen.

useJIT should subsume useRegExpJIT. We should immediately disable JIT feature if useJIT = false,
even if useRegExpJIT is true.

* dfg/DFGCapabilities.cpp:
(JSC::DFG::isSupported):
* runtime/Options.cpp:
(JSC::recomputeDependentOptions):
* runtime/RegExp.cpp:
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):
* runtime/VM.cpp:
(JSC::enableAssembler):
(JSC::VM::canUseRegExpJIT): Deleted.
* runtime/VM.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (244504 => 244505)


--- trunk/Source/_javascript_Core/ChangeLog	2019-04-22 18:29:40 UTC (rev 244504)
+++ trunk/Source/_javascript_Core/ChangeLog	2019-04-22 18:30:16 UTC (rev 244505)
@@ -1,3 +1,25 @@
+2019-04-22  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [JSC] useJIT should subsume useRegExpJIT
+        https://bugs.webkit.org/show_bug.cgi?id=197153
+
+        Reviewed by Alex Christensen.
+
+        useJIT should subsume useRegExpJIT. We should immediately disable JIT feature if useJIT = false,
+        even if useRegExpJIT is true.
+
+        * dfg/DFGCapabilities.cpp:
+        (JSC::DFG::isSupported):
+        * runtime/Options.cpp:
+        (JSC::recomputeDependentOptions):
+        * runtime/RegExp.cpp:
+        (JSC::RegExp::compile):
+        (JSC::RegExp::compileMatchOnly):
+        * runtime/VM.cpp:
+        (JSC::enableAssembler):
+        (JSC::VM::canUseRegExpJIT): Deleted.
+        * runtime/VM.h:
+
 2019-04-22  Basuke Suzuki  <basuke.suz...@sony.com>
 
         [PlayStation] Restructuring Remote Inspector classes to support multiple platform.

Modified: trunk/Source/_javascript_Core/dfg/DFGCapabilities.cpp (244504 => 244505)


--- trunk/Source/_javascript_Core/dfg/DFGCapabilities.cpp	2019-04-22 18:29:40 UTC (rev 244504)
+++ trunk/Source/_javascript_Core/dfg/DFGCapabilities.cpp	2019-04-22 18:30:16 UTC (rev 244505)
@@ -38,8 +38,7 @@
 
 bool isSupported()
 {
-    return Options::useDFGJIT()
-        && MacroAssembler::supportsFloatingPoint();
+    return VM::canUseJIT() && Options::useDFGJIT() && MacroAssembler::supportsFloatingPoint();
 }
 
 bool isSupportedForInlining(CodeBlock* codeBlock)

Modified: trunk/Source/_javascript_Core/runtime/Options.cpp (244504 => 244505)


--- trunk/Source/_javascript_Core/runtime/Options.cpp	2019-04-22 18:29:40 UTC (rev 244504)
+++ trunk/Source/_javascript_Core/runtime/Options.cpp	2019-04-22 18:30:16 UTC (rev 244505)
@@ -392,16 +392,18 @@
 #if !ENABLE(JIT)
     Options::useLLInt() = true;
     Options::useJIT() = false;
+    Options::useBaselineJIT() = false;
     Options::useDFGJIT() = false;
     Options::useFTLJIT() = false;
     Options::useDOMJIT() = false;
-#endif
-#if !ENABLE(YARR_JIT)
     Options::useRegExpJIT() = false;
 #endif
 #if !ENABLE(CONCURRENT_JS)
     Options::useConcurrentJIT() = false;
 #endif
+#if !ENABLE(YARR_JIT)
+    Options::useRegExpJIT() = false;
+#endif
 #if !ENABLE(DFG_JIT)
     Options::useDFGJIT() = false;
     Options::useFTLJIT() = false;
@@ -413,12 +415,6 @@
 #if !CPU(X86_64) && !CPU(ARM64)
     Options::useConcurrentGC() = false;
 #endif
-    
-#if ENABLE(JIT) && CPU(X86)
-    // Disable JIT on IA-32 if SSE2 is not present
-    if (!MacroAssemblerX86::supportsFloatingPoint())
-        Options::useJIT() = false;
-#endif
 
     if (!Options::useJIT()) {
         Options::useSigillCrashAnalyzer() = false;

Modified: trunk/Source/_javascript_Core/runtime/RegExp.cpp (244504 => 244505)


--- trunk/Source/_javascript_Core/runtime/RegExp.cpp	2019-04-22 18:29:40 UTC (rev 244504)
+++ trunk/Source/_javascript_Core/runtime/RegExp.cpp	2019-04-22 18:30:16 UTC (rev 244505)
@@ -258,7 +258,7 @@
     }
 
 #if ENABLE(YARR_JIT)
-    if (!pattern.containsUnsignedLengthPattern() && VM::canUseRegExpJIT()
+    if (!pattern.containsUnsignedLengthPattern() && VM::canUseJIT() && Options::useRegExpJIT()
 #if !ENABLE(YARR_JIT_BACKREFERENCES)
         && !pattern.m_containsBackreferences
 #endif
@@ -316,7 +316,7 @@
     }
 
 #if ENABLE(YARR_JIT)
-    if (!pattern.containsUnsignedLengthPattern() && VM::canUseRegExpJIT()
+    if (!pattern.containsUnsignedLengthPattern() && VM::canUseJIT() && Options::useRegExpJIT()
 #if !ENABLE(YARR_JIT_BACKREFERENCES)
         && !pattern.m_containsBackreferences
 #endif

Modified: trunk/Source/_javascript_Core/runtime/VM.cpp (244504 => 244505)


--- trunk/Source/_javascript_Core/runtime/VM.cpp	2019-04-22 18:29:40 UTC (rev 244504)
+++ trunk/Source/_javascript_Core/runtime/VM.cpp	2019-04-22 18:30:16 UTC (rev 244505)
@@ -190,7 +190,7 @@
 #if ENABLE(ASSEMBLER)
 static bool enableAssembler()
 {
-    if (!Options::useJIT() && !Options::useRegExpJIT())
+    if (!Options::useJIT())
         return false;
 
     char* canUseJITString = getenv("_javascript_CoreUseJIT");
@@ -233,20 +233,6 @@
 #endif
 }
 
-bool VM::canUseRegExpJIT()
-{
-#if ENABLE(YARR_JIT)
-    static std::once_flag onceKey;
-    static bool enabled = false;
-    std::call_once(onceKey, [] {
-        enabled = VM::canUseAssembler() && Options::useRegExpJIT();
-    });
-    return enabled;
-#else
-    return false; // interpreter only
-#endif
-}
-
 bool VM::isInMiniMode()
 {
     return !canUseJIT() || Options::forceMiniVMMode();

Modified: trunk/Source/_javascript_Core/runtime/VM.h (244504 => 244505)


--- trunk/Source/_javascript_Core/runtime/VM.h	2019-04-22 18:29:40 UTC (rev 244504)
+++ trunk/Source/_javascript_Core/runtime/VM.h	2019-04-22 18:30:16 UTC (rev 244505)
@@ -633,7 +633,6 @@
     };
 
     static JS_EXPORT_PRIVATE bool canUseAssembler();
-    static JS_EXPORT_PRIVATE bool canUseRegExpJIT();
     static JS_EXPORT_PRIVATE bool isInMiniMode();
 
     static void computeCanUseJIT();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to