blob: 792a5315ee1b23b406751ce22ead8672c887ef82 [file] [log] [blame]
// Copyright 2023 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@abstract
extern class JSIteratorHelper extends JSObject {
// We cannot use `IteratorRecord` because we use `Null` and `Undefined` as
// sentinel values to track the status of the iterator.
underlying_object: JSReceiver|Null|Undefined;
underlying_next: JSAny;
}
extern class JSIteratorMapHelper extends JSIteratorHelper {
mapper: Callable;
counter: Number;
}
extern class JSIteratorFilterHelper extends JSIteratorHelper {
predicate: Callable;
counter: Number;
}
extern class JSIteratorTakeHelper extends JSIteratorHelper {
remaining: Number;
}
extern class JSIteratorDropHelper extends JSIteratorHelper {
remaining: Number;
}
extern class JSIteratorFlatMapHelper extends JSIteratorHelper {
mapper: Callable;
counter: Number;
innerIterator: iterator::IteratorRecord;
innerAlive: Boolean;
}