1. 21 Dec, 2012 1 commit
    • fpizlo@apple.com's avatar
      DFG Arrayify slow path should be out-of-line · 97e94ddd
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=105400
      
      Reviewed by Gavin Barraclough.
              
      The interesting bit of this change is allowing out-of-line slow path generators
      to emit speculation checks. This is accomplished by having a version of
      speculationCheck() that returns a jump placeholder instead of taking a jump (or
      jump list) as an argument. You can then fill in that jump placeholder at a
      later time, so long as you do it before OSR exit linking. Slow path generators
      run before linking, so that just naturally ends up working.
              
      This isn't really a big win, but we know that out-of-lining slow paths is
      generally a good thing to do, so it's fair to assume that this is a move in the
      right direction.
      
      * CMakeLists.txt:
      * GNUmakefile.list.am:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * Target.pri:
      * dfg/DFGArrayifySlowPathGenerator.h: Added.
      (DFG):
      (ArrayifySlowPathGenerator):
      (JSC::DFG::ArrayifySlowPathGenerator::ArrayifySlowPathGenerator):
      (JSC::DFG::ArrayifySlowPathGenerator::generateInternal):
      * dfg/DFGOSRExitJumpPlaceholder.cpp: Added.
      (DFG):
      (JSC::DFG::OSRExitJumpPlaceholder::fill):
      * dfg/DFGOSRExitJumpPlaceholder.h: Added.
      (DFG):
      (OSRExitJumpPlaceholder):
      (JSC::DFG::OSRExitJumpPlaceholder::OSRExitJumpPlaceholder):
      (JSC::DFG::OSRExitJumpPlaceholder::operator!):
      * dfg/DFGSpeculativeJIT.cpp:
      (JSC::DFG::SpeculativeJIT::speculationCheck):
      (DFG):
      (JSC::DFG::SpeculativeJIT::arrayify):
      * dfg/DFGSpeculativeJIT.h:
      (SpeculativeJIT):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@138399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      97e94ddd