Skip to content
  • ggaren@apple.com's avatar
    JavaScriptCore: · 8d8ff6a5
    ggaren@apple.com authored
    2008-09-02  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Sam Weinig.
            
            Implemented the rest of Darin's review comments for the 09-01 inline
            caching patch.
            
            SunSpider says 0.5% faster, but that seems like noise.
    
            * JavaScriptCore.xcodeproj/project.pbxproj: Put PutPropertySlot into
            its own file, and added BatchedTransitionOptimizer.
    
            * VM/CodeBlock.cpp:
            (KJS::CodeBlock::~CodeBlock): Use array indexing instead of a pointer
            iterator.
    
            * VM/CodeGenerator.cpp:
            (KJS::CodeGenerator::CodeGenerator): Used BatchedTransitionOptimizer to
            make batched put and remove for declared variables fast, without forever
            pessimizing the global object. Removed the old getDirect/removeDirect hack
            that tried to do the same in a more limited way.
    
            * VM/CodeGenerator.h: Moved IdentifierRepHash to the KJS namespace since
            it doesn't specialize anything in WTF.
    
            * VM/Machine.cpp:
            (KJS::Machine::Machine): Nixed the DummyConstruct tag because it was
            confusingly named.
    
            (KJS::Machine::execute):  Used BatchedTransitionOptimizer, as above. Fixed
            up some comments.
    
            (KJS::cachePrototypeChain): Cast to JSObject*, since it's more specific.
    
            (KJS::Machine::tryCachePutByID): Use isNull() instead of comparing to
            jsNull(), since isNull() leaves more options open for the future.
            (KJS::Machine::tryCacheGetByID): ditto
            (KJS::Machine::privateExecute): ditto
    
            * VM/SamplingTool.cpp:
            (KJS::SamplingTool::dump): Use C++-style cast, to match our style
            guidelines.
    
            * kjs/BatchedTransitionOptimizer.h: Added. New class that allows host
            code to add a batch of properties to an object in an efficient way.
    
            * kjs/JSActivation.cpp: Use isNull(), as above.
    
            * kjs/JSArray.cpp: Get rid of DummyConstruct tag, as above.
            * kjs/JSArray.h:
    
            * kjs/JSGlobalData.cpp: Nixed two unused StructureIDs.
            * kjs/JSGlobalData.h:
    
            * kjs/JSImmediate.cpp: Use isNull(), as above.
    
            * kjs/JSObject.cpp:
            (KJS::JSObject::mark): Moved mark tracing code elsewhere, to make this
            function more readable.
    
            (KJS::JSObject::put): Use isNull(), as above.
    
            (KJS::JSObject::createInheritorID): Return a raw pointer, since the
            object is owned by a data member, not necessarily the caller.
            * kjs/JSObject.h:
    
            * kjs/JSString.cpp: Use isNull(), as above.
    
            * kjs/PropertyMap.h: Updated to use PropertySlot::invalidOffset.
    
            * kjs/PropertySlot.h: Changed KJS_INVALID_OFFSET to WTF::notFound
            because C macros are so 80's.
    
            * kjs/PutPropertySlot.h: Added. Split out of PropertySlot.h. Also renamed
            PutPropertySlot::SlotType to PutPropertySlot::Type, and slotBase to base,
            since "slot" was redundant.
    
            * kjs/StructureID.cpp: Added a new transition *away* from dictionary
            status, to support BatchedTransitionOptimizer.
    
            (KJS::StructureIDChain::StructureIDChain): No need to store m_size as
            a data member, so keep it in a local, which might be faster.
            * kjs/StructureID.h:
    
            * kjs/SymbolTable.h: Moved IdentifierRepHash to KJS namespace, as above.
            * kjs/ustring.h:
    
    JavaScriptGlue:
    
    2008-09-02  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Sam Weinig.
            
            Implemented the rest of Darin's review comments for the 09-01 inline
            caching patch.
            
            * ForwardingHeaders/kjs/PutPropertySlot.h: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    8d8ff6a5