JavaScriptCore:

	- change ScopeChain to be a singly linked list shares tails, gives 11% gain on iBench

        * kjs/context.h:
        (ContextImp::pushScope): Make inline, use push instead of prepend, and pass imp pointer.
        (ContextImp::popScope): Make inline, use pop instead of removeFirst.
        * kjs/function.cpp: (DeclaredFunctionImp::DeclaredFunctionImp): No need to copy.
        * kjs/function_object.cpp: (FunctionObjectImp::construct): Use push instead of
	prepend, and pass imp pointer.
        * kjs/internal.cpp: (ContextImp::ContextImp): Use clear, push instead of prepend,
	and pass imp pointers.
        * kjs/nodes.cpp: (ResolveNode::evaluateReference): Use isEmpty, pop, and top instead
	of ScopeChainIterator.
        * kjs/object.h: Change _scope to be a NoRefScopeChain.
        * kjs/object.cpp: No need to initialize _scope any more, since it's not a NoRefScopeChain.

        * kjs/scope_chain.h: Rewrite, different implementation and interface.
        * kjs/scope_chain.cpp: More of the same.

WebCore:

        * khtml/ecma/kjs_dom.cpp: (DOMNode::pushEventHandlerScope): Change to push handlers
	on an existing scope chain rather than returning one. Name change too.
        * khtml/ecma/kjs_dom.h: More of the same.
        * khtml/ecma/kjs_html.cpp: (KJS::HTMLElement::pushEventHandlerScope): And here.
        * khtml/ecma/kjs_html.h: And here.

        * khtml/ecma/kjs_events.cpp: (JSEventListener::handleEvent): Use the pushEventHandlerScope
	function, and also don't worry about optimizing the "no change" case, because that already
	works pretty efficiently.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2824 268f45cc-cd09-0410-ab3c-d52691b4dbfc
21 files changed
tree: 16e34992a2d6bf69b95bb126b06cea6c9197f347
  1. JavaScriptCore/
  2. WebCore/
  3. WebKit/