#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f
async iteration: yes

---
snippet: "
  async function* f() { }
  f();
"
frame size: 10
parameter count: 1
bytecode array length: 220
bytecodes: [
                B(Mov), R(new_target), R(1),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(1), U8(1),
                B(PushContext), R(3),
                B(RestoreGeneratorState), R(1),
                B(Star), R(2),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
  /*   17 E> */ B(StackCheck),
                B(Star), R(1),
                B(Mov), R(context), R(5),
                B(Mov), R(context), R(6),
                B(LdaZero),
                B(Mov), R(0), R(7),
  /*   17 E> */ B(SuspendGenerator), R(1), R(0), U8(7), U8(4),
                B(Ldar), R(7),
  /*   22 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(1), R(0), U8(7),
                B(LdaSmi), I8(-2),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
                B(Ldar), R(7),
  /*   17 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(7), R(4),
                B(Jump), U8(61),
                B(LdaUndefined),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Jump), U8(53),
                B(Jump), U8(39),
                B(Star), R(7),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(7), U8(3), U8(4),
                B(Star), R(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(6),
                B(PushContext), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(9),
                B(Mov), R(0), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(8), U8(2),
                B(PopContext), R(7),
                B(Star), R(4),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Jump), U8(8),
                B(Star), R(4),
                B(LdaSmi), I8(2),
                B(Star), R(3),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(5),
                B(SetPendingMessage),
                B(Ldar), R(3),
                B(SwitchOnSmiNoFeedback), U8(5), U8(3), I8(0),
                B(Jump), U8(34),
                B(LdaTrue),
                B(Star), R(8),
                B(Mov), R(0), R(6),
                B(Mov), R(4), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(6), U8(3),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
                B(Ldar), R(9),
  /*   22 S> */ B(Return),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
                B(Ldar), R(4),
  /*   22 S> */ B(Return),
                B(Ldar), R(4),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
                B(Ldar), R(3),
  /*   22 S> */ B(Return),
]
constant pool: [
  Smi [50],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [28],
  Smi [35],
]
handlers: [
  [52, 147, 153],
  [55, 108, 110],
]

---
snippet: "
  async function* f() { yield 42 }
  f();
"
frame size: 11
parameter count: 1
bytecode array length: 278
bytecodes: [
                B(Mov), R(new_target), R(1),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(1), U8(1),
                B(PushContext), R(3),
                B(RestoreGeneratorState), R(1),
                B(Star), R(2),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
  /*   17 E> */ B(StackCheck),
                B(Star), R(1),
                B(Mov), R(context), R(5),
                B(Mov), R(context), R(6),
                B(LdaZero),
                B(Mov), R(0), R(7),
  /*   17 E> */ B(SuspendGenerator), R(1), R(0), U8(7), U8(4),
                B(Ldar), R(7),
  /*   31 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(1), R(0), U8(7),
                B(LdaSmi), I8(-2),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(7),
  /*   17 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(7), R(4),
                B(Jump), U8(119),
  /*   22 S> */ B(LdaSmi), I8(42),
                B(Star), R(7),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(1), R(0), U8(7), U8(4),
                B(LdaFalse),
                B(Star), R(10),
                B(Mov), R(1), R(8),
                B(Mov), R(7), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(8), U8(3),
  /*   31 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(1), R(0), U8(7),
                B(LdaSmi), I8(-2),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
                B(Ldar), R(7),
  /*   22 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(7), R(4),
                B(Jump), U8(61),
                B(LdaUndefined),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Jump), U8(53),
                B(Jump), U8(39),
                B(Star), R(7),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(7), U8(6), U8(7),
                B(Star), R(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(6),
                B(PushContext), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(9),
                B(Mov), R(0), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(8), U8(2),
                B(PopContext), R(7),
                B(Star), R(4),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Jump), U8(8),
                B(Star), R(4),
                B(LdaSmi), I8(2),
                B(Star), R(3),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(5),
                B(SetPendingMessage),
                B(Ldar), R(3),
                B(SwitchOnSmiNoFeedback), U8(8), U8(3), I8(0),
                B(Jump), U8(34),
                B(LdaTrue),
                B(Star), R(8),
                B(Mov), R(0), R(6),
                B(Mov), R(4), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(6), U8(3),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
                B(Ldar), R(9),
  /*   31 S> */ B(Return),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
                B(Ldar), R(4),
  /*   31 S> */ B(Return),
                B(Ldar), R(4),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(1), U8(1),
                B(Ldar), R(3),
  /*   31 S> */ B(Return),
]
constant pool: [
  Smi [50],
  Smi [108],
  Smi [15],
  Smi [7],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [28],
  Smi [35],
]
handlers: [
  [52, 205, 211],
  [55, 166, 168],
]

---
snippet: "
  async function* f() { for (let x of [42]) yield x }
  f();
"
frame size: 24
parameter count: 1
bytecode array length: 571
bytecodes: [
                B(Mov), R(new_target), R(10),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(10), U8(1),
                B(PushContext), R(12),
                B(RestoreGeneratorState), R(10),
                B(Star), R(11),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(Mov), R(closure), R(12),
                B(Mov), R(this), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(12), U8(2),
                B(Star), R(2),
  /*   17 E> */ B(StackCheck),
                B(Star), R(10),
                B(Mov), R(context), R(14),
                B(Mov), R(context), R(15),
                B(LdaZero),
                B(Mov), R(2), R(16),
  /*   17 E> */ B(SuspendGenerator), R(10), R(0), U8(16), U8(4),
                B(Ldar), R(16),
  /*   50 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(10), R(0), U8(16),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
                B(Star), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(16),
  /*   17 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(12),
                B(Mov), R(16), R(13),
                B(JumpConstant), U8(20),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(18),
                B(Mov), R(context), R(19),
  /*   36 S> */ B(CreateArrayLiteral), U8(4), U8(4), U8(37),
                B(Star), R(20),
                B(LdaNamedProperty), R(20), U8(5), U8(5),
                B(Star), R(21),
                B(CallProperty0), R(21), R(20), U8(7),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
                B(Ldar), R(11),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
                B(LdaSmi), I8(-2),
  /*   36 E> */ B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(81),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kAbort), R(20), U8(1),
  /*   31 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
                B(Star), R(20),
                B(CallProperty0), R(20), R(4), U8(9),
                B(Star), R(5),
  /*   31 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(13),
                B(JumpIfToBooleanTrue), U8(82),
                B(LdaNamedProperty), R(5), U8(9), U8(15),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), R(3),
  /*   22 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Mov), R(0), R(20),
                B(SuspendGenerator), R(10), R(0), U8(20), U8(4),
                B(LdaFalse),
                B(Star), R(23),
                B(Mov), R(10), R(21),
                B(Mov), R(20), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(21), U8(3),
  /*   50 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(10), R(0), U8(20),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
                B(Star), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
                B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
                B(Ldar), R(20),
  /*   42 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(16),
                B(Mov), R(20), R(17),
                B(Jump), U8(60),
                B(LdaZero),
                B(Star), R(6),
                B(JumpLoop), U8(128), I8(0),
                B(Jump), U8(40),
                B(Star), R(20),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(20), U8(12), U8(13),
                B(Star), R(19),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(19),
                B(PushContext), R(20),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(17),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kReThrow), R(21), U8(1),
                B(PopContext), R(20),
                B(LdaSmi), I8(-1),
                B(Star), R(16),
                B(Jump), U8(8),
                B(Star), R(17),
                B(LdaSmi), I8(1),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(18),
                B(LdaZero),
                B(TestEqualStrict), R(6), U8(18),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(4), U8(14), U8(19),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(22),
                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(131),
                B(Star), R(19),
                B(LdaConstant), U8(15),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
                B(Throw),
                B(Mov), R(context), R(19),
                B(Mov), R(8), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Jump), U8(20),
                B(Star), R(20),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(20), U8(12), U8(16),
                B(Star), R(19),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(19),
                B(PushContext), R(20),
                B(PopContext), R(20),
                B(Jump), U8(27),
                B(Mov), R(8), R(19),
                B(Mov), R(4), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(19), 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(18),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
                B(Jump), U8(13),
                B(LdaZero),
                B(Star), R(12),
                B(Mov), R(17), R(13),
                B(Jump), U8(64),
                B(Ldar), R(17),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(13),
                B(LdaZero),
                B(Star), R(12),
                B(Jump), U8(53),
                B(Jump), U8(39),
                B(Star), R(16),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(16), U8(12), U8(19),
                B(Star), R(15),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(15),
                B(PushContext), R(16),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(18),
                B(Mov), R(2), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(17), U8(2),
                B(PopContext), R(16),
                B(Star), R(13),
                B(LdaSmi), I8(1),
                B(Star), R(12),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(12),
                B(Jump), U8(8),
                B(Star), R(13),
                B(LdaSmi), I8(2),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
                B(Ldar), R(14),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(21), U8(3), I8(0),
                B(Jump), U8(34),
                B(LdaTrue),
                B(Star), R(17),
                B(Mov), R(2), R(15),
                B(Mov), R(13), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(15), U8(3),
                B(Star), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
                B(Ldar), R(18),
  /*   50 S> */ B(Return),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
                B(Ldar), R(13),
  /*   50 S> */ B(Return),
                B(Ldar), R(13),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(10), U8(1),
                B(Ldar), R(12),
  /*   50 S> */ B(Return),
]
constant pool: [
  Smi [50],
  Smi [117],
  Smi [15],
  Smi [7],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  Smi [90],
  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 [14],
  FIXED_ARRAY_TYPE,
  Smi [412],
  Smi [6],
  Smi [28],
  Smi [35],
]
handlers: [
  [52, 498, 504],
  [55, 459, 461],
  [106, 305, 311],
  [109, 265, 267],
  [372, 382, 384],
]

---
snippet: "
  function* g() { yield 42 }
  async function* f() { yield* g() }
  f();
"
frame size: 20
parameter count: 1
bytecode array length: 918
bytecodes: [
                B(Mov), R(new_target), R(9),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(9), U8(1),
                B(PushContext), R(11),
                B(RestoreGeneratorState), R(9),
                B(Star), R(10),
                B(SwitchOnSmiNoFeedback), U8(0), U8(7), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
                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(0),
  /*   44 E> */ B(StackCheck),
                B(Star), R(9),
                B(Mov), R(context), R(13),
                B(Mov), R(context), R(14),
                B(LdaZero),
                B(Mov), R(0), R(15),
  /*   44 E> */ B(SuspendGenerator), R(9), R(0), U8(15), U8(4),
                B(Ldar), R(15),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
                B(Star), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
                B(Ldar), R(15),
  /*   44 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(11),
                B(Mov), R(15), R(12),
                B(JumpConstant), U8(30),
  /*   49 S> */ B(LdaUndefined),
                B(Star), R(1),
                B(LdaZero),
                B(Star), R(2),
                B(LdaUndefined),
                B(Star), R(3),
                B(LdaGlobal), U8(9), U8(6),
                B(Star), R(17),
  /*   56 E> */ B(CallUndefinedReceiver0), R(17), U8(4),
                B(Star), R(15),
                B(LdaNamedProperty), R(15), U8(10), U8(12),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(16),
                B(CallProperty0), R(16), R(15), U8(14),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(15), U8(11), U8(8),
                B(Star), R(16),
                B(CallProperty0), R(16), R(15), U8(10),
                B(Star), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(16), U8(1),
                B(Star), R(4),
                B(Ldar), R(10),
                B(SwitchOnSmiNoFeedback), U8(12), U8(6), I8(1),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(10),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(81),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
                B(StackCheck),
                B(LdaZero),
                B(TestEqualStrict), R(2), U8(20),
                B(Mov), R(2), R(15),
                B(JumpIfTrue), U8(18),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(15), U8(24),
                B(JumpIfTrue), U8(92),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(15), U8(33),
                B(JumpIfTrue), U8(185),
                B(JumpConstant), U8(24),
                B(LdaNamedProperty), R(4), U8(18), U8(18),
                B(Star), R(16),
                B(CallProperty1), R(16), R(4), R(1), U8(16),
                B(Star), R(16),
                B(Mov), R(9), R(17),
                B(Mov), R(16), R(18),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(17), U8(2),
                B(Star), R(16),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(9), R(0), U8(16), U8(6),
                B(Ldar), R(16),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(16),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorGetAwaitInputOrDebugPos), R(9), U8(1),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(18),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(18),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Mov), R(17), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(JumpConstant), U8(25),
                B(LdaNamedProperty), R(4), U8(19), U8(21),
                B(Star), R(3),
                B(TestUndetectable),
                B(JumpIfFalse), U8(10),
                B(LdaZero),
                B(Star), R(11),
                B(Mov), R(1), R(12),
                B(JumpConstant), U8(31),
                B(Mov), R(3), R(16),
                B(Mov), R(4), R(17),
                B(Mov), R(1), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(3),
                B(Star), R(16),
                B(Mov), R(9), R(17),
                B(Mov), R(16), R(18),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(17), U8(2),
                B(Star), R(16),
                B(LdaSmi), I8(2),
                B(SuspendGenerator), R(9), R(0), U8(16), U8(6),
                B(Ldar), R(16),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(16),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorGetAwaitInputOrDebugPos), R(9), U8(1),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(18),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(18),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Mov), R(17), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(JumpConstant), U8(26),
                B(LdaNamedProperty), R(4), U8(20), U8(25),
                B(Star), R(5),
                B(TestUndetectable),
                B(JumpIfFalse), U8(230),
                B(LdaNamedProperty), R(4), U8(19), U8(28),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(203),
                B(LdaZero),
                B(Star), R(16),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(16), U8(31),
                B(JumpIfFalse), U8(115),
                B(Ldar), R(6),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(131),
                B(Star), R(16),
                B(LdaConstant), U8(21),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(Mov), R(context), R(16),
                B(Mov), R(6), R(17),
                B(Mov), R(4), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Star), R(17),
                B(Mov), R(9), R(18),
                B(Mov), R(17), R(19),
                B(CallJSRuntime), U8(%async_generator_await_caught), R(18), U8(2),
                B(Star), R(17),
                B(LdaSmi), I8(3),
                B(SuspendGenerator), R(9), R(0), U8(17), U8(6),
                B(Ldar), R(17),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(17),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorGetAwaitInputOrDebugPos), R(9), U8(1),
                B(Star), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(19),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(Ldar), R(18),
                B(Jump), U8(20),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(22), U8(23),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(PopContext), R(17),
                B(Jump), U8(80),
                B(Mov), R(6), R(16),
                B(Mov), R(4), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
                B(Star), R(16),
                B(Mov), R(9), R(17),
                B(Mov), R(16), R(18),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(17), U8(2),
                B(Star), R(16),
                B(LdaSmi), I8(4),
                B(SuspendGenerator), R(9), R(0), U8(16), U8(6),
                B(Ldar), R(16),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(16),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorGetAwaitInputOrDebugPos), R(9), U8(1),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(18),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(18),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Mov), R(17), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
                B(Wide), B(LdaSmi), I16(145),
                B(Star), R(16),
                B(LdaConstant), U8(21),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(Mov), R(5), R(16),
                B(Mov), R(4), R(17),
                B(Mov), R(1), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(3),
                B(Star), R(16),
                B(Mov), R(9), R(17),
                B(Mov), R(16), R(18),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(17), U8(2),
                B(Star), R(16),
                B(LdaSmi), I8(5),
                B(SuspendGenerator), R(9), R(0), U8(16), U8(6),
                B(Ldar), R(16),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(16),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorGetAwaitInputOrDebugPos), R(9), U8(1),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(18),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(18),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Mov), R(17), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(Jump), U8(2),
                B(LdaNamedProperty), R(3), U8(27), U8(34),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(62),
                B(LdaNamedProperty), R(3), U8(28), U8(36),
                B(Star), R(3),
                B(LdaSmi), I8(6),
                B(Mov), R(3), R(15),
                B(SuspendGenerator), R(9), R(0), U8(15), U8(4),
                B(LdaFalse),
                B(Star), R(18),
                B(Mov), R(9), R(16),
                B(Mov), R(15), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(16), U8(3),
  /*   60 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(9), R(0), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(2),
                B(Wide), B(JumpLoop), U16(611), I16(0),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(2), U8(38),
                B(JumpIfFalse), U8(13),
                B(LdaNamedProperty), R(3), U8(28), U8(39),
                B(Star), R(12),
                B(LdaZero),
                B(Star), R(11),
                B(Jump), U8(67),
                B(LdaNamedProperty), R(3), U8(28), U8(41),
                B(Star), R(8),
                B(LdaUndefined),
                B(Star), R(12),
                B(LdaZero),
                B(Star), R(11),
                B(Jump), U8(53),
                B(Jump), U8(39),
                B(Star), R(15),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(15), U8(22), U8(29),
                B(Star), R(14),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(PushContext), R(15),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(17),
                B(Mov), R(0), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(16), U8(2),
                B(PopContext), R(15),
                B(Star), R(12),
                B(LdaSmi), I8(1),
                B(Star), R(11),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Jump), U8(8),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(13),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(SwitchOnSmiNoFeedback), U8(32), U8(3), I8(0),
                B(Jump), U8(34),
                B(LdaTrue),
                B(Star), R(16),
                B(Mov), R(0), R(14),
                B(Mov), R(12), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(14), U8(3),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
                B(Ldar), R(17),
  /*   60 S> */ B(Return),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
                B(Ldar), R(12),
  /*   60 S> */ B(Return),
                B(Ldar), R(12),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
                B(Ldar), R(11),
  /*   60 S> */ B(Return),
]
constant pool: [
  Smi [50],
  Smi [141],
  Smi [141],
  Smi [141],
  Smi [141],
  Smi [141],
  Smi [141],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  Smi [80],
  Smi [180],
  Smi [317],
  Smi [403],
  Smi [500],
  Smi [584],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  Smi [503],
  Smi [422],
  Smi [322],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  FIXED_ARRAY_TYPE,
  Smi [759],
  Smi [556],
  Smi [6],
  Smi [28],
  Smi [35],
]
handlers: [
  [52, 845, 851],
  [55, 806, 808],
  [443, 507, 509],
]

