Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 023caa5ddf93f7a2fdf595121a0581553a23440f..a89109f4949837942c5a924e8c4bc19e050fe621 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -696,6 +696,8 @@ bool Object::IsJSProxy() { |
TYPE_CHECKER(JSFunctionProxy, JS_FUNCTION_PROXY_TYPE) |
TYPE_CHECKER(JSSet, JS_SET_TYPE) |
TYPE_CHECKER(JSMap, JS_MAP_TYPE) |
+TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE) |
+TYPE_CHECKER(JSMapIterator, JS_MAP_ITERATOR_TYPE) |
TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) |
TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE) |
TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE) |
@@ -1916,6 +1918,10 @@ int JSObject::GetHeaderSize() { |
return JSSet::kSize; |
case JS_MAP_TYPE: |
return JSMap::kSize; |
+ case JS_SET_ITERATOR_TYPE: |
+ return JSSetIterator::kSize; |
+ case JS_MAP_ITERATOR_TYPE: |
+ return JSMapIterator::kSize; |
case JS_WEAK_MAP_TYPE: |
return JSWeakMap::kSize; |
case JS_WEAK_SET_TYPE: |
@@ -2976,6 +2982,8 @@ CAST_ACCESSOR(JSProxy) |
CAST_ACCESSOR(JSFunctionProxy) |
CAST_ACCESSOR(JSSet) |
CAST_ACCESSOR(JSMap) |
+CAST_ACCESSOR(JSSetIterator) |
+CAST_ACCESSOR(JSMapIterator) |
CAST_ACCESSOR(JSWeakMap) |
CAST_ACCESSOR(JSWeakSet) |
CAST_ACCESSOR(Foreign) |
@@ -5807,6 +5815,32 @@ void JSProxy::InitializeBody(int object_size, Object* value) { |
ACCESSORS(JSSet, table, Object, kTableOffset) |
ACCESSORS(JSMap, table, Object, kTableOffset) |
+ |
+ |
+#define ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(name, type, offset) \ |
+ template<class Derived, class TableType> \ |
+ type* OrderedHashTableIterator<Derived, TableType>::name() { \ |
+ return type::cast(READ_FIELD(this, offset)); \ |
+ } \ |
+ template<class Derived, class TableType> \ |
+ void OrderedHashTableIterator<Derived, TableType>::set_##name( \ |
+ type* value, WriteBarrierMode mode) { \ |
+ WRITE_FIELD(this, offset, value); \ |
+ CONDITIONAL_WRITE_BARRIER(GetHeap(), this, offset, value, mode); \ |
+ } |
+ |
+ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(table, Object, kTableOffset) |
+ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(index, Smi, kIndexOffset) |
+ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(count, Smi, kCountOffset) |
+ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(kind, Smi, kKindOffset) |
+ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(next_iterator, Object, |
+ kNextIteratorOffset) |
+ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(previous_iterator, Object, |
+ kPreviousIteratorOffset) |
+ |
+#undef ORDERED_HASH_TABLE_ITERATOR_ACCESSORS |
+ |
+ |
ACCESSORS(JSWeakCollection, table, Object, kTableOffset) |
ACCESSORS(JSWeakCollection, next, Object, kNextOffset) |
@@ -6246,6 +6280,20 @@ SeededNumberDictionary* JSObject::element_dictionary() { |
} |
+Handle<JSSetIterator> JSSetIterator::Create( |
+ Handle<OrderedHashSet> table, |
+ int kind) { |
+ return CreateInternal(table->GetIsolate()->set_iterator_map(), table, kind); |
+} |
+ |
+ |
+Handle<JSMapIterator> JSMapIterator::Create( |
+ Handle<OrderedHashMap> table, |
+ int kind) { |
+ return CreateInternal(table->GetIsolate()->map_iterator_map(), table, kind); |
+} |
+ |
+ |
bool Name::IsHashFieldComputed(uint32_t field) { |
return (field & kHashNotComputedMask) == 0; |
} |