-
ggaren@apple.com authored
Patch by Geoffrey Garen <ggaren@apple.com> on 2009-10-09 Reviewed by Sam Weinig. SunSpider says maybe 1.03x faster. * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of a Structure's prototype the direct responsility of the object using it. (Giving Structure a mark function was misleading because it implied that all live structures get marked during GC, when they don't.) * runtime/JSGlobalObject.cpp: (JSC::markIfNeeded): (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored on the global object. Maybe this wasn't necessary, but now we don't have to wonder. * runtime/JSObject.cpp: (JSC::JSObject::getPropertyNames): (JSC::JSObject::getOwnPropertyNames): (JSC::JSObject::getEnumerableNamesFromClassInfoTable): * runtime/JSObject.h: (JSC::JSObject::markChildrenDirect): * runtime/PropertyNameArray.h: * runtime/Structure.cpp: * runtime/Structure.h: (JSC::Structure::setEnumerationCache): (JSC::Structure::enumerationCache): Moved property name gathering code from Structure to JSObject because having a Structure iterate its JSObject was a layering violation. A JSObject is implemented using a Structure; not the other way around. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
a850b060