Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(261)

Unified Diff: src/objects-inl.h

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: remove apparently redundant var bindings and fix other bugs Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/objects-inl.h
diff --git a/src/objects-inl.h b/src/objects-inl.h
index c033c333e43a887c53a2f2b7dbd9203d96df751f..701105ce302da306820ea5dbe15b68c273656669 100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -690,6 +690,48 @@ bool HeapObject::IsJSObject() const {
bool HeapObject::IsJSProxy() const { return map()->IsJSProxyMap(); }
+bool HeapObject::IsJSTypedArrayKeyIterator() const {
+ return map()->instance_type() == JS_TYPED_ARRAY_KEY_ITERATOR_TYPE;
+}
+
+bool HeapObject::IsJSTypedArrayValueIterator() const {
+ InstanceType instance_type = map()->instance_type();
+ return instance_type >= FIRST_JS_TYPED_ARRAY_VALUE_ITERATOR_TYPE &&
+ instance_type <= LAST_JS_TYPED_ARRAY_VALUE_ITERATOR_TYPE;
+}
+
+bool HeapObject::IsJSTypedArrayKeyValueIterator() const {
+ InstanceType instance_type = map()->instance_type();
+ return instance_type >= FIRST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE &&
+ instance_type <= LAST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE;
+}
+
+bool HeapObject::IsJSTypedArrayIterator() const {
+ return (IsJSTypedArrayKeyIterator() || IsJSTypedArrayValueIterator() ||
+ IsJSTypedArrayKeyValueIterator());
+}
+
+bool HeapObject::IsJSArrayKeyIterator() const {
+ return map()->instance_type() == JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE;
+}
+
+bool HeapObject::IsJSArrayValueIterator() const {
+ InstanceType instance_type = map()->instance_type();
+ return instance_type >= FIRST_JS_ARRAY_VALUE_ITERATOR_TYPE &&
+ instance_type <= LAST_JS_ARRAY_VALUE_ITERATOR_TYPE;
+}
+
+bool HeapObject::IsJSArrayKeyValueIterator() const {
+ InstanceType instance_type = map()->instance_type();
+ return instance_type >= FIRST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE &&
+ instance_type <= LAST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE;
+}
+
+bool HeapObject::IsJSArrayIterator() const {
+ return (IsJSArrayKeyIterator() || IsJSArrayValueIterator() ||
+ IsJSArrayKeyValueIterator());
+}
+
TYPE_CHECKER(JSSet, JS_SET_TYPE)
TYPE_CHECKER(JSMap, JS_MAP_TYPE)
TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE)
@@ -3294,6 +3336,8 @@ CAST_ACCESSOR(JSRegExp)
CAST_ACCESSOR(JSSet)
CAST_ACCESSOR(JSSetIterator)
CAST_ACCESSOR(JSStringIterator)
+CAST_ACCESSOR(JSTypedArrayIterator)
+CAST_ACCESSOR(JSArrayIterator)
CAST_ACCESSOR(JSTypedArray)
CAST_ACCESSOR(JSValue)
CAST_ACCESSOR(JSWeakCollection)
@@ -8307,6 +8351,13 @@ static inline Handle<Object> MakeEntryPair(Isolate* isolate, Handle<Name> key,
ACCESSORS(JSIteratorResult, value, Object, kValueOffset)
ACCESSORS(JSIteratorResult, done, Object, kDoneOffset)
+ACCESSORS(JSTypedArrayIterator, object, Object, kIteratedObjectOffset)
+SMI_ACCESSORS(JSTypedArrayIterator, index, kNextIndexOffset)
+
+ACCESSORS(JSArrayIterator, object, Object, kIteratedObjectOffset)
+ACCESSORS(JSArrayIterator, index, Object, kNextIndexOffset)
+ACCESSORS(JSArrayIterator, map, Map, kIteratedObjectMapOffset)
+
ACCESSORS(JSStringIterator, string, String, kStringOffset)
SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset)

Powered by Google App Engine
This is Rietveld 408576698