| 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;
|
| }
|
|
|