-
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