#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  async function* f() { }
  f();
"
frame size: 9
parameter count: 1
bytecode array length: 216
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(15),
                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),
  /*   17 E> */ B(StackCheck),
                B(Mov), R(context), R(4),
                B(Mov), R(context), R(5),
                B(Ldar), R(0),
  /*   17 E> */ B(SuspendGenerator), R(0), R(0), U8(6), U8(0),
  /*   22 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(6),
  /*   17 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(Jump), U8(100),
                B(LdaUndefined),
                B(Star), R(7),
                B(Mov), R(0), R(6),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(6), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(6), U8(1),
  /*   22 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(7),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(7),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(6),
                B(ReThrow),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(Jump), U8(55),
                B(Jump), U8(39),
                B(Star), R(6),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(6), U8(4), U8(5),
                B(Star), R(5),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(5),
                B(PushContext), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(8),
                B(Mov), R(0), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(7), U8(2),
                B(PopContext), R(6),
                B(Star), R(3),
                B(LdaSmi), I8(1),
                B(Star), R(2),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Star), R(2),
                B(Jump), U8(8),
                B(Star), R(3),
                B(LdaSmi), I8(2),
                B(Star), R(2),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(4),
                B(SetPendingMessage),
                B(Ldar), R(2),
                B(SwitchOnSmiNoFeedback), U8(6), U8(3), I8(0),
                B(Jump), U8(22),
                B(LdaTrue),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(Mov), R(3), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(5), U8(3),
  /*   22 S> */ B(Return),
                B(Ldar), R(3),
  /*   22 S> */ B(Return),
                B(Ldar), R(3),
                B(ReThrow),
                B(LdaUndefined),
  /*   22 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [79],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [20],
  Smi [23],
]
handlers: [
  [40, 161, 169],
  [43, 122, 124],
]

---
snippet: "
  async function* f() { yield 42 }
  f();
"
frame size: 9
parameter count: 1
bytecode array length: 262
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(3), I8(0),
                B(Abort), U8(15),
                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),
  /*   17 E> */ B(StackCheck),
                B(Mov), R(context), R(4),
                B(Mov), R(context), R(5),
                B(Ldar), R(0),
  /*   17 E> */ B(SuspendGenerator), R(0), R(0), U8(6), U8(0),
  /*   31 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
                B(Ldar), R(6),
  /*   17 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(Jump), U8(146),
  /*   22 S> */ B(LdaSmi), I8(42),
                B(Star), R(7),
                B(LdaFalse),
                B(Star), R(8),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorYield), R(6), U8(3),
                B(SuspendGenerator), R(0), R(0), U8(6), U8(1),
  /*   31 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
                B(Ldar), R(6),
  /*   22 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(Jump), U8(100),
                B(LdaUndefined),
                B(Star), R(7),
                B(Mov), R(0), R(6),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(6), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(6), U8(2),
  /*   31 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(7),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(7),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(6),
                B(ReThrow),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(Jump), U8(55),
                B(Jump), U8(39),
                B(Star), R(6),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(6), U8(7), U8(8),
                B(Star), R(5),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(5),
                B(PushContext), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(8),
                B(Mov), R(0), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(7), U8(2),
                B(PopContext), R(6),
                B(Star), R(3),
                B(LdaSmi), I8(1),
                B(Star), R(2),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Star), R(2),
                B(Jump), U8(8),
                B(Star), R(3),
                B(LdaSmi), I8(2),
                B(Star), R(2),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(4),
                B(SetPendingMessage),
                B(Ldar), R(2),
                B(SwitchOnSmiNoFeedback), U8(9), U8(3), I8(0),
                B(Jump), U8(22),
                B(LdaTrue),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(Mov), R(3), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(5), U8(3),
  /*   31 S> */ B(Return),
                B(Ldar), R(3),
  /*   31 S> */ B(Return),
                B(Ldar), R(3),
                B(ReThrow),
                B(LdaUndefined),
  /*   31 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [83],
  Smi [125],
  Smi [15],
  Smi [7],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [20],
  Smi [23],
]
handlers: [
  [40, 207, 215],
  [43, 168, 170],
]

---
snippet: "
  async function* f() { for (let x of [42]) yield x }
  f();
"
frame size: 23
parameter count: 1
bytecode array length: 536
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(12),
                B(RestoreGeneratorState), R(2),
                B(Star), R(11),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(Abort), U8(15),
                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(Mov), R(context), R(14),
                B(Mov), R(context), R(15),
                B(Ldar), R(2),
  /*   17 E> */ B(SuspendGenerator), R(2), R(0), U8(16), U8(0),
  /*   50 S> */ B(Return),
                B(ResumeGenerator), R(2), R(11), R(0), U8(16),
                B(Star), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(3), 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(7),
                B(Mov), R(context), R(18),
                B(Mov), R(context), R(19),
  /*   36 S> */ B(CreateArrayLiteral), U8(5), U8(0), U8(37),
                B(Star), R(20),
                B(LdaNamedProperty), R(20), U8(6), U8(1),
                B(Star), R(21),
                B(CallProperty0), R(21), R(20), U8(3),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
  /*   36 E> */ B(LdaNamedProperty), R(4), U8(7), U8(5),
                B(Star), R(5),
                B(Ldar), R(11),
                B(SwitchOnSmiNoFeedback), U8(8), U8(1), I8(1),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   31 S> */ B(CallProperty0), R(5), R(4), U8(7),
                B(Star), R(6),
  /*   31 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
                B(LdaNamedProperty), R(6), U8(9), U8(9),
                B(JumpIfToBooleanTrue), U8(70),
                B(LdaNamedProperty), R(6), U8(10), U8(11),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   22 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   42 S> */ B(LdaFalse),
                B(Star), R(22),
                B(Mov), R(2), R(20),
                B(Mov), R(0), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorYield), R(20), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(20), U8(1),
  /*   50 S> */ B(Return),
                B(ResumeGenerator), R(2), R(11), R(0), U8(20),
                B(Star), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(11), 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(62),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(103), I8(0),
                B(Jump), U8(40),
                B(Star), R(20),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(20), U8(13), U8(14),
                B(Star), R(19),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(19),
                B(PushContext), R(20),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(13),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                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(17),
                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(7), U8(14),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(4), U8(15), U8(15),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(17),
                B(JumpIfFalse), U8(47),
                B(Ldar), R(9),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(19),
                B(LdaConstant), U8(16),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
                B(Throw),
                B(Mov), R(context), R(19),
                B(Mov), R(9), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(19),
                B(Jump), U8(27),
                B(Mov), R(9), R(19),
                B(Mov), R(4), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(19), U8(2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), 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(103),
                B(Ldar), R(17),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(17),
                B(Mov), R(2), R(16),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(16), U8(2),
                B(SuspendGenerator), R(2), R(0), U8(16), U8(2),
  /*   50 S> */ B(Return),
                B(ResumeGenerator), R(2), R(11), R(0), U8(16),
                B(Star), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(17),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(17),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(16),
                B(ReThrow),
                B(LdaZero),
                B(Star), R(12),
                B(Mov), R(16), R(13),
                B(Jump), U8(55),
                B(Jump), U8(39),
                B(Star), R(16),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(16), U8(13), 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(16),
                B(LdaSmi), I8(-1),
                B(Star), R(13),
                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(22),
                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),
  /*   50 S> */ B(Return),
                B(Ldar), R(13),
  /*   50 S> */ B(Return),
                B(Ldar), R(13),
                B(ReThrow),
                B(LdaUndefined),
  /*   50 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [103],
  Smi [399],
  Smi [15],
  Smi [7],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [72],
  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 [""],
  Smi [6],
  Smi [14],
  FIXED_ARRAY_TYPE,
  Smi [420],
  Smi [6],
  Smi [20],
  Smi [23],
]
handlers: [
  [40, 481, 489],
  [43, 442, 444],
  [83, 263, 271],
  [86, 223, 225],
  [332, 342, 344],
]

---
snippet: "
  function* g() { yield 42 }
  async function* f() { yield* g() }
  f();
"
frame size: 18
parameter count: 1
bytecode array length: 526
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(5), I8(0),
                B(Abort), U8(15),
                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),
  /*   44 E> */ B(StackCheck),
                B(Mov), R(context), R(4),
                B(Mov), R(context), R(5),
                B(Ldar), R(0),
  /*   44 E> */ B(SuspendGenerator), R(0), R(0), U8(6), U8(0),
  /*   60 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
                B(Ldar), R(6),
  /*   44 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(JumpConstant), U8(22),
  /*   49 S> */ B(LdaGlobal), U8(7), U8(0),
                B(Star), R(13),
  /*   56 E> */ B(CallUndefinedReceiver0), R(13), U8(2),
                B(Star), R(11),
                B(LdaNamedProperty), R(11), U8(8), U8(4),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(12),
                B(CallProperty0), R(12), R(11), U8(6),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(11), U8(9), U8(8),
                B(Star), R(12),
                B(CallProperty0), R(12), R(11), U8(10),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(12), U8(1),
                B(Star), R(8),
                B(LdaNamedProperty), R(8), U8(10), U8(12),
                B(Star), R(10),
                B(LdaUndefined),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(7),
                B(Ldar), R(1),
                B(SwitchOnSmiNoFeedback), U8(11), U8(3), I8(1),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(1),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
                B(Ldar), R(7),
                B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(1),
                B(CallProperty1), R(10), R(8), R(9), U8(14),
                B(Jump), U8(112),
                B(LdaNamedProperty), R(8), U8(16), U8(16),
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(13),
                B(CallProperty1), R(13), R(8), R(9), U8(18),
                B(Jump), U8(95),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(9), R(3),
                B(JumpConstant), U8(23),
                B(LdaNamedProperty), R(8), U8(17), U8(20),
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(13),
                B(CallProperty1), R(13), R(8), R(9), U8(22),
                B(Jump), U8(70),
                B(LdaNamedProperty), R(8), U8(16), U8(24),
                B(JumpIfUndefined), U8(59),
                B(JumpIfNull), U8(57),
                B(Star), R(13),
                B(CallProperty0), R(13), R(8), U8(26),
                B(Jump), U8(2),
                B(Star), R(14),
                B(Mov), R(0), R(13),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(13), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(13), U8(2),
  /*   60 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(13),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(14),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(14),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(13),
                B(ReThrow),
                B(Ldar), R(13),
                B(JumpIfJSReceiver), U8(9),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(15), U8(1),
                B(CallRuntime), U16(Runtime::kThrowThrowMethodMissing), R(0), U8(0),
                B(Star), R(14),
                B(Mov), R(0), R(13),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(13), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(13), U8(3),
  /*   60 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(13),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(14),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(14),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(13),
                B(ReThrow),
                B(Ldar), R(13),
                B(Mov), R(13), R(6),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
                B(LdaNamedProperty), R(6), U8(18), U8(28),
                B(JumpIfToBooleanTrue), U8(40),
                B(LdaNamedProperty), R(6), U8(19), U8(30),
                B(Star), R(16),
                B(LdaFalse),
                B(Star), R(17),
                B(Mov), R(0), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorYield), R(15), U8(3),
                B(SuspendGenerator), R(0), R(0), U8(15), U8(1),
  /*   60 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(15),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(7),
                B(JumpLoop), U8(226), I8(0),
                B(LdaNamedProperty), R(6), U8(19), U8(32),
                B(Star), R(8),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(7),
                B(JumpIfFalse), U8(10),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(8), R(3),
                B(Jump), U8(100),
                B(LdaUndefined),
                B(Star), R(7),
                B(Mov), R(0), R(6),
                B(CallJSRuntime), U8(%async_generator_await_uncaught), R(6), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(6), U8(4),
  /*   60 S> */ B(Return),
                B(ResumeGenerator), R(0), R(1), R(0), U8(6),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(7),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(7),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(6),
                B(ReThrow),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(6), R(3),
                B(Jump), U8(55),
                B(Jump), U8(39),
                B(Star), R(6),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(6), U8(20), U8(21),
                B(Star), R(5),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(5),
                B(PushContext), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(8),
                B(Mov), R(0), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(7), U8(2),
                B(PopContext), R(6),
                B(Star), R(3),
                B(LdaSmi), I8(1),
                B(Star), R(2),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Star), R(2),
                B(Jump), U8(8),
                B(Star), R(3),
                B(LdaSmi), I8(2),
                B(Star), R(2),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(4),
                B(SetPendingMessage),
                B(Ldar), R(2),
                B(SwitchOnSmiNoFeedback), U8(24), U8(3), I8(0),
                B(Jump), U8(22),
                B(LdaTrue),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(Mov), R(3), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(5), U8(3),
  /*   60 S> */ B(Return),
                B(Ldar), R(3),
  /*   60 S> */ B(Return),
                B(Ldar), R(3),
                B(ReThrow),
                B(LdaUndefined),
  /*   60 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [124],
  Smi [124],
  Smi [124],
  Smi [389],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [211],
  Smi [98],
  Smi [150],
  Smi [11],
  Smi [36],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  Smi [410],
  Smi [297],
  Smi [6],
  Smi [20],
  Smi [23],
]
handlers: [
  [40, 471, 479],
  [43, 432, 434],
]

