Reviewed by Kevin and Maciej.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 13 Sep 2004 22:44:28 +0000 (22:44 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 13 Sep 2004 22:44:28 +0000 (22:44 +0000)
        - new function to support fix for DIG bug in WebCore

        * kjs/scope_chain.h: Added new push function that pushes another entire scope chain.
        * kjs/scope_chain.cpp: (KJS::ScopeChain::push): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7534 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/scope_chain.cpp
JavaScriptCore/kjs/scope_chain.h

index 2a2d2c485eef8d55adb257780743b47c1b7752cf..e75ddac23840b95fbc7c94a559678ae98e9b4085 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-13  Darin Adler  <darin@apple.com>
+
+        Reviewed by Kevin and Maciej.
+
+        - new function to support fix for DIG bug in WebCore
+
+        * kjs/scope_chain.h: Added new push function that pushes another entire scope chain.
+        * kjs/scope_chain.cpp: (KJS::ScopeChain::push): Ditto.
+
 2004-09-12  Darin Adler  <darin@apple.com>
 
         * tests/mozilla/expected.html: Updated test results for 3 more tests that pass with the new version
index 0fec3f4c93557a1ec41624895ac370a1a3436500..b4f4ac8e2c46423849055f0dc1de37cb98dfdd14 100644 (file)
@@ -47,6 +47,16 @@ void ScopeChain::push(ObjectImp *o)
     _node = new ScopeChainNode(_node, o);
 }
 
+void ScopeChain::push(const ScopeChain &c)
+{
+    ScopeChainNode **tail = &_node;
+    for (ScopeChainNode *n = c._node; n; n = n->next) {
+        ScopeChainNode *newNode = new ScopeChainNode(*tail, n->object);
+        *tail = newNode;
+        tail = &newNode->next;
+    }
+}
+
 void ScopeChain::pop()
 {
     ScopeChainNode *oldNode = _node;
@@ -99,6 +109,4 @@ ObjectImp *ScopeChain::bottom() const
     return last->object;
 }
 
-
-
 } // namespace KJS
index 1b8ec4a077eb9340f5ec7e01f4de0d9b6e574288..20fc1ee1108b941108426ebc9ba059e6ba1a4c5d 100644 (file)
@@ -52,6 +52,7 @@ namespace KJS {
 
         void clear() { deref(); _node = 0; }
         void push(ObjectImp *);
+        void push(const ScopeChain &);
         void pop();
         
         void mark();