• fpizlo@apple.com's avatar
    Baseline JIT and DFG IC code generation should be unified and rationalized · 5ba07883
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=122939
    
    Reviewed by Geoffrey Garen.
            
    Introduce the JITInlineCacheGenerator, which takes a CodeBlock and a CodeOrigin plus
    some register info and creates JIT inline caches for you. Used this to even furhter
    unify the baseline and DFG ICs. In the future we can use this for FTL ICs. And my hope
    is that we'll be able to use it for cascading ICs: an IC for some instruction may realize
    that it needs to do the equivalent of get_by_id, so with this generator it will be able
    to create an IC even though it wasn't associated with a get_by_id bytecode instruction.
    
    * CMakeLists.txt:
    * GNUmakefile.list.am:
    * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * assembler/AbstractMacroAssembler.h:
    (JSC::AbstractMacroAssembler::DataLabelCompact::label):
    * bytecode/CodeBlock.h:
    (JSC::CodeBlock::ecmaMode):
    * dfg/DFGInlineCacheWrapper.h: Added.
    (JSC::DFG::InlineCacheWrapper::InlineCacheWrapper):
    * dfg/DFGInlineCacheWrapperInlines.h: Added.
    (JSC::DFG::::finalize):
    * dfg/DFGJITCompiler.cpp:
    (JSC::DFG::JITCompiler::link):
    * dfg/DFGJITCompiler.h:
    (JSC::DFG::JITCompiler::addGetById):
    (JSC::DFG::JITCompiler::addPutById):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::cachedGetById):
    (JSC::DFG::SpeculativeJIT::cachedPutById):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::cachedGetById):
    (JSC::DFG::SpeculativeJIT::cachedPutById):
    (JSC::DFG::SpeculativeJIT::compile):
    * jit/AssemblyHelpers.h:
    (JSC::AssemblyHelpers::isStrictModeFor):
    (JSC::AssemblyHelpers::strictModeFor):
    * jit/GPRInfo.h:
    (JSC::JSValueRegs::tagGPR):
    * jit/JIT.cpp:
    (JSC::JIT::JIT):
    (JSC::JIT::privateCompileSlowCases):
    (JSC::JIT::privateCompile):
    * jit/JIT.h:
    * jit/JITInlineCacheGenerator.cpp: Added.
    (JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
    (JSC::JITByIdGenerator::JITByIdGenerator):
    (JSC::JITByIdGenerator::finalize):
    (JSC::JITByIdGenerator::generateFastPathChecks):
    (JSC::JITGetByIdGenerator::generateFastPath):
    (JSC::JITPutByIdGenerator::JITPutByIdGenerator):
    (JSC::JITPutByIdGenerator::generateFastPath):
    (JSC::JITPutByIdGenerator::slowPathFunction):
    * jit/JITInlineCacheGenerator.h: Added.
    (JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
    (JSC::JITInlineCacheGenerator::stubInfo):
    (JSC::JITByIdGenerator::JITByIdGenerator):
    (JSC::JITByIdGenerator::reportSlowPathCall):
    (JSC::JITByIdGenerator::slowPathJump):
    (JSC::JITGetByIdGenerator::JITGetByIdGenerator):
    (JSC::JITPutByIdGenerator::JITPutByIdGenerator):
    * jit/JITPropertyAccess.cpp:
    (JSC::JIT::emit_op_get_by_id):
    (JSC::JIT::emitSlow_op_get_by_id):
    (JSC::JIT::emit_op_put_by_id):
    (JSC::JIT::emitSlow_op_put_by_id):
    * jit/JITPropertyAccess32_64.cpp:
    (JSC::JIT::emit_op_get_by_id):
    (JSC::JIT::emitSlow_op_get_by_id):
    (JSC::JIT::emit_op_put_by_id):
    (JSC::JIT::emitSlow_op_put_by_id):
    * jit/RegisterSet.h:
    (JSC::RegisterSet::set):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157685 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    5ba07883
DFGInlineCacheWrapper.h 1.93 KB