• fpizlo@apple.com's avatar
    The GC does not have a facility for profiling the kinds of objects · d6bcd37d
    fpizlo@apple.com authored
    that occupy the heap
    https://bugs.webkit.org/show_bug.cgi?id=66849
    
    Reviewed by Geoffrey Garen.
    
    Destructor calls and object scans are now optionally counted, per
    vtable. When the heap is destroyed and profiling is enabled, the
    counts are dumped, with care taken to print the names of classes
    (modulo C++ mangling) sorted in descending commonality.
    
    * GNUmakefile.list.am:
    * JavaScriptCore.exp:
    * JavaScriptCore.pro:
    * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * heap/Heap.cpp:
    (JSC::Heap::destroy):
    * heap/Heap.h:
    * heap/MarkStack.cpp:
    (JSC::SlotVisitor::visitChildren):
    (JSC::SlotVisitor::drain):
    * heap/MarkStack.h:
    * heap/MarkedBlock.cpp:
    (JSC::MarkedBlock::callDestructor):
    * heap/MarkedBlock.h:
    * heap/VTableSpectrum.cpp: Added.
    (JSC::VTableSpectrum::VTableSpectrum):
    (JSC::VTableSpectrum::~VTableSpectrum):
    (JSC::VTableSpectrum::countVPtr):
    (JSC::VTableSpectrum::count):
    (JSC::VTableAndCount::VTableAndCount):
    (JSC::VTableAndCount::operator<):
    (JSC::VTableSpectrum::dump):
    * heap/VTableSpectrum.h: Added.
    * wtf/Platform.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@93918 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d6bcd37d
MarkedBlock.h 11.8 KB