summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/js-collection-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/js-collection-inl.h')
-rw-r--r--deps/v8/src/objects/js-collection-inl.h32
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;
}