Ignore:
Timestamp:
Oct 16, 2008, 7:57:02 PM (17 years ago)
Author:
[email protected]
Message:

2008-10-16 Sam Weinig <[email protected]>

Reviewed by Maciej Stachowiak.

Fix for https://bugs.webkit.org/show_bug.cgi?id=21683
Don't create intermediate StructureIDs for builtin objects

First step in reduce number of StructureIDs created when initializing the
JSGlobalObject.

  • In order to avoid creating the intermediate StructureIDs use the new putDirectWithoutTransition and putDirectFunctionWithoutTransition to add properties to JSObjects without transitioning the StructureID. This patch just implements this strategy for ObjectPrototype but alone reduces the number of StructureIDs create for about:blank by 10, from 142 to 132.
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset):
  • kjs/JSObject.cpp: (JSC::JSObject::putDirectFunctionWithoutTransition):
  • kjs/JSObject.h: (JSC::JSObject::putDirectWithoutTransition):
  • kjs/ObjectPrototype.cpp: (JSC::ObjectPrototype::ObjectPrototype):
  • kjs/ObjectPrototype.h:
  • kjs/StructureID.cpp: (JSC::StructureID::addPropertyWithoutTransition):
  • kjs/StructureID.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/JSObject.cpp

    r37400 r37645  
    491491}
    492492
     493void JSObject::putDirectFunctionWithoutTransition(ExecState* exec, InternalFunction* function, unsigned attr)
     494{
     495    putDirectWithoutTransition(Identifier(exec, function->name(&exec->globalData())), function, attr);
     496}
     497
    493498NEVER_INLINE void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSValue** location)
    494499{
Note: See TracChangeset for help on using the changeset viewer.