Skip to content
  • fpizlo@apple.com's avatar
    Never use ReturnPC for exception handling and quit using exception check... · 48a7bc89
    fpizlo@apple.com authored
    Never use ReturnPC for exception handling and quit using exception check indices as a lame replica of the CodeOrigin index
    https://bugs.webkit.org/show_bug.cgi?id=121734
    
    Reviewed by Mark Hahnenberg.
            
    Exception handling can deduce where the exception was thrown from by looking at the
    code origin that was stored into the call frame header. There is no need to pass any
    additional meta-data into the exception throwing logic. But the DFG was still doing it
    anyway.
            
    This removes all of the logic to pass extra meta-data into lookupExceptionHandler()
    and friends. It simplifies a lot of code.
    
    * CMakeLists.txt:
    * GNUmakefile.list.am:
    * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * Target.pri:
    * bytecode/CodeBlock.cpp:
    (JSC::CodeBlock::shrinkToFit):
    * bytecode/CodeBlock.h:
    (JSC::CodeBlock::codeOrigins):
    (JSC::CodeBlock::hasCodeOrigins):
    (JSC::CodeBlock::canGetCodeOrigin):
    (JSC::CodeBlock::codeOrigin):
    * bytecode/CodeOrigin.h:
    (JSC::InlineCallFrame::InlineCallFrame):
    * bytecode/InlineCallFrameSet.cpp: Added.
    (JSC::InlineCallFrameSet::InlineCallFrameSet):
    (JSC::InlineCallFrameSet::~InlineCallFrameSet):
    (JSC::InlineCallFrameSet::add):
    (JSC::InlineCallFrameSet::shrinkToFit):
    * bytecode/InlineCallFrameSet.h: Added.
    (JSC::InlineCallFrameSet::isEmpty):
    (JSC::InlineCallFrameSet::size):
    (JSC::InlineCallFrameSet::at):
    * dfg/DFGArgumentsSimplificationPhase.cpp:
    (JSC::DFG::ArgumentsSimplificationPhase::run):
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
    * dfg/DFGCommonData.cpp:
    (JSC::DFG::CommonData::addCodeOrigin):
    (JSC::DFG::CommonData::shrinkToFit):
    * dfg/DFGCommonData.h:
    * dfg/DFGDesiredWriteBarriers.cpp:
    (JSC::DFG::DesiredWriteBarrier::DesiredWriteBarrier):
    (JSC::DFG::DesiredWriteBarrier::trigger):
    * dfg/DFGDesiredWriteBarriers.h:
    (JSC::DFG::DesiredWriteBarriers::add):
    (JSC::DFG::initializeLazyWriteBarrierForInlineCallFrameExecutable):
    (JSC::DFG::initializeLazyWriteBarrierForInlineCallFrameCallee):
    * dfg/DFGGraph.cpp:
    (JSC::DFG::Graph::Graph):
    * dfg/DFGGraph.h:
    * dfg/DFGJITCompiler.cpp:
    (JSC::DFG::JITCompiler::JITCompiler):
    (JSC::DFG::JITCompiler::compileExceptionHandlers):
    (JSC::DFG::JITCompiler::link):
    (JSC::DFG::JITCompiler::compileFunction):
    * dfg/DFGJITCompiler.h:
    (JSC::DFG::JITCompiler::emitStoreCodeOrigin):
    (JSC::DFG::JITCompiler::exceptionCheck):
    (JSC::DFG::JITCompiler::fastExceptionCheck):
    * dfg/DFGOperations.cpp:
    * dfg/DFGOperations.h:
    * dfg/DFGRepatch.cpp:
    (JSC::DFG::tryBuildGetByIDList):
    * dfg/DFGSpeculativeJIT.h:
    (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheck):
    (JSC::DFG::SpeculativeJIT::appendCallSetResult):
    (JSC::DFG::SpeculativeJIT::appendCall):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::emitCall):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::emitCall):
    * dfg/DFGVirtualRegisterAllocationPhase.cpp:
    (JSC::DFG::VirtualRegisterAllocationPhase::run):
    * ftl/FTLLowerDFGToLLVM.cpp:
    (JSC::FTL::LowerDFGToLLVM::callPreflight):
    * jit/AssemblyHelpers.h:
    (JSC::AssemblyHelpers::emitExceptionCheck):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156300 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    48a7bc89