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

Unified Diff: src/objects-inl.h

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: V1 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 09e5ebbe295d58e827a134ae8b3fafeb667551b6..0e5d37f33ad43aae20dcab1d37349ac7a41a9e2d 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_KEY_ITERATOR_TYPE &&
+ instance_type <= LAST_JS_TYPED_ARRAY_KEY_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)
@@ -3290,6 +3332,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)
@@ -8284,6 +8328,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)
« src/bootstrapper.cc ('K') | « src/objects-debug.cc ('k') | src/runtime/runtime-array.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698