#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function* f() { }
  f();
"
frame size: 4
parameter count: 1
bytecode array length: 73
bytecodes: [
                B(Ldar), R(0),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(Abort), U8(45),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(Mov), R(closure), R(2),
                B(Mov), R(this), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(2), U8(2),
                B(Star), R(0),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(0), R(0), U8(2), U8(0),
  /*   16 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(2),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
                B(Ldar), R(2),
  /*   11 E> */ B(Throw),
                B(Ldar), R(2),
  /*   16 S> */ B(Return),
                B(LdaUndefined),
  /*   16 S> */ B(Return),
]
constant pool: [
  Smi [29],
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  function* f() { yield 42 }
  f();
"
frame size: 4
parameter count: 1
bytecode array length: 118
bytecodes: [
                B(Ldar), R(0),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(Abort), U8(45),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(Mov), R(closure), R(2),
                B(Mov), R(this), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(2), U8(2),
                B(Star), R(0),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(0), R(0), U8(2), U8(0),
  /*   25 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(2),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(2),
  /*   11 E> */ B(Throw),
                B(Ldar), R(2),
  /*   25 S> */ B(Return),
  /*   16 S> */ B(LdaSmi), I8(42),
                B(Star), R(2),
                B(LdaFalse),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(2), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(2), U8(1),
  /*   25 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(2),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
                B(Ldar), R(2),
  /*   16 E> */ B(Throw),
                B(Ldar), R(2),
  /*   25 S> */ B(Return),
                B(LdaUndefined),
  /*   25 S> */ B(Return),
]
constant pool: [
  Smi [29],
  Smi [74],
  Smi [10],
  Smi [7],
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  function* f() { for (let x of [42]) yield x }
  f();
"
frame size: 17
parameter count: 1
bytecode array length: 402
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(11),
                B(RestoreGeneratorState), R(2),
                B(Star), R(10),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(Abort), U8(45),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(Mov), R(closure), R(11),
                B(Mov), R(this), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(11), U8(2),
                B(Star), R(2),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(2), R(0), U8(11), U8(0),
  /*   44 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(2), R(0), U8(11),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(2), U8(1),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(11),
  /*   11 E> */ B(Throw),
                B(Ldar), R(11),
  /*   44 S> */ B(Return),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(13),
                B(Mov), R(context), R(14),
  /*   30 S> */ B(CreateArrayLiteral), U8(4), U8(0), U8(37),
                B(Star), R(15),
                B(LdaNamedProperty), R(15), U8(5), U8(1),
                B(Star), R(16),
                B(CallProperty0), R(16), R(15), U8(3),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
                B(Ldar), R(10),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
                B(LdaSmi), I8(-2),
  /*   30 E> */ B(TestEqualStrictNoFeedback), R(10),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(45),
  /*   25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(7),
                B(Star), R(15),
                B(CallProperty0), R(15), R(4), U8(5),
                B(Star), R(5),
  /*   25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(LdaNamedProperty), R(5), U8(8), U8(9),
                B(JumpIfToBooleanTrue), U8(74),
                B(LdaNamedProperty), R(5), U8(9), U8(11),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), R(3),
  /*   16 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   36 S> */ B(LdaFalse),
                B(Star), R(16),
                B(Mov), R(0), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
                B(SuspendGenerator), R(2), R(0), U8(15), U8(1),
  /*   44 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(2), R(0), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(2), U8(1),
                B(Star), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
                B(Ldar), R(15),
  /*   36 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(11),
                B(Mov), R(15), R(12),
                B(Jump), U8(58),
                B(LdaZero),
                B(Star), R(6),
                B(JumpLoop), U8(113), I8(0),
                B(Jump), U8(36),
                B(Star), R(15),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(15), U8(12), U8(13),
                B(PushContext), R(15),
                B(Star), R(14),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(13),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kReThrow), R(16), U8(1),
                B(PopContext), R(15),
                B(LdaSmi), I8(-1),
                B(Star), R(12),
                B(Star), R(11),
                B(Jump), U8(8),
                B(Star), R(12),
                B(LdaSmi), I8(1),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(13),
                B(LdaZero),
                B(TestEqualStrict), R(6), U8(14),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(4), U8(14), U8(15),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(18),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(8),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(136),
                B(Star), R(14),
                B(LdaConstant), U8(15),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
                B(Throw),
                B(Mov), R(context), R(14),
                B(Mov), R(8), R(15),
                B(Mov), R(4), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), U8(2),
                B(Jump), U8(20),
                B(Star), R(15),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(15), U8(12), U8(16),
                B(Star), R(14),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(PushContext), R(15),
                B(PopContext), R(15),
                B(Jump), U8(27),
                B(Mov), R(8), R(14),
                B(Mov), R(4), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(Ldar), R(13),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(12),
  /*   44 S> */ B(Return),
                B(Ldar), R(12),
                B(ReThrow),
                B(LdaUndefined),
  /*   44 S> */ B(Return),
]
constant pool: [
  Smi [29],
  Smi [91],
  Smi [10],
  Smi [7],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  Smi [75],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [77, 257, 265],
  [80, 221, 223],
  [326, 336, 338],
]

---
snippet: "
  function* g() { yield 42 }
  function* f() { yield* g() }
  f();
"
frame size: 9
parameter count: 1
bytecode array length: 265
bytecodes: [
                B(Ldar), R(0),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(Abort), U8(45),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(Mov), R(closure), R(2),
                B(Mov), R(this), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(2), U8(2),
                B(Star), R(0),
  /*   38 E> */ B(StackCheck),
  /*   38 E> */ B(SuspendGenerator), R(0), R(0), U8(2), U8(0),
  /*   54 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(2),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(2),
  /*   38 E> */ B(Throw),
                B(Ldar), R(2),
  /*   54 S> */ B(Return),
  /*   43 S> */ B(LdaGlobal), U8(4), U8(2),
                B(Star), R(8),
  /*   50 E> */ B(CallUndefinedReceiver0), R(8), U8(0),
                B(Star), R(6),
                B(LdaNamedProperty), R(6), U8(5), U8(4),
                B(Star), R(7),
                B(CallProperty0), R(7), R(6), U8(16),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
                B(LdaUndefined),
                B(Star), R(5),
                B(LdaZero),
                B(Star), R(3),
                B(Ldar), R(1),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(1),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(45),
                B(Ldar), R(3),
                B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(1),
                B(LdaNamedProperty), R(4), U8(9), U8(8),
                B(Star), R(8),
                B(CallProperty1), R(8), R(4), R(5), U8(22),
                B(Jump), U8(65),
                B(LdaNamedProperty), R(4), U8(10), U8(6),
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(8),
                B(CallProperty1), R(8), R(4), R(5), U8(18),
                B(Jump), U8(48),
                B(Ldar), R(5),
  /*   54 S> */ B(Return),
                B(LdaNamedProperty), R(4), U8(11), U8(10),
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(8),
                B(CallProperty1), R(8), R(4), R(5), U8(24),
                B(Jump), U8(28),
                B(LdaNamedProperty), R(4), U8(10), U8(6),
                B(Star), R(8),
                B(JumpIfUndefined), U8(15),
                B(JumpIfNull), U8(13),
                B(CallProperty0), R(8), R(4), U8(20),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(2), U8(1),
                B(CallRuntime), U16(Runtime::kThrowThrowMethodMissing), R(0), U8(0),
                B(Star), R(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(2), U8(1),
                B(LdaNamedProperty), R(2), U8(12), U8(12),
                B(JumpIfToBooleanTrue), U8(33),
                B(Ldar), R(2),
                B(SuspendGenerator), R(0), R(0), U8(8), U8(1),
  /*   54 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(8),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(3),
                B(JumpLoop), U8(139), I8(0),
                B(LdaNamedProperty), R(2), U8(13), U8(14),
                B(Star), R(4),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(4),
  /*   54 S> */ B(Return),
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
  Smi [29],
  Smi [92],
  Smi [10],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
  SYMBOL_TYPE,
  Smi [117],
  Smi [17],
  Smi [37],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
]
handlers: [
]

