Changeset 2744 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Nov 18, 2002, 6:15:17 PM (23 years ago)
Author:
mjs
Message:

Another step towards the List conversion: stop inheriting from Value.

  • kjs/types.cpp: (ListIterator::ListIterator): (List::List): (List::operator=): (List::~List): (List::mark): (List::append): (List::prepend): (List::appendList): (List::prependList): (List::removeFirst): (List::removeLast): (List::remove): (List::clear): (List::copy): (List::begin): (List::end): (List::isEmpty): (List::size): (List::at): (List::operator[]):
  • kjs/types.h:
Location:
trunk/JavaScriptCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r2741 r2744  
     12002-11-18  Maciej Stachowiak  <[email protected]>
     2
     3        Another step towards the List conversion: stop inheriting from Value.
     4       
     5        * kjs/types.cpp:
     6        (ListIterator::ListIterator):
     7        (List::List):
     8        (List::operator=):
     9        (List::~List):
     10        (List::mark):
     11        (List::append):
     12        (List::prepend):
     13        (List::appendList):
     14        (List::prependList):
     15        (List::removeFirst):
     16        (List::removeLast):
     17        (List::remove):
     18        (List::clear):
     19        (List::copy):
     20        (List::begin):
     21        (List::end):
     22        (List::isEmpty):
     23        (List::size):
     24        (List::at):
     25        (List::operator[]):
     26        * kjs/types.h:
     27
    1282002-11-18  Maciej Stachowiak  <[email protected]>
    229
  • trunk/JavaScriptCore/ChangeLog-2002-12-03

    r2741 r2744  
     12002-11-18  Maciej Stachowiak  <[email protected]>
     2
     3        Another step towards the List conversion: stop inheriting from Value.
     4       
     5        * kjs/types.cpp:
     6        (ListIterator::ListIterator):
     7        (List::List):
     8        (List::operator=):
     9        (List::~List):
     10        (List::mark):
     11        (List::append):
     12        (List::prepend):
     13        (List::appendList):
     14        (List::prependList):
     15        (List::removeFirst):
     16        (List::removeLast):
     17        (List::remove):
     18        (List::clear):
     19        (List::copy):
     20        (List::begin):
     21        (List::end):
     22        (List::isEmpty):
     23        (List::size):
     24        (List::at):
     25        (List::operator[]):
     26        * kjs/types.h:
     27
    1282002-11-18  Maciej Stachowiak  <[email protected]>
    229
  • trunk/JavaScriptCore/ChangeLog-2003-10-25

    r2741 r2744  
     12002-11-18  Maciej Stachowiak  <[email protected]>
     2
     3        Another step towards the List conversion: stop inheriting from Value.
     4       
     5        * kjs/types.cpp:
     6        (ListIterator::ListIterator):
     7        (List::List):
     8        (List::operator=):
     9        (List::~List):
     10        (List::mark):
     11        (List::append):
     12        (List::prepend):
     13        (List::appendList):
     14        (List::prependList):
     15        (List::removeFirst):
     16        (List::removeLast):
     17        (List::remove):
     18        (List::clear):
     19        (List::copy):
     20        (List::begin):
     21        (List::end):
     22        (List::isEmpty):
     23        (List::size):
     24        (List::at):
     25        (List::operator[]):
     26        * kjs/types.h:
     27
    1282002-11-18  Maciej Stachowiak  <[email protected]>
    229
  • trunk/JavaScriptCore/kjs/types.cpp

    r2741 r2744  
    115115
    116116ListIterator::ListIterator(const List &l)
    117   : node(static_cast<ListImp*>(l.imp())->hook->next)
     117  : node(l.imp->hook->next)
    118118{
    119119}
     
    170170
    171171List::List(bool needsMarking)
    172   : Value(needsMarking ? ListImp::empty() : new ListImp()),
    173     m_needsMarking(needsMarking)
    174 {
    175   if (m_needsMarking) {
    176     imp()->deref();
     172  : m_needsMarking(needsMarking)
     173{
     174  imp = m_needsMarking ? ListImp::empty() : new ListImp();
     175   
     176  if (!m_needsMarking) {
     177    imp->ref();
    177178  }
    178179}
     
    180181
    181182List::List(const List& l)
    182   : Value(l),
    183     m_needsMarking(false)
     183  : m_needsMarking(false)
    184184
    185 }
    186 
    187 List::List(ListImp *imp)
    188   : Value(imp),
    189     m_needsMarking(false)
    190 {
     185  imp = l.imp;
     186
     187  if (!m_needsMarking) {
     188    imp->ref();
     189  }
     190}
     191
     192List::List(ListImp *p_imp)
     193  : m_needsMarking(false)
     194{
     195  imp = p_imp;
     196
     197  if (!m_needsMarking) {
     198    imp->ref();
     199  }
    191200}
    192201
     
    194203List& List::operator=(const List& l)
    195204{
    196   if (m_needsMarking) {
    197     imp()->ref();
    198   }
    199 
    200   Value::operator=(l);
    201 
    202   if (m_needsMarking) {
    203     imp()->deref();
    204   }
     205  if (!m_needsMarking) {
     206    l.imp->ref();
     207    imp->deref();
     208  }
     209
     210  imp = l.imp;
    205211
    206212  return *this;
     
    209215List::~List()
    210216{
    211   if (m_needsMarking) {
    212     imp()->ref();
     217  if (!m_needsMarking) {
     218    imp->deref();
    213219  }
    214220}
     
    216222void List::mark()
    217223{
    218   if (!imp()->marked()) {
    219     imp()->mark();
     224  if (!imp->marked()) {
     225    imp->mark();
    220226  }
    221227}
     
    223229void List::append(const Value& val)
    224230{
    225   static_cast<ListImp*>(rep)->append(val);
     231  imp->append(val);
    226232}
    227233
    228234void List::prepend(const Value& val)
    229235{
    230   static_cast<ListImp*>(rep)->prepend(val);
     236  imp->prepend(val);
    231237}
    232238
    233239void List::appendList(const List& lst)
    234240{
    235   static_cast<ListImp*>(rep)->appendList(lst);
     241  imp->appendList(lst);
    236242}
    237243
    238244void List::prependList(const List& lst)
    239245{
    240   static_cast<ListImp*>(rep)->prependList(lst);
     246  imp->prependList(lst);
    241247}
    242248
    243249void List::removeFirst()
    244250{
    245   static_cast<ListImp*>(rep)->removeFirst();
     251  imp->removeFirst();
    246252}
    247253
    248254void List::removeLast()
    249255{
    250   static_cast<ListImp*>(rep)->removeLast();
     256  imp->removeLast();
    251257}
    252258
    253259void List::remove(const Value &val)
    254260{
    255   static_cast<ListImp*>(rep)->remove(val);
     261  imp->remove(val);
    256262}
    257263
    258264void List::clear()
    259265{
    260   static_cast<ListImp*>(rep)->clear();
     266  imp->clear();
    261267}
    262268
    263269List List::copy() const
    264270{
    265   return static_cast<ListImp*>(rep)->copy();
     271  return imp->copy();
    266272}
    267273
    268274ListIterator List::begin() const
    269275{
    270   return static_cast<ListImp*>(rep)->begin();
     276  return imp->begin();
    271277}
    272278
    273279ListIterator List::end() const
    274280{
    275   return static_cast<ListImp*>(rep)->end();
     281  return imp->end();
    276282}
    277283
    278284bool List::isEmpty() const
    279285{
    280   return static_cast<ListImp*>(rep)->isEmpty();
     286  return imp->isEmpty();
    281287}
    282288
    283289int List::size() const
    284290{
    285   return static_cast<ListImp*>(rep)->size();
     291  return imp->size();
    286292}
    287293
    288294Value List::at(int i) const
    289295{
    290   return static_cast<ListImp*>(rep)->at(i);
     296  return imp->at(i);
    291297}
    292298
    293299Value List::operator[](int i) const
    294300{
    295   return static_cast<ListImp*>(rep)->at(i);
     301  return imp->at(i);
    296302}
    297303
  • trunk/JavaScriptCore/kjs/types.h

    r2741 r2744  
    105105   * copy of the list the referenced objects are still shared.
    106106   */
    107   class List : private Value {
     107  class List {
    108108    friend class ListIterator;
    109109  public:
     
    198198  private:
    199199    List(ListImp *);
    200     ListImp *imp() const { return (ListImp *)Value::imp(); }
     200
     201    ListImp *imp;
    201202    bool m_needsMarking;
     203    friend class ListNode;
    202204  };
    203205
Note: See TracChangeset for help on using the changeset viewer.