Ignore:
Timestamp:
May 7, 2016, 9:20:16 AM (9 years ago)
Author:
[email protected]
Message:

Add JSC options bytecodeRangeToJITCompile and jitWhitelist.
https://bugs.webkit.org/show_bug.cgi?id=157428

Reviewed by Michael Saboff.

  1. Added Options::bytecodeRangeToJITCompile and Options::jitWhitelist options.
  1. Moved DFGFunctionWhitelist* to FunctionWhitelist* and made it generic so that it can be used for more than one whitelist instance. In this case, we now have two: the dfgWhitelist and the jitWhitelist.
  1. Added "can compile" checks in LLInt::shouldJIT() to check Options::bytecodeRangeToJITCompile and Options::jitWhitelist.
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGDriver.cpp:

(JSC::DFG::getNumCompilations):
(JSC::DFG::ensureGlobalDFGWhitelist):
(JSC::DFG::compileImpl):

  • dfg/DFGFunctionWhitelist.cpp: Removed.
  • dfg/DFGFunctionWhitelist.h: Removed.
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::ensureGlobalJITWhitelist):
(JSC::LLInt::shouldJIT):

  • runtime/Options.h:
  • tools/FunctionWhitelist.cpp: Copied from Source/JavaScriptCore/dfg/DFGFunctionWhitelist.cpp.

(JSC::FunctionWhitelist::FunctionWhitelist):
(JSC::FunctionWhitelist::contains):
(JSC::DFG::FunctionWhitelist::ensureGlobalWhitelist): Deleted.
(JSC::DFG::FunctionWhitelist::FunctionWhitelist): Deleted.
(JSC::DFG::FunctionWhitelist::parseFunctionNamesInFile): Deleted.
(JSC::DFG::FunctionWhitelist::contains): Deleted.

  • tools/FunctionWhitelist.h: Copied from Source/JavaScriptCore/dfg/DFGFunctionWhitelist.h.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGDriver.cpp

    r198364 r200543  
    3131
    3232#include "CodeBlock.h"
    33 #include "DFGFunctionWhitelist.h"
    3433#include "DFGJITCode.h"
    3534#include "DFGPlan.h"
    3635#include "DFGThunks.h"
    3736#include "DFGWorklist.h"
     37#include "FunctionWhitelist.h"
    3838#include "JITCode.h"
    3939#include "JSCInlines.h"
     
    4141#include "TypeProfilerLog.h"
    4242#include <wtf/Atomics.h>
     43#include <wtf/NeverDestroyed.h>
    4344
    4445#if ENABLE(FTL_JIT)
     
    5657
    5758#if ENABLE(DFG_JIT)
     59static FunctionWhitelist& ensureGlobalDFGWhitelist()
     60{
     61    static LazyNeverDestroyed<FunctionWhitelist> dfgWhitelist;
     62    static std::once_flag initializeWhitelistFlag;
     63    std::call_once(initializeWhitelistFlag, [] {
     64        const char* functionWhitelistFile = Options::dfgWhitelist();
     65        dfgWhitelist.construct(functionWhitelistFile);
     66    });
     67    return dfgWhitelist;
     68}
     69
    5870static CompilationResult compileImpl(
    5971    VM& vm, CodeBlock* codeBlock, CodeBlock* profiledDFGCodeBlock, CompilationMode mode,
     
    6274{
    6375    if (!Options::bytecodeRangeToDFGCompile().isInRange(codeBlock->instructionCount())
    64         || !FunctionWhitelist::ensureGlobalWhitelist().contains(codeBlock))
     76        || !ensureGlobalDFGWhitelist().contains(codeBlock))
    6577        return CompilationFailed;
    6678   
Note: See TracChangeset for help on using the changeset viewer.