Ignore:
Timestamp:
Oct 20, 2008, 2:27:44 PM (17 years ago)
Author:
[email protected]
Message:

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

Reviewed by Cameron Zwarich.

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

Second stage in reduce number of StructureIDs created when initializing the
JSGlobalObject.

  • Use putDirectWithoutTransition for the remaining singleton objects to reduce the number of StructureIDs create for about:blank from 132 to 73.
  • kjs/ArrayConstructor.cpp: (JSC::ArrayConstructor::ArrayConstructor):
  • kjs/BooleanConstructor.cpp: (JSC::BooleanConstructor::BooleanConstructor):
  • kjs/BooleanPrototype.cpp: (JSC::BooleanPrototype::BooleanPrototype):
  • kjs/DateConstructor.cpp: (JSC::DateConstructor::DateConstructor):
  • kjs/ErrorConstructor.cpp: (JSC::ErrorConstructor::ErrorConstructor):
  • kjs/ErrorPrototype.cpp: (JSC::ErrorPrototype::ErrorPrototype):
  • kjs/FunctionConstructor.cpp: (JSC::FunctionConstructor::FunctionConstructor):
  • kjs/FunctionPrototype.cpp: (JSC::FunctionPrototype::FunctionPrototype): (JSC::FunctionPrototype::addFunctionProperties):
  • kjs/FunctionPrototype.h: (JSC::FunctionPrototype::createStructureID):
  • kjs/InternalFunction.cpp:
  • kjs/InternalFunction.h: (JSC::InternalFunction::InternalFunction):
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset):
  • kjs/JSObject.h:
  • kjs/MathObject.cpp: (JSC::MathObject::MathObject):
  • kjs/NumberConstructor.cpp: (JSC::NumberConstructor::NumberConstructor):
  • kjs/NumberPrototype.cpp: (JSC::NumberPrototype::NumberPrototype):
  • kjs/ObjectConstructor.cpp: (JSC::ObjectConstructor::ObjectConstructor):
  • kjs/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor):
  • kjs/RegExpPrototype.cpp: (JSC::RegExpPrototype::RegExpPrototype):
  • kjs/StringConstructor.cpp: (JSC::StringConstructor::StringConstructor):
  • kjs/StringPrototype.cpp: (JSC::StringPrototype::StringPrototype):
  • kjs/StructureID.cpp: (JSC::StructureID::dumpStatistics):
  • kjs/StructureID.h: (JSC::StructureID::setPrototypeWithoutTransition):
File:
1 edited

Legend:

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

    r37684 r37747  
    5858void StructureID::dumpStatistics()
    5959{
     60    unsigned numberLeaf = 0;
    6061    unsigned numberUsingSingleSlot = 0;
     62    unsigned numberSingletons = 0;
    6163
    6264    HashSet<StructureID*>::const_iterator end = liveStructureIDSet.end();
    6365    for (HashSet<StructureID*>::const_iterator it = liveStructureIDSet.begin(); it != end; ++it) {
    6466        StructureID* structureID = *it;
    65         if (structureID->m_usingSingleTransitionSlot)
    66             ++numberUsingSingleSlot;
     67        if (structureID->m_usingSingleTransitionSlot) {
     68            if (!structureID->m_transitions.singleTransition)
     69                ++numberLeaf;
     70            else
     71                ++numberUsingSingleSlot;
     72
     73           if (!structureID->m_previous && !structureID->m_transitions.singleTransition)
     74                ++numberSingletons;
     75        }
    6776    }
    6877
    6978    printf("Number of live StructureIDs: %d\n", liveStructureIDSet.size());
    7079    printf("Number of StructureIDs using the single item optimization for transition map: %d\n", numberUsingSingleSlot);
     80    printf("Number of StructureIDs that are leaf nodes: %d\n", numberLeaf);
     81    printf("Number of StructureIDs that singletons: %d\n", numberSingletons);
    7182}
    7283#endif
Note: See TracChangeset for help on using the changeset viewer.