-
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