-
barraclough@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=76855 Reviewed by Oliver Hunt. To enable the profiler, set the JSC_CODE_PROFILING environment variable to 1 (no tracing the C stack), 2 (trace one level of C code) or 3 (recursively trace all samples). The profiler requires -fomit-frame-pointer to be removed from the build flags. * JavaScriptCore.exp: - Removed an export. * JavaScriptCore.xcodeproj/project.pbxproj: - Added new files * bytecode/CodeBlock.cpp: - For baseline codeblocks, cache the result of canCompileWithDFG. * bytecode/CodeBlock.h: - For baseline codeblocks, cache the result of canCompileWithDFG. * jit/ExecutableAllocator.cpp: (JSC::ExecutableAllocator::initializeAllocator): - Notify the profiler when the allocator is created. (JSC::ExecutableAllocator::allocate): - Inform the allocated of the ownerUID. * jit/ExecutableAllocatorFixedVMPool.cpp: (JSC::ExecutableAllocator::initializeAllocator): - Notify the profiler when the allocator is created. (JSC::ExecutableAllocator::allocate): - Inform the allocated of the ownerUID. * jit/JITStubs.cpp: - If profiling, don't mask the return address in JIT code. (We do so to provide nicer backtraces in debug builds). * runtime/Completion.cpp: (JSC::evaluate): - Notify the profiler of script evaluations. * tools: Added. * tools/CodeProfile.cpp: Added. (JSC::symbolName): - Helper function to get the name of a symbol in the framework. (JSC::truncateTrace): - Helper to truncate traces into methods know to have uninformatively deep stacks. (JSC::CodeProfile::sample): - Record a stack trace classifying samples. (JSC::CodeProfile::report): - {Print profiler output. * tools/CodeProfile.h: Added. - new class, captures a set of samples associated with an evaluated script, and nested to record samples from subscripts. * tools/CodeProfiling.cpp: Added. (JSC::CodeProfiling::profilingTimer): - callback fired then a timer event occurs. (JSC::CodeProfiling::notifyAllocator): - called when the executable allocator is constructed. (JSC::CodeProfiling::getOwnerUIDForPC): - helper to lookup the codeblock from an address in JIT code (JSC::CodeProfiling::begin): - enter a profiling scope. (JSC::CodeProfiling::end): - exit a profiling scope. * tools/CodeProfiling.h: Added. - new class, instantialed from Completion to define a profiling scope. * tools/ProfileTreeNode.h: Added. - new class, used to construct a tree of samples. * tools/TieredMMapArray.h: Added. - new class, a malloc-free vector (can be used while the main thread is suspended, possibly holding the malloc heap lock). * wtf/MetaAllocator.cpp: (WTF::MetaAllocatorHandle::MetaAllocatorHandle): (WTF::MetaAllocator::allocate): - Allow allocation handles to track information about their owner. * wtf/MetaAllocator.h: (MetaAllocator): - Allow allocation handles to track information about their owner. * wtf/MetaAllocatorHandle.h: (MetaAllocatorHandle): (WTF::MetaAllocatorHandle::ownerUID): - Allow allocation handles to track information about their owner. * wtf/OSAllocator.h: (WTF::OSAllocator::reallocateCommitted): - reallocate an existing, committed memory allocation. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106197 268f45cc-cd09-0410-ab3c-d52691b4dbfc
f51cff3a