summaryrefslogtreecommitdiff
path: root/deps/v8/src/interpreter/bytecode-generator.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/interpreter/bytecode-generator.h')
-rw-r--r--deps/v8/src/interpreter/bytecode-generator.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/deps/v8/src/interpreter/bytecode-generator.h b/deps/v8/src/interpreter/bytecode-generator.h
index 9b7b572db3..f9de9550fe 100644
--- a/deps/v8/src/interpreter/bytecode-generator.h
+++ b/deps/v8/src/interpreter/bytecode-generator.h
@@ -56,6 +56,7 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
class EffectResultScope;
class FeedbackSlotCache;
class GlobalDeclarationsBuilder;
+ class IteratorRecord;
class NaryCodeCoverageSlots;
class RegisterAllocationScope;
class TestResultScope;
@@ -151,6 +152,26 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
void BuildGetIterator(Expression* iterable, IteratorType hint);
+ // Create an IteratorRecord with pre-allocated registers holding the next
+ // method and iterator object.
+ IteratorRecord BuildGetIteratorRecord(Expression* iterable,
+ Register iterator_next,
+ Register iterator_object,
+ IteratorType hint);
+
+ // Create an IteratorRecord allocating new registers to hold the next method
+ // and iterator object.
+ IteratorRecord BuildGetIteratorRecord(Expression* iterable,
+ IteratorType hint);
+ void BuildIteratorNext(const IteratorRecord& iterator, Register next_result);
+ void BuildIteratorClose(const IteratorRecord& iterator, int suspend_id = -1);
+ void BuildCallIteratorMethod(Register iterator, const AstRawString* method,
+ RegisterList receiver_and_args,
+ BytecodeLabel* if_called,
+ BytecodeLabels* if_notcalled);
+
+ void BuildArrayLiteralSpread(Spread* spread, Register array);
+
void AllocateTopLevelRegisters();
void VisitArgumentsObject(Variable* variable);
void VisitRestArgumentsArray(Variable* rest);