Skip to content
  • fpizlo@apple.com's avatar
    Get rid of the lastResultRegister optimization in the baseline JIT · 9a5ab80f
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=124171
    
    Rubber stamped by Mark Hahnenberg.
            
    The baseline JIT no longer needs amazing throughput. And this optimization has caused
    way too many OSR exit bugs. And it constrains how much we can do in the DFG/FTL. So,
    I'm getting rid of it.
    
    * dfg/DFGOSRExit.cpp:
    (JSC::DFG::OSRExit::OSRExit):
    (JSC::DFG::OSRExit::convertToForward):
    * dfg/DFGOSRExit.h:
    * dfg/DFGOSRExitCompiler32_64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOSRExitCompiler64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGSpeculativeJIT.cpp:
    (JSC::DFG::SpeculativeJIT::SpeculativeJIT):
    (JSC::DFG::SpeculativeJIT::compileMovHint):
    (JSC::DFG::SpeculativeJIT::compileCurrentBlock):
    * dfg/DFGSpeculativeJIT.h:
    * ftl/FTLLowerDFGToLLVM.cpp:
    (JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
    (JSC::FTL::LowerDFGToLLVM::compileZombieHint):
    (JSC::FTL::LowerDFGToLLVM::compileInvalidationPoint):
    (JSC::FTL::LowerDFGToLLVM::appendOSRExit):
    (JSC::FTL::LowerDFGToLLVM::observeMovHint):
    * ftl/FTLOSRExit.cpp:
    (JSC::FTL::OSRExit::OSRExit):
    (JSC::FTL::OSRExit::convertToForward):
    * ftl/FTLOSRExit.h:
    * ftl/FTLOSRExitCompiler.cpp:
    (JSC::FTL::compileStub):
    * jit/JIT.cpp:
    (JSC::JIT::JIT):
    (JSC::JIT::privateCompileMainPass):
    (JSC::JIT::privateCompileSlowCases):
    * jit/JIT.h:
    (JSC::JIT::appendCall):
    * jit/JITArithmetic32_64.cpp:
    (JSC::JIT::emit_op_lshift):
    (JSC::JIT::emitRightShift):
    (JSC::JIT::emit_op_bitand):
    (JSC::JIT::emit_op_bitor):
    (JSC::JIT::emit_op_bitxor):
    (JSC::JIT::emit_op_inc):
    (JSC::JIT::emit_op_dec):
    * jit/JITCall.cpp:
    (JSC::JIT::emitPutCallResult):
    (JSC::JIT::compileLoadVarargs):
    * jit/JITInlines.h:
    (JSC::JIT::emitGetFromCallFrameHeaderPtr):
    (JSC::JIT::emitGetFromCallFrameHeader32):
    (JSC::JIT::emitGetFromCallFrameHeader64):
    (JSC::JIT::emitLoadTag):
    (JSC::JIT::emitLoadPayload):
    (JSC::JIT::emitLoad2):
    (JSC::JIT::emitGetVirtualRegister):
    (JSC::JIT::emitGetVirtualRegisters):
    (JSC::JIT::emitPutVirtualRegister):
    * jit/JITOpcodes.cpp:
    (JSC::JIT::emit_op_mov):
    (JSC::JIT::emit_op_catch):
    (JSC::JIT::emit_op_new_func):
    * jit/JITOpcodes32_64.cpp:
    (JSC::JIT::emit_op_mov):
    (JSC::JIT::emit_op_to_primitive):
    (JSC::JIT::emit_op_to_number):
    (JSC::JIT::emit_op_catch):
    * jit/JITPropertyAccess.cpp:
    (JSC::JIT::emit_op_resolve_scope):
    (JSC::JIT::emit_op_get_from_scope):
    (JSC::JIT::emit_op_put_to_scope):
    * jit/JITPropertyAccess32_64.cpp:
    (JSC::JIT::emit_op_get_by_val):
    (JSC::JIT::emit_op_get_by_id):
    (JSC::JIT::emit_op_get_by_pname):
    (JSC::JIT::emitResolveClosure):
    (JSC::JIT::emit_op_resolve_scope):
    (JSC::JIT::emit_op_get_from_scope):
    (JSC::JIT::emit_op_init_global_const):
    * jit/SlowPathCall.h:
    (JSC::JITSlowPathCall::call):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159091 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    9a5ab80f