Skip to content
  • fpizlo@apple.com's avatar
    Rationalize exit site profiling for calls · a7536f9c
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=106150
    
    Reviewed by Sam Weinig.
            
    This adds two new exit kinds for calls: BadFunction and BadExecutable. The latter is not used
    yet, but is already integrated with profiling. CheckFunction uses a BadFunction speculation
    instead of BadCache, now. This allows CallLinkStatus to turn itself into a closure call status
    if we had a BadFunction exit site but the CallLinkInfo told us to use a non-closure call. This
    might happen if we had call unlinking that led to information loss along the way.
            
    No performance impact. This is meant as another step towards inlining closure calls.
    
    * bytecode/CallLinkStatus.cpp:
    * bytecode/CallLinkStatus.h:
    (JSC::CallLinkStatus::setIsProved):
    (JSC::CallLinkStatus::setHasBadFunctionExitSite):
    (CallLinkStatus):
    (JSC::CallLinkStatus::setHasBadCacheExitSite):
    (JSC::CallLinkStatus::setHasBadExecutableExitSite):
    * bytecode/ExitKind.cpp:
    (JSC::exitKindToString):
    * bytecode/ExitKind.h:
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::handleCall):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@138871 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    a7536f9c