Changeset 10744 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp


Ignore:
Timestamp:
Oct 5, 2005, 1:05:44 AM (20 years ago)
Author:
mjs
Message:

JavaScriptCore:

Reviewed by Eric.

  • fixed <rdar://problem/4260481> Remove Reference type from JavaScriptCore

Also fixed some bugs with for..in enumeration while I was at it. object
properties now come before prototype properties and duplicates
between object and prototype are listed only once.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • kjs/IdentifierSequencedSet.cpp: Added. (KJS::IdentifierSequencedSet::IdentifierSequencedSet): (KJS::IdentifierSequencedSet::deallocateVector): (KJS::IdentifierSequencedSet::~IdentifierSequencedSet): (KJS::IdentifierSequencedSet::insert):
  • kjs/IdentifierSequencedSet.h: Added. (KJS::IdentifierSequencedSetIterator::IdentifierSequencedSetIterator): (KJS::IdentifierSequencedSetIterator::operator*): (KJS::IdentifierSequencedSetIterator::operator->): (KJS::IdentifierSequencedSetIterator::operator++): (KJS::IdentifierSequencedSetIterator::operator==): (KJS::IdentifierSequencedSetIterator::operator!=): (KJS::IdentifierSequencedSet::begin): (KJS::IdentifierSequencedSet::end): (KJS::IdentifierSequencedSet::size):
  • kjs/array_instance.h:
  • kjs/array_object.cpp: (ArrayInstanceImp::getPropertyNames): (ArrayInstanceImp::setLength): (ArrayInstanceImp::pushUndefinedObjectsToEnd):
  • kjs/nodes.cpp: (ForInNode::execute):
  • kjs/nodes.h:
  • kjs/object.cpp: (KJS::ObjectImp::getPropertyNames):
  • kjs/object.h:
  • kjs/property_map.cpp: (KJS::PropertyMap::getEnumerablePropertyNames): (KJS::PropertyMap::getSparseArrayPropertyNames):
  • kjs/property_map.h:
  • kjs/protect.h:
  • kjs/protected_reference.h: Removed.
  • kjs/reference.cpp: Removed.
  • kjs/reference.h: Removed.
  • kjs/reference_list.cpp: Removed.
  • kjs/reference_list.h: Removed.
  • kjs/ustring.h: (KJS::UString::impl):
  • kxmlcore/HashSet.h:

LayoutTests:

Reviewed by Eric.

  • test case for some fixes I made to for..in enumeration. object properties now come before prototype properties and duplicates between object and prototype are listed only once.
  • fast/js/for-in-expected.txt: Added.
  • fast/js/for-in.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r10701 r10744  
    4444#include "operations.h"
    4545#include "ustring.h"
    46 #include "reference_list.h"
     46#include "IdentifierSequencedSet.h"
    4747
    4848using namespace KJS;
     
    17811781  ObjectImp *v;
    17821782  Completion c;
    1783   ReferenceList propList;
     1783  IdentifierSequencedSet propertyNames;
    17841784
    17851785  if (varDecl) {
     
    18001800  KJS_CHECKEXCEPTION
    18011801  v = e->toObject(exec);
    1802   propList = v->propList(exec);
    1803 
    1804   ReferenceListIterator propIt = propList.begin();
    1805 
    1806   while (propIt != propList.end()) {
    1807     Identifier name = propIt->getPropertyName(exec);
    1808     if (!v->hasProperty(exec, name)) {
    1809       propIt++;
     1802  v->getPropertyNames(exec, propertyNames);
     1803
     1804  IdentifierSequencedSetIterator end = propertyNames.end();
     1805  for (IdentifierSequencedSetIterator it = propertyNames.begin(); it != end; ++it) {
     1806    const Identifier &name = *it;
     1807    if (!v->hasProperty(exec, name))
    18101808      continue;
    1811     }
    18121809
    18131810    ValueImp *str = jsString(name.ustring());
     
    18711868      }
    18721869    }
    1873 
    1874     propIt++;
    18751870  }
    18761871
Note: See TracChangeset for help on using the changeset viewer.