[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

mjs mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:03:21 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit effd7e1c76bfa217753ff58fc735bcd684ac7f07
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 19 01:01:16 2002 +0000

    JavaScriptCore:
    
    	Partway to removing Value from List. Created a marking List
    	variant, used it in place of ListImp.
    
            * kjs/internal.h: Removed List stuff.
            * kjs/internal.cpp:
            (InterpreterImp::mark): Call appropriate List method to do marking of
    	empty ListImp.
            * kjs/object.h:
            * kjs/object.cpp: Use marking List instead of ListImp *.
            * kjs/types.h:
            * kjs/types.cpp:
            (List::List): New boolean needsMarking parameter.
            (List::operator=): Perform trickery related to needsMarking.
            (List::~List): Likewise.
            (List::mark): Mark the ListImp.
            (List::markEmptyList):
    	(ListImp::*): Moved here fron internal.cpp, they will be
    	integrated into the relevant List methods soon.
    
    WebCore:
    
            * force-js-clean-timestamp: Rebuild for JSC changes.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2741 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 977f9e1..2beb583 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,24 @@
+2002-11-18  Maciej Stachowiak  <mjs at apple.com>
+
+	Partway to removing Value from List. Created a marking List
+	variant, used it in place of ListImp.
+	
+        * kjs/internal.h: Removed List stuff.
+        * kjs/internal.cpp:
+        (InterpreterImp::mark): Call appropriate List method to do marking of
+	empty ListImp.
+        * kjs/object.h:
+        * kjs/object.cpp: Use marking List instead of ListImp *.
+        * kjs/types.h:
+        * kjs/types.cpp:
+        (List::List): New boolean needsMarking parameter. 
+        (List::operator=): Perform trickery related to needsMarking.
+        (List::~List): Likewise.
+        (List::mark): Mark the ListImp.
+        (List::markEmptyList):
+	(ListImp::*): Moved here fron internal.cpp, they will be
+	integrated into the relevant List methods soon.
+
 2002-11-18  Darin Adler  <darin at apple.com>
 
 	- another string constant discovered that can be optimized
diff --git a/JavaScriptCore/ChangeLog-2002-12-03 b/JavaScriptCore/ChangeLog-2002-12-03
index 977f9e1..2beb583 100644
--- a/JavaScriptCore/ChangeLog-2002-12-03
+++ b/JavaScriptCore/ChangeLog-2002-12-03
@@ -1,3 +1,24 @@
+2002-11-18  Maciej Stachowiak  <mjs at apple.com>
+
+	Partway to removing Value from List. Created a marking List
+	variant, used it in place of ListImp.
+	
+        * kjs/internal.h: Removed List stuff.
+        * kjs/internal.cpp:
+        (InterpreterImp::mark): Call appropriate List method to do marking of
+	empty ListImp.
+        * kjs/object.h:
+        * kjs/object.cpp: Use marking List instead of ListImp *.
+        * kjs/types.h:
+        * kjs/types.cpp:
+        (List::List): New boolean needsMarking parameter. 
+        (List::operator=): Perform trickery related to needsMarking.
+        (List::~List): Likewise.
+        (List::mark): Mark the ListImp.
+        (List::markEmptyList):
+	(ListImp::*): Moved here fron internal.cpp, they will be
+	integrated into the relevant List methods soon.
+
 2002-11-18  Darin Adler  <darin at apple.com>
 
 	- another string constant discovered that can be optimized
diff --git a/JavaScriptCore/ChangeLog-2003-10-25 b/JavaScriptCore/ChangeLog-2003-10-25
index 977f9e1..2beb583 100644
--- a/JavaScriptCore/ChangeLog-2003-10-25
+++ b/JavaScriptCore/ChangeLog-2003-10-25
@@ -1,3 +1,24 @@
+2002-11-18  Maciej Stachowiak  <mjs at apple.com>
+
+	Partway to removing Value from List. Created a marking List
+	variant, used it in place of ListImp.
+	
+        * kjs/internal.h: Removed List stuff.
+        * kjs/internal.cpp:
+        (InterpreterImp::mark): Call appropriate List method to do marking of
+	empty ListImp.
+        * kjs/object.h:
+        * kjs/object.cpp: Use marking List instead of ListImp *.
+        * kjs/types.h:
+        * kjs/types.cpp:
+        (List::List): New boolean needsMarking parameter. 
+        (List::operator=): Perform trickery related to needsMarking.
+        (List::~List): Likewise.
+        (List::mark): Mark the ListImp.
+        (List::markEmptyList):
+	(ListImp::*): Moved here fron internal.cpp, they will be
+	integrated into the relevant List methods soon.
+
 2002-11-18  Darin Adler  <darin at apple.com>
 
 	- another string constant discovered that can be optimized
diff --git a/JavaScriptCore/kjs/internal.cpp b/JavaScriptCore/kjs/internal.cpp
index a65b737..1427e29 100644
--- a/JavaScriptCore/kjs/internal.cpp
+++ b/JavaScriptCore/kjs/internal.cpp
@@ -331,216 +331,6 @@ void LabelStack::clear()
   }
 }
 
-// ------------------------------ ListImp --------------------------------------
-
-#ifdef KJS_DEBUG_MEM
-int ListImp::count = 0;
-#endif
-
-Value ListImp::toPrimitive(ExecState */*exec*/, Type /*preferredType*/) const
-{
-  // invalid for List
-  assert(false);
-  return Value();
-}
-
-bool ListImp::toBoolean(ExecState */*exec*/) const
-{
-  // invalid for List
-  assert(false);
-  return false;
-}
-
-double ListImp::toNumber(ExecState */*exec*/) const
-{
-  // invalid for List
-  assert(false);
-  return 0;
-}
-
-UString ListImp::toString(ExecState */*exec*/) const
-{
-  // invalid for List
-  assert(false);
-  return UString::null;
-}
-
-Object ListImp::toObject(ExecState */*exec*/) const
-{
-  // invalid for List
-  assert(false);
-  return Object();
-}
-
-ListImp::ListImp()
-{
-#ifdef KJS_DEBUG_MEM
-  count++;
-#endif
-
-  hook = new ListNode(Null(), 0L, 0L);
-  hook->next = hook;
-  hook->prev = hook;
-  //fprintf(stderr,"ListImp::ListImp %p hook=%p\n",this,hook);
-}
-
-ListImp::~ListImp()
-{
-  //fprintf(stderr,"ListImp::~ListImp %p\n",this);
-#ifdef KJS_DEBUG_MEM
-  count--;
-#endif
-
-  clear();
-  delete hook;
-
-  if ( emptyList == this )
-    emptyList = 0L;
-}
-
-void ListImp::mark()
-{
-  ListNode *n = hook->next;
-  while (n != hook) {
-    if (!n->member->marked())
-      n->member->mark();
-    n = n->next;
-  }
-  ValueImp::mark();
-}
-
-void ListImp::append(const Value& obj)
-{
-  ListNode *n = new ListNode(obj, hook->prev, hook);
-  hook->prev->next = n;
-  hook->prev = n;
-}
-
-void ListImp::prepend(const Value& obj)
-{
-  ListNode *n = new ListNode(obj, hook, hook->next);
-  hook->next->prev = n;
-  hook->next = n;
-}
-
-void ListImp::appendList(const List& lst)
-{
-  ListIterator it = lst.begin();
-  ListIterator e = lst.end();
-  while(it != e) {
-    append(*it);
-    ++it;
-  }
-}
-
-void ListImp::prependList(const List& lst)
-{
-  ListIterator it = lst.end();
-  ListIterator e = lst.begin();
-  while(it != e) {
-    --it;
-    prepend(*it);
-  }
-}
-
-void ListImp::removeFirst()
-{
-  erase(hook->next);
-}
-
-void ListImp::removeLast()
-{
-  erase(hook->prev);
-}
-
-void ListImp::remove(const Value &obj)
-{
-  if (obj.isNull())
-    return;
-  ListNode *n = hook->next;
-  while (n != hook) {
-    if (n->member == obj.imp()) {
-      erase(n);
-      return;
-    }
-    n = n->next;
-  }
-}
-
-void ListImp::clear()
-{
-  ListNode *n = hook->next;
-  while (n != hook) {
-    n = n->next;
-    delete n->prev;
-  }
-
-  hook->next = hook;
-  hook->prev = hook;
-}
-
-ListImp *ListImp::copy() const
-{
-  ListImp* newList = new ListImp;
-
-  ListIterator e = end();
-  ListIterator it = begin();
-
-  while(it != e) {
-    newList->append(*it);
-    ++it;
-  }
-
-  //fprintf( stderr, "ListImp::copy returning newList=%p\n", newList );
-  return newList;
-}
-
-void ListImp::erase(ListNode *n)
-{
-  if (n != hook) {
-    n->next->prev = n->prev;
-    n->prev->next = n->next;
-    delete n;
-  }
-}
-
-bool ListImp::isEmpty() const
-{
-  return (hook->prev == hook);
-}
-
-int ListImp::size() const
-{
-  int s = 0;
-  ListNode *node = hook;
-  while ((node = node->next) != hook)
-    s++;
-
-  return s;
-}
-
-Value ListImp::at(int i) const
-{
-  if (i < 0 || i >= size())
-    return Undefined();
-
-  ListIterator it = begin();
-  int j = 0;
-  while ((j++ < i))
-    it++;
-
-  return *it;
-}
-
-ListImp *ListImp::emptyList = 0L;
-
-ListImp *ListImp::empty()
-{
-  if (!emptyList)
-    emptyList = new ListImp();
-  return emptyList;
-}
-
 // ------------------------------ ContextImp -----------------------------------
 
 
@@ -877,8 +667,7 @@ void InterpreterImp::mark()
     BooleanImp::staticTrue->mark();
   if (BooleanImp::staticFalse && !BooleanImp::staticFalse->marked())
     BooleanImp::staticFalse->mark();
-  if (ListImp::emptyList && !ListImp::emptyList->marked())
-    ListImp::emptyList->mark();
+  List::markEmptyList();
   //fprintf( stderr, "InterpreterImp::mark this=%p global.imp()=%p\n", this, global.imp() );
   if (global.imp())
     global.imp()->mark();
diff --git a/JavaScriptCore/kjs/internal.h b/JavaScriptCore/kjs/internal.h
index b07213e..52e02f9 100644
--- a/JavaScriptCore/kjs/internal.h
+++ b/JavaScriptCore/kjs/internal.h
@@ -138,71 +138,6 @@ namespace KJS {
 
   inline Number::Number(NumberImp *imp) : Value(imp) { }
 
-  // ---------------------------------------------------------------------------
-  //                            Internal type impls
-  // ---------------------------------------------------------------------------
-
-  /**
-   * @internal
-   */
-  class ListNode {
-    friend class List;
-    friend class ListImp;
-    friend class ListIterator;
-    ListNode(Value val, ListNode *p, ListNode *n)
-      : member(val.imp()), prev(p), next(n) {};
-    ValueImp *member;
-    ListNode *prev, *next;
-  };
-
-  class ListImp : public ValueImp {
-    friend class ListIterator;
-    friend class List;
-    friend class InterpreterImp;
-    friend class ObjectImp;
-  private:
-    ListImp();
-    ~ListImp();
-
-    Type type() const { return ListType; }
-
-    virtual void mark();
-
-    Value toPrimitive(ExecState *exec, Type preferred = UnspecifiedType) const;
-    bool toBoolean(ExecState *exec) const;
-    double toNumber(ExecState *exec) const;
-    UString toString(ExecState *exec) const;
-    Object toObject(ExecState *exec) const;
-
-    void append(const Value& val);
-    void prepend(const Value& val);
-    void appendList(const List& lst);
-    void prependList(const List& lst);
-    void removeFirst();
-    void removeLast();
-    void remove(const Value &val);
-    void clear();
-    ListImp *copy() const;
-    ListIterator begin() const { return ListIterator(hook->next); }
-    ListIterator end() const { return ListIterator(hook); }
-    //    bool isEmpty() const { return (hook->prev == hook); }
-    bool isEmpty() const;
-    int size() const;
-    Value at(int i) const;
-    Value operator[](int i) const { return at(i); }
-    static ListImp* empty();
-
-#ifdef KJS_DEBUG_MEM
-    static int count;
-#endif
-  private:
-    void erase(ListNode *n);
-    ListNode *hook;
-    static ListImp *emptyList;
-  };
-  
-  inline List::List(ListImp *imp) : Value(imp) { }
-
   /**
    * @short The "label set" in Ecma-262 spec
    */
diff --git a/JavaScriptCore/kjs/object.cpp b/JavaScriptCore/kjs/object.cpp
index d71e560..8d9ccc8 100644
--- a/JavaScriptCore/kjs/object.cpp
+++ b/JavaScriptCore/kjs/object.cpp
@@ -61,22 +61,19 @@ Object Object::dynamicCast(const Value &v)
 // ------------------------------ ObjectImp ------------------------------------
 
 ObjectImp::ObjectImp(const Object &proto)
-  : _prop(0), _proto(static_cast<ObjectImp*>(proto.imp())), _internalValue(0L), _scope(0)
+  : _prop(0), _proto(static_cast<ObjectImp*>(proto.imp())), _internalValue(0L), _scope(true)
 {
   //fprintf(stderr,"ObjectImp::ObjectImp %p\n",(void*)this);
-  _scope = ListImp::empty();
-  _scope->setGcAllowed();
   _prop = new PropertyMap();
 }
 
-ObjectImp::ObjectImp()
+ObjectImp::ObjectImp() :
+  _scope(true)
 {
   //fprintf(stderr,"ObjectImp::ObjectImp %p\n",(void*)this);
   _prop = 0;
   _proto = NullImp::staticNull;
   _internalValue = 0L;
-  _scope = ListImp::empty();
-  _scope->setGcAllowed();
   _prop = new PropertyMap();
 }
 
@@ -98,8 +95,8 @@ void ObjectImp::mark()
 
   if (_internalValue && !_internalValue->marked())
     _internalValue->mark();
-  if (_scope && !_scope->marked())
-    _scope->mark();
+
+  _scope.mark();
 }
 
 const ClassInfo *ObjectImp::classInfo() const
@@ -390,8 +387,7 @@ const List ObjectImp::scope() const
 
 void ObjectImp::setScope(const List &s)
 {
-  if (_scope) _scope->setGcAllowed();
-  _scope = static_cast<ListImp*>(s.imp());
+  _scope = s;
 }
 
 ReferenceList ObjectImp::propList(ExecState *exec, bool recursive)
diff --git a/JavaScriptCore/kjs/object.h b/JavaScriptCore/kjs/object.h
index 35d5cb0..b835a5f 100644
--- a/JavaScriptCore/kjs/object.h
+++ b/JavaScriptCore/kjs/object.h
@@ -587,7 +587,7 @@ namespace KJS {
     PropertyMap *_prop;
     ValueImp *_proto;
     ValueImp *_internalValue;
-    ListImp *_scope;
+    List _scope;
   };
 
   /**
diff --git a/JavaScriptCore/kjs/types.cpp b/JavaScriptCore/kjs/types.cpp
index a616186..7bd197e 100644
--- a/JavaScriptCore/kjs/types.cpp
+++ b/JavaScriptCore/kjs/types.cpp
@@ -38,6 +38,73 @@
 
 using namespace KJS;
 
+namespace KJS {
+  // ---------------------------------------------------------------------------
+  //                            Internal type impls
+  // ---------------------------------------------------------------------------
+
+  /**
+   * @internal
+   */
+  class ListNode {
+    friend class List;
+    friend class ListImp;
+    friend class ListIterator;
+    ListNode(Value val, ListNode *p, ListNode *n)
+      : member(val.imp()), prev(p), next(n) {};
+    ValueImp *member;
+    ListNode *prev, *next;
+  };
+
+  class ListImp : public ValueImp {
+    friend class ListIterator;
+    friend class List;
+    friend class InterpreterImp;
+    friend class ObjectImp;
+  private:
+    ListImp();
+    ~ListImp();
+
+    Type type() const { return ListType; }
+
+    virtual void mark();
+
+    Value toPrimitive(ExecState *exec, Type preferred = UnspecifiedType) const;
+    bool toBoolean(ExecState *exec) const;
+    double toNumber(ExecState *exec) const;
+    UString toString(ExecState *exec) const;
+    Object toObject(ExecState *exec) const;
+
+    void append(const Value& val);
+    void prepend(const Value& val);
+    void appendList(const List& lst);
+    void prependList(const List& lst);
+    void removeFirst();
+    void removeLast();
+    void remove(const Value &val);
+    void clear();
+    ListImp *copy() const;
+    ListIterator begin() const { return ListIterator(hook->next); }
+    ListIterator end() const { return ListIterator(hook); }
+    //    bool isEmpty() const { return (hook->prev == hook); }
+    bool isEmpty() const;
+    int size() const;
+    Value at(int i) const;
+    Value operator[](int i) const { return at(i); }
+    static ListImp* empty();
+
+#ifdef KJS_DEBUG_MEM
+    static int count;
+#endif
+  private:
+    void erase(ListNode *n);
+    ListNode *hook;
+    static ListImp *emptyList;
+  };
+  
+}
+
+
 // ------------------------------ ListIterator ---------------------------------
 
 //d  dont add   ListIterator();
@@ -56,13 +123,13 @@ ValueImp* ListIterator::operator->() const
   return node->member;
 }
 
-    //    operator Value* () const { return node->member; }
+//    operator Value* () const { return node->member; }
 Value ListIterator::operator*() const
 {
   return Value(node->member);
 }
 
-    //    operator Value*() const { return node->member; }
+//    operator Value*() const { return node->member; }
 Value ListIterator::operator++()
 {
   node = node->next;
@@ -101,10 +168,56 @@ bool ListIterator::operator!=(const ListIterator &it) const
 
 // ------------------------------ List -----------------------------------------
 
-List::List()
-  : Value(new ListImp())
+List::List(bool needsMarking)
+  : Value(needsMarking ? ListImp::empty() : new ListImp()),
+    m_needsMarking(needsMarking)
+{
+  if (m_needsMarking) {
+    imp()->deref();
+  }
+}
+
+
+List::List(const List& l)
+  : Value(l),
+    m_needsMarking(false)
+{  
+}
+
+List::List(ListImp *imp) 
+  : Value(imp),
+    m_needsMarking(false)
+{
+}
+
+
+List& List::operator=(const List& l)
+{
+  if (m_needsMarking) {
+    imp()->ref();
+  }
+
+  Value::operator=(l);
+
+  if (m_needsMarking) {
+    imp()->deref();
+  }
+
+  return *this;
+}
+      
+List::~List()
+{
+  if (m_needsMarking) {
+    imp()->ref();
+  }
+}
+
+void List::mark()
 {
-  //fprintf(stderr,"List::List() this=%p imp=%p refcount=%d\n",this,rep,rep->refcount);
+  if (!imp()->marked()) {
+    imp()->mark();
+  }
 }
 
 void List::append(const Value& val)
@@ -195,3 +308,220 @@ void List::globalClear()
 }
 #endif
 
+void List::markEmptyList()
+{
+  if (ListImp::emptyList && !ListImp::emptyList->marked())
+    ListImp::emptyList->mark();
+}
+
+
+// ------------------------------ ListImp --------------------------------------
+
+#ifdef KJS_DEBUG_MEM
+int ListImp::count = 0;
+#endif
+
+Value ListImp::toPrimitive(ExecState */*exec*/, Type /*preferredType*/) const
+{
+  // invalid for List
+  assert(false);
+  return Value();
+}
+
+bool ListImp::toBoolean(ExecState */*exec*/) const
+{
+  // invalid for List
+  assert(false);
+  return false;
+}
+
+double ListImp::toNumber(ExecState */*exec*/) const
+{
+  // invalid for List
+  assert(false);
+  return 0;
+}
+
+UString ListImp::toString(ExecState */*exec*/) const
+{
+  // invalid for List
+  assert(false);
+  return UString::null;
+}
+
+Object ListImp::toObject(ExecState */*exec*/) const
+{
+  // invalid for List
+  assert(false);
+  return Object();
+}
+
+ListImp::ListImp()
+{
+#ifdef KJS_DEBUG_MEM
+  count++;
+#endif
+
+  hook = new ListNode(Null(), 0L, 0L);
+  hook->next = hook;
+  hook->prev = hook;
+  //fprintf(stderr,"ListImp::ListImp %p hook=%p\n",this,hook);
+}
+
+ListImp::~ListImp()
+{
+  //fprintf(stderr,"ListImp::~ListImp %p\n",this);
+#ifdef KJS_DEBUG_MEM
+  count--;
+#endif
+
+  clear();
+  delete hook;
+
+  if ( emptyList == this )
+    emptyList = 0L;
+}
+
+void ListImp::mark()
+{
+  ListNode *n = hook->next;
+  while (n != hook) {
+    if (!n->member->marked())
+      n->member->mark();
+    n = n->next;
+  }
+  ValueImp::mark();
+}
+
+void ListImp::append(const Value& obj)
+{
+  ListNode *n = new ListNode(obj, hook->prev, hook);
+  hook->prev->next = n;
+  hook->prev = n;
+}
+
+void ListImp::prepend(const Value& obj)
+{
+  ListNode *n = new ListNode(obj, hook, hook->next);
+  hook->next->prev = n;
+  hook->next = n;
+}
+
+void ListImp::appendList(const List& lst)
+{
+  ListIterator it = lst.begin();
+  ListIterator e = lst.end();
+  while(it != e) {
+    append(*it);
+    ++it;
+  }
+}
+
+void ListImp::prependList(const List& lst)
+{
+  ListIterator it = lst.end();
+  ListIterator e = lst.begin();
+  while(it != e) {
+    --it;
+    prepend(*it);
+  }
+}
+
+void ListImp::removeFirst()
+{
+  erase(hook->next);
+}
+
+void ListImp::removeLast()
+{
+  erase(hook->prev);
+}
+
+void ListImp::remove(const Value &obj)
+{
+  if (obj.isNull())
+    return;
+  ListNode *n = hook->next;
+  while (n != hook) {
+    if (n->member == obj.imp()) {
+      erase(n);
+      return;
+    }
+    n = n->next;
+  }
+}
+
+void ListImp::clear()
+{
+  ListNode *n = hook->next;
+  while (n != hook) {
+    n = n->next;
+    delete n->prev;
+  }
+
+  hook->next = hook;
+  hook->prev = hook;
+}
+
+ListImp *ListImp::copy() const
+{
+  ListImp* newList = new ListImp;
+
+  ListIterator e = end();
+  ListIterator it = begin();
+
+  while(it != e) {
+    newList->append(*it);
+    ++it;
+  }
+
+  //fprintf( stderr, "ListImp::copy returning newList=%p\n", newList );
+  return newList;
+}
+
+void ListImp::erase(ListNode *n)
+{
+  if (n != hook) {
+    n->next->prev = n->prev;
+    n->prev->next = n->next;
+    delete n;
+  }
+}
+
+bool ListImp::isEmpty() const
+{
+  return (hook->prev == hook);
+}
+
+int ListImp::size() const
+{
+  int s = 0;
+  ListNode *node = hook;
+  while ((node = node->next) != hook)
+    s++;
+
+  return s;
+}
+
+Value ListImp::at(int i) const
+{
+  if (i < 0 || i >= size())
+    return Undefined();
+
+  ListIterator it = begin();
+  int j = 0;
+  while ((j++ < i))
+    it++;
+
+  return *it;
+}
+
+ListImp *ListImp::emptyList = 0L;
+
+ListImp *ListImp::empty()
+{
+  if (!emptyList)
+    emptyList = new ListImp();
+  return emptyList;
+}
+
diff --git a/JavaScriptCore/kjs/types.h b/JavaScriptCore/kjs/types.h
index 9f97bfb..60a04a7 100644
--- a/JavaScriptCore/kjs/types.h
+++ b/JavaScriptCore/kjs/types.h
@@ -107,7 +107,11 @@ namespace KJS {
   class List : private Value {
     friend class ListIterator;
   public:
-    List();
+    List(bool needsMarking = false);
+    List(const List& l);
+    List &operator=(const List& l);
+      
+    ~List();
 
     /**
      * Append an object to the end of the list.
@@ -189,11 +193,12 @@ namespace KJS {
 #ifdef KJS_DEBUG_MEM
     static void globalClear();
 #endif
-
+    void mark();
+    static void markEmptyList();
   private:
     List(ListImp *);
     ListImp *imp() const { return (ListImp *)Value::imp(); }
-    friend class ObjectImp;
+    bool m_needsMarking;
   };
 
 }; // namespace
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 8c10a88..7b7f09c 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,7 @@
+2002-11-18  Maciej Stachowiak  <mjs at apple.com>
+
+        * force-js-clean-timestamp: Rebuild for JSC changes.
+
 2002-11-18  Darin Adler  <darin at apple.com>
 
         * force-js-clean-timestamp: Touch files to make the build work.
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 8c10a88..7b7f09c 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,7 @@
+2002-11-18  Maciej Stachowiak  <mjs at apple.com>
+
+        * force-js-clean-timestamp: Rebuild for JSC changes.
+
 2002-11-18  Darin Adler  <darin at apple.com>
 
         * force-js-clean-timestamp: Touch files to make the build work.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 8c10a88..7b7f09c 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,7 @@
+2002-11-18  Maciej Stachowiak  <mjs at apple.com>
+
+        * force-js-clean-timestamp: Rebuild for JSC changes.
+
 2002-11-18  Darin Adler  <darin at apple.com>
 
         * force-js-clean-timestamp: Touch files to make the build work.
diff --git a/WebCore/force-js-clean-timestamp b/WebCore/force-js-clean-timestamp
index c1ff393..836bdcf 100644
--- a/WebCore/force-js-clean-timestamp
+++ b/WebCore/force-js-clean-timestamp
@@ -1 +1 @@
-ExecState changes 11/18 -- Darin
+List changes 11/18 - mjs

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list