summaryrefslogtreecommitdiffstats
path: root/chromium/v8/src/objects/js-array.tq
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/objects/js-array.tq')
-rw-r--r--chromium/v8/src/objects/js-array.tq20
1 files changed, 19 insertions, 1 deletions
diff --git a/chromium/v8/src/objects/js-array.tq b/chromium/v8/src/objects/js-array.tq
index 0cba7203a5c..dcffc68cba0 100644
--- a/chromium/v8/src/objects/js-array.tq
+++ b/chromium/v8/src/objects/js-array.tq
@@ -2,10 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+extern enum IterationKind extends uint31
+constexpr 'IterationKind' { kKeys, kValues, kEntries }
+
extern class JSArrayIterator extends JSObject {
iterated_object: JSReceiver;
next_index: Number;
- kind: Smi;
+ kind: SmiTagged<IterationKind>;
+}
+
+// Perform CreateArrayIterator (ES #sec-createarrayiterator).
+@export
+macro CreateArrayIterator(implicit context: NativeContext)(
+ array: JSReceiver, kind: constexpr IterationKind): JSArrayIterator {
+ return new JSArrayIterator{
+ map: UnsafeCast<Map>(
+ context[NativeContextSlot::INITIAL_ARRAY_ITERATOR_MAP_INDEX]),
+ properties_or_hash: kEmptyFixedArray,
+ elements: kEmptyFixedArray,
+ iterated_object: array,
+ next_index: 0,
+ kind: SmiTag<IterationKind>(kind)
+ };
}
extern class JSArray extends JSObject {