Skip to content
  • akling@apple.com's avatar
    Unused Structure property tables waste 14MB on Membuster. · 11193c50
    akling@apple.com authored
    <http://webkit.org/b/110854>
    <rdar://problem/13292104>
    
    Reviewed by Filip Pizlo.
    
    Turn PropertyTable into a GC object and have Structure drop unpinned tables when marking.
    14 MB progression on Membuster3.
    
    * CMakeLists.txt:
    * GNUmakefile.list.am:
    * JavaScriptCore.gypi:
    * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
    * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * Target.pri:
    
        Added PropertyTable.cpp.
    
    * runtime/PropertyTable.cpp: Added.
    (JSC::PropertyTable::create):
    (JSC::PropertyTable::clone):
    (JSC::PropertyTable::PropertyTable):
    (JSC::PropertyTable::destroy):
    (JSC::PropertyTable::~PropertyTable):
    (JSC::PropertyTable::visitChildren):
    
        Moved marking of property table values here from Structure::visitChildren().
    
    * runtime/StructureInlines.h:
    (JSC::Structure::putWillGrowOutOfLineStorage):
    (JSC::Structure::checkOffsetConsistency):
    
        Moved these to StructureInlines.h to break header dependency cycle between Structure/PropertyTable.
    
    * runtime/Structure.cpp:
    (JSC::Structure::visitChildren):
    
        Null out m_propertyTable if the table is unpinned. This'll cause the table to get GC'd.
    
    (JSC::Structure::materializePropertyMap):
    (JSC::Structure::addPropertyTransition):
    (JSC::Structure::changePrototypeTransition):
    (JSC::Structure::despecifyFunctionTransition):
    (JSC::Structure::attributeChangeTransition):
    (JSC::Structure::toDictionaryTransition):
    (JSC::Structure::preventExtensionsTransition):
    (JSC::Structure::nonPropertyTransition):
    (JSC::Structure::copyPropertyTable):
    (JSC::Structure::copyPropertyTableForPinning):
    (JSC::Structure::putSpecificValue):
    (JSC::Structure::createPropertyMap):
    * runtime/Structure.h:
    (Structure):
    * runtime/JSGlobalData.cpp:
    (JSC::JSGlobalData::JSGlobalData):
    * runtime/JSGlobalData.h:
    (JSGlobalData):
    * runtime/PropertyMapHashTable.h:
    (PropertyTable):
    (JSC::PropertyTable::createStructure):
    (JSC::PropertyTable::copy):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144054 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    11193c50