diff options
Diffstat (limited to 'deps/v8/src/objects/js-collection-inl.h')
-rw-r--r-- | deps/v8/src/objects/js-collection-inl.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/deps/v8/src/objects/js-collection-inl.h b/deps/v8/src/objects/js-collection-inl.h index c50e803429..c216b3daff 100644 --- a/deps/v8/src/objects/js-collection-inl.h +++ b/deps/v8/src/objects/js-collection-inl.h @@ -15,6 +15,32 @@ namespace v8 { namespace internal { +OBJECT_CONSTRUCTORS_IMPL(JSCollection, JSObject) +OBJECT_CONSTRUCTORS_IMPL(JSMap, JSCollection) +OBJECT_CONSTRUCTORS_IMPL(JSSet, JSCollection) +OBJECT_CONSTRUCTORS_IMPL(JSWeakCollection, JSObject) +OBJECT_CONSTRUCTORS_IMPL(JSWeakMap, JSWeakCollection) +OBJECT_CONSTRUCTORS_IMPL(JSWeakSet, JSWeakCollection) + +// TODO(jkummerow): Move JSCollectionIterator to js-collection.h? +// TODO(jkummerow): Introduce IsJSCollectionIterator() check? Or unchecked +// version of OBJECT_CONSTRUCTORS_IMPL macro? +JSCollectionIterator::JSCollectionIterator(Address ptr) : JSObject(ptr) {} +template <class Derived, class TableType> +OrderedHashTableIterator<Derived, TableType>::OrderedHashTableIterator( + Address ptr) + : JSCollectionIterator(ptr) {} + +JSMapIterator::JSMapIterator(Address ptr) + : OrderedHashTableIterator<JSMapIterator, OrderedHashMap>(ptr) { + SLOW_DCHECK(IsJSMapIterator()); +} + +JSSetIterator::JSSetIterator(Address ptr) + : OrderedHashTableIterator<JSSetIterator, OrderedHashSet>(ptr) { + SLOW_DCHECK(IsJSSetIterator()); +} + ACCESSORS(JSCollection, table, Object, kTableOffset) ACCESSORS(JSCollectionIterator, table, Object, kTableOffset) ACCESSORS(JSCollectionIterator, index, Object, kIndexOffset) @@ -29,10 +55,10 @@ CAST_ACCESSOR(JSWeakCollection) CAST_ACCESSOR(JSWeakMap) CAST_ACCESSOR(JSWeakSet) -Object* JSMapIterator::CurrentValue() { - OrderedHashMap* table(OrderedHashMap::cast(this->table())); +Object JSMapIterator::CurrentValue() { + OrderedHashMap table = OrderedHashMap::cast(this->table()); int index = Smi::ToInt(this->index()); - Object* value = table->ValueAt(index); + Object value = table->ValueAt(index); DCHECK(!value->IsTheHole()); return value; } |