Ignore:
Timestamp:
Jul 24, 2013, 9:05:18 PM (12 years ago)
Author:
[email protected]
Message:

fourthTier: FTL should be able to generate LLVM IR that uses an intrinsic for OSR exit
https://bugs.webkit.org/show_bug.cgi?id=118948

Source/JavaScriptCore:

Reviewed by Sam Weinig.

  • Add the ability to generate LLVM IR but then not use it, via --llvmAlwaysFails=true. This allows doing "what if" experiments with IR generation, even if the generated IR can't yet execute.
  • Add an OSR exit path that just calls an intrinsic that combines the branch and the off-ramp.

(JSC::DFG::Plan::compileInThreadImpl):

  • ftl/FTLFail.cpp: Added.

(FTL):
(JSC::FTL::fail):

  • ftl/FTLFail.h: Added.

(FTL):

  • ftl/FTLIntrinsicRepository.h:

(FTL):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::LowerDFGToLLVM::emitOSRExitCall):

  • runtime/Options.h:

(JSC):

Tools:

Reviewed by Sam Weinig.

  • Make ReducedFTL capable of dealing with code that uses the fake OSR exit intrinsic, by exporting it as a function.
  • Make combineModules.rb idempotent. Sometimes it's convenient to run a file through it even if you know that you've already done so. See processIRDump.sh.
  • Add a script, processIRDump.sh, that takes the output of --dumpLLVMIR=true and runs it through ReducedFTL automatically. You typically want to say something like:

jsc --dumpLLVMIR=true <program(s)> > jsc-output.txt
./processIRDump.sh --timing < jsc-output.txt

  • ReducedFTL/ReducedFTL.c:

(webkit_osr_exit):

  • ReducedFTL/combineModules.rb:
  • ReducedFTL/processIRDump.sh: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/Options.h

    r153274 r153289  
    123123    v(bool, ftlTrapsOnOSRExit, false) \
    124124    v(bool, ftlOSRExitOmitsMarshalling, false) \
     125    v(bool, useLLVMOSRExitIntrinsic, false) \
    125126    v(bool, dumpLLVMIR, false) \
     127    v(bool, llvmAlwaysFails, false) \
    126128    v(unsigned, llvmBackendOptimizationLevel, 2) \
    127129    v(unsigned, llvmOptimizationLevel, 2) \
Note: See TracChangeset for help on using the changeset viewer.