Avoid heap allocating the root scope chain node for eval and closure free functions
[WebKit.git] / JavaScriptCore / kjs / scope_chain.h
index 43050a49224b818062928d91a464c2b9e07a031a..7fa1e5531d4637a38530cfb9cb3c6d2cb0b7e068 100644 (file)
@@ -90,6 +90,7 @@ namespace KJS {
         void clear() { deref(); _node = 0; }
         void push(JSObject *);
         void push(const ScopeChain &);
+        void push(ScopeChainNode*);
         void replaceTop(JSObject*);
         void pop();
         
@@ -140,6 +141,15 @@ inline void ScopeChain::push(JSObject *o)
     _node = new ScopeChainNode(_node, o);
 }
 
+inline void ScopeChain::push(ScopeChainNode *node)
+{
+    ASSERT(node);
+    ASSERT(node->object);
+    node->refCount++;
+    node->next = _node;
+    _node = node;
+}
+
 inline void ScopeChain::replaceTop(JSObject* o)
 {
     ASSERT(o);