Changeset 244505 in webkit


Ignore:
Timestamp:
Apr 22, 2019 11:30:16 AM (5 years ago)
Author:
ysuzuki@apple.com
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:
Location:
trunk/Source/JavaScriptCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r244501 r244505  
     12019-04-22  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] useJIT should subsume useRegExpJIT
     4        https://bugs.webkit.org/show_bug.cgi?id=197153
     5
     6        Reviewed by Alex Christensen.
     7
     8        useJIT should subsume useRegExpJIT. We should immediately disable JIT feature if useJIT = false,
     9        even if useRegExpJIT is true.
     10
     11        * dfg/DFGCapabilities.cpp:
     12        (JSC::DFG::isSupported):
     13        * runtime/Options.cpp:
     14        (JSC::recomputeDependentOptions):
     15        * runtime/RegExp.cpp:
     16        (JSC::RegExp::compile):
     17        (JSC::RegExp::compileMatchOnly):
     18        * runtime/VM.cpp:
     19        (JSC::enableAssembler):
     20        (JSC::VM::canUseRegExpJIT): Deleted.
     21        * runtime/VM.h:
     22
    1232019-04-22  Basuke Suzuki  <basuke.suzuki@sony.com>
    224
  • trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp

    r243127 r244505  
    3939bool isSupported()
    4040{
    41     return Options::useDFGJIT()
    42         && MacroAssembler::supportsFloatingPoint();
     41    return VM::canUseJIT() && Options::useDFGJIT() && MacroAssembler::supportsFloatingPoint();
    4342}
    4443
  • trunk/Source/JavaScriptCore/runtime/Options.cpp

    r244233 r244505  
    393393    Options::useLLInt() = true;
    394394    Options::useJIT() = false;
     395    Options::useBaselineJIT() = false;
    395396    Options::useDFGJIT() = false;
    396397    Options::useFTLJIT() = false;
    397398    Options::useDOMJIT() = false;
     399    Options::useRegExpJIT() = false;
     400#endif
     401#if !ENABLE(CONCURRENT_JS)
     402    Options::useConcurrentJIT() = false;
    398403#endif
    399404#if !ENABLE(YARR_JIT)
    400405    Options::useRegExpJIT() = false;
    401 #endif
    402 #if !ENABLE(CONCURRENT_JS)
    403     Options::useConcurrentJIT() = false;
    404406#endif
    405407#if !ENABLE(DFG_JIT)
     
    413415#if !CPU(X86_64) && !CPU(ARM64)
    414416    Options::useConcurrentGC() = false;
    415 #endif
    416    
    417 #if ENABLE(JIT) && CPU(X86)
    418     // Disable JIT on IA-32 if SSE2 is not present
    419     if (!MacroAssemblerX86::supportsFloatingPoint())
    420         Options::useJIT() = false;
    421417#endif
    422418
  • trunk/Source/JavaScriptCore/runtime/RegExp.cpp

    r243642 r244505  
    259259
    260260#if ENABLE(YARR_JIT)
    261     if (!pattern.containsUnsignedLengthPattern() && VM::canUseRegExpJIT()
     261    if (!pattern.containsUnsignedLengthPattern() && VM::canUseJIT() && Options::useRegExpJIT()
    262262#if !ENABLE(YARR_JIT_BACKREFERENCES)
    263263        && !pattern.m_containsBackreferences
     
    317317
    318318#if ENABLE(YARR_JIT)
    319     if (!pattern.containsUnsignedLengthPattern() && VM::canUseRegExpJIT()
     319    if (!pattern.containsUnsignedLengthPattern() && VM::canUseJIT() && Options::useRegExpJIT()
    320320#if !ENABLE(YARR_JIT_BACKREFERENCES)
    321321        && !pattern.m_containsBackreferences
  • trunk/Source/JavaScriptCore/runtime/VM.cpp

    r243925 r244505  
    191191static bool enableAssembler()
    192192{
    193     if (!Options::useJIT() && !Options::useRegExpJIT())
     193    if (!Options::useJIT())
    194194        return false;
    195195
     
    231231#endif
    232232    s_canUseJIT = VM::canUseAssembler() && Options::useJIT();
    233 #endif
    234 }
    235 
    236 bool VM::canUseRegExpJIT()
    237 {
    238 #if ENABLE(YARR_JIT)
    239     static std::once_flag onceKey;
    240     static bool enabled = false;
    241     std::call_once(onceKey, [] {
    242         enabled = VM::canUseAssembler() && Options::useRegExpJIT();
    243     });
    244     return enabled;
    245 #else
    246     return false; // interpreter only
    247233#endif
    248234}
  • trunk/Source/JavaScriptCore/runtime/VM.h

    r243886 r244505  
    634634
    635635    static JS_EXPORT_PRIVATE bool canUseAssembler();
    636     static JS_EXPORT_PRIVATE bool canUseRegExpJIT();
    637636    static JS_EXPORT_PRIVATE bool isInMiniMode();
    638637
Note: See TracChangeset for help on using the changeset viewer.