-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=104497 Reviewed by Oliver Hunt. Source/JavaScriptCore: This adds support for profiling OSR exits. For each exit that is taken, the profiler records the machine code address that the exit occurred on, the exit kind, the origin stack, and the number of times that it happened. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * assembler/AbstractMacroAssembler.h: (Jump): (JSC::AbstractMacroAssembler::Jump::label): * bytecode/CodeBlock.h: (JSC::CodeBlock::saveCompilation): (CodeBlock): (JSC::CodeBlock::compilation): (DFGData): * bytecode/DFGExitProfile.h: (DFG): * bytecode/ExitKind.cpp: Added. (JSC): (JSC::exitKindToString): (JSC::exitKindIsCountable): (WTF): (WTF::printInternal): * bytecode/ExitKind.h: Added. (JSC): (WTF): * dfg/DFGGraph.h: (Graph): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::linkOSRExits): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): * dfg/DFGJITCompiler.h: (JITCompiler): * dfg/DFGOSRExitCompiler.cpp: * jit/JIT.cpp: (JSC::JIT::JIT): (JSC::JIT::privateCompile): * jit/JIT.h: (JIT): * jit/JumpReplacementWatchpoint.h: (JSC::JumpReplacementWatchpoint::sourceLabel): (JumpReplacementWatchpoint): * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::addOSRExitSite): (Profiler): (JSC::Profiler::Compilation::addOSRExit): (JSC::Profiler::Compilation::toJS): * profiler/ProfilerCompilation.h: (Compilation): * profiler/ProfilerDatabase.cpp: (JSC::Profiler::Database::newCompilation): * profiler/ProfilerDatabase.h: (Database): * profiler/ProfilerOSRExit.cpp: Added. (Profiler): (JSC::Profiler::OSRExit::OSRExit): (JSC::Profiler::OSRExit::~OSRExit): (JSC::Profiler::OSRExit::toJS): * profiler/ProfilerOSRExit.h: Added. (Profiler): (OSRExit): (JSC::Profiler::OSRExit::id): (JSC::Profiler::OSRExit::origin): (JSC::Profiler::OSRExit::exitKind): (JSC::Profiler::OSRExit::isWatchpoint): (JSC::Profiler::OSRExit::counterAddress): (JSC::Profiler::OSRExit::count): * profiler/ProfilerOSRExitSite.cpp: Added. (Profiler): (JSC::Profiler::OSRExitSite::toJS): * profiler/ProfilerOSRExitSite.h: Added. (Profiler): (OSRExitSite): (JSC::Profiler::OSRExitSite::OSRExitSite): (JSC::Profiler::OSRExitSite::codeAddress): * runtime/CommonIdentifiers.h: Tools: Adds support for displaying OSR exit information for full summary (just displays the counts and the number of recompilations), bytecode display (says which bytecodes exited), and DFG display (annotates disassembly with taken OSR exits and their counts). * Scripts/display-profiler-output: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@137175 268f45cc-cd09-0410-ab3c-d52691b4dbfc
d2deec81