• darin's avatar
    JavaScriptCore: · 8d450d34
    darin authored
    	- changed ScopeChain to not ref each item in the chain, and use
            marking instead; gains 1% on JavaScript iBench
            * kjs/context.h: Return chain by reference.
            * kjs/internal.cpp: (ContextImp::mark): Mark the scope chain.
            * kjs/interpreter.cpp: (Context::scopeChain): Return chain by reference.
            * kjs/interpreter.h: Make some Context methods inline.
            * kjs/nodes.cpp:
            (ThisNode::evaluate): Get at ContextImp directly.
            (ResolveNode::evaluateReference): Ditto.
            (VarDeclNode::evaluate): Ditto.
            (VarDeclNode::processVarDecls): Ditto.
            (FuncDeclNode::processFuncDecl): Pass ScopeChain directly to avoid copying.
            (FuncExprNode::evaluate): Ditto.
            * kjs/object.cpp: Make scope and setScope inline.
            * kjs/object.h: Make scope return a chain by reference. Make scope and
    	setScope both be inline. Use a normal ScopeChain instead of NoRefScopeChain
    	since they are now one and the same.
            * kjs/scope_chain.cpp: Remove all the code to ref and deref objects.
    	Merge NoRefScopeChain in with ScopeChain since they both work this way now.
            * kjs/scope_chain.h: Remove NoRefScopeChain and simplify the ref counts.
    	Make more functions inline.
            * force-js-clean-timestamp: Touch for ScopeChain change.
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2851 268f45cc-cd09-0410-ab3c-d52691b4dbfc
ChangeLog 77.6 KB