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