Migrated some code that didn't belong out of Structure.
Patch by Geoffrey Garen <[email protected]> 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.
(JSC::JSObject::getPropertyNames):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::getEnumerableNamesFromClassInfoTable):
(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.