#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  async function f() {
    for await (let x of [1, 2, 3]) {}
  }
  f();
"
frame size: 21
parameter count: 1
bytecode array length: 325
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
                B(Mov), R(closure), R(4),
                B(Mov), R(this), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionEnter), R(4), U8(2),
                B(Star), R(0),
  /*   16 E> */ B(StackCheck),
                B(Mov), R(context), R(4),
  /*   43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37),
                B(Star), R(7),
                B(LdaNamedProperty), R(7), U8(3), U8(1),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(3),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(7), U8(4), U8(5),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(7),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(8), U8(1),
                B(Star), R(6),
                B(LdaNamedProperty), R(6), U8(5), U8(9),
                B(Star), R(5),
                B(LdaFalse),
                B(Star), R(9),
                B(Mov), R(context), R(12),
                B(LdaTrue),
                B(Star), R(9),
  /*   38 S> */ B(CallProperty0), R(5), R(6), U8(11),
                B(Star), R(15),
                B(Mov), R(0), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(14), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(14), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(14),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestReferenceEqual), R(15),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(14),
                B(Mov), R(14), R(13),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
                B(LdaNamedProperty), R(13), U8(6), U8(13),
                B(JumpIfToBooleanTrue), U8(23),
                B(LdaNamedProperty), R(13), U8(7), U8(15),
                B(Star), R(13),
                B(LdaFalse),
                B(Star), R(9),
                B(Mov), R(13), R(1),
  /*   23 E> */ B(StackCheck),
  /*   38 S> */ B(Mov), R(1), R(3),
                B(Ldar), R(13),
                B(JumpLoop), U8(77), I8(0),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Star), R(10),
                B(Jump), U8(7),
                B(Star), R(11),
                B(LdaZero),
                B(Star), R(10),
                B(LdaTheHole),
  /*   38 E> */ B(SetPendingMessage),
                B(Star), R(12),
                B(Ldar), R(9),
                B(JumpIfToBooleanTrue), U8(96),
                B(LdaNamedProperty), R(6), U8(8), U8(17),
                B(Star), R(16),
                B(JumpIfUndefined), U8(88),
                B(JumpIfNull), U8(86),
                B(Mov), R(context), R(17),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(18),
                B(LdaConstant), U8(9),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(18), U8(2),
                B(Throw),
                B(CallProperty0), R(16), R(6), U8(19),
                B(Star), R(19),
                B(Mov), R(0), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(18), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(18), U8(1),
                B(ResumeGenerator), R(0), R(0), U8(18),
                B(Star), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(19),
                B(LdaZero),
                B(TestReferenceEqual), R(19),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(Ldar), R(18),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(20), U8(1),
                B(Jump), U8(12),
                B(Star), R(17),
                B(LdaZero),
                B(TestReferenceEqual), R(10),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Ldar), R(12),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestReferenceEqual), R(10),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(11),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(6),
                B(LdaTrue),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionResolve), R(5), U8(3),
  /*   57 S> */ B(Return),
                B(Star), R(5),
                B(CreateCatchContext), R(5), U8(10),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(PushContext), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(LdaTrue),
                B(Star), R(8),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionReject), R(6), U8(3),
  /*   57 S> */ B(Return),
]
constant pool: [
  Smi [98],
  Smi [229],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  SCOPE_INFO_TYPE,
]
handlers: [
  [20, 297, 297],
  [77, 157, 165],
  [191, 260, 262],
]

---
snippet: "
  async function f() {
    for await (let x of [1, 2, 3]) { return x; }
  }
  f();
"
frame size: 21
parameter count: 1
bytecode array length: 346
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
                B(Mov), R(closure), R(4),
                B(Mov), R(this), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionEnter), R(4), U8(2),
                B(Star), R(0),
  /*   16 E> */ B(StackCheck),
                B(Mov), R(context), R(4),
  /*   43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37),
                B(Star), R(7),
                B(LdaNamedProperty), R(7), U8(3), U8(1),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(3),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(7), U8(4), U8(5),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(7),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(8), U8(1),
                B(Star), R(6),
                B(LdaNamedProperty), R(6), U8(5), U8(9),
                B(Star), R(5),
                B(LdaFalse),
                B(Star), R(9),
                B(Mov), R(context), R(12),
                B(LdaTrue),
                B(Star), R(9),
  /*   38 S> */ B(CallProperty0), R(5), R(6), U8(11),
                B(Star), R(15),
                B(Mov), R(0), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(14), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(14), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(14),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestReferenceEqual), R(15),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(14),
                B(Mov), R(14), R(13),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
                B(LdaNamedProperty), R(13), U8(6), U8(13),
                B(JumpIfToBooleanTrue), U8(27),
                B(LdaNamedProperty), R(13), U8(7), U8(15),
                B(Star), R(13),
                B(LdaFalse),
                B(Star), R(9),
                B(Mov), R(13), R(1),
  /*   23 E> */ B(StackCheck),
  /*   38 S> */ B(Mov), R(1), R(3),
  /*   56 S> */ B(LdaSmi), I8(1),
                B(Mov), R(13), R(11),
                B(Star), R(10),
                B(Jump), U8(15),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Star), R(10),
                B(Jump), U8(7),
                B(Star), R(11),
                B(LdaZero),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(12),
                B(Ldar), R(9),
                B(JumpIfToBooleanTrue), U8(96),
                B(LdaNamedProperty), R(6), U8(8), U8(17),
                B(Star), R(16),
                B(JumpIfUndefined), U8(88),
                B(JumpIfNull), U8(86),
                B(Mov), R(context), R(17),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(18),
                B(LdaConstant), U8(9),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(18), U8(2),
                B(Throw),
                B(CallProperty0), R(16), R(6), U8(19),
                B(Star), R(19),
                B(Mov), R(0), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(18), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(18), U8(1),
                B(ResumeGenerator), R(0), R(0), U8(18),
                B(Star), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(19),
                B(LdaZero),
                B(TestReferenceEqual), R(19),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(Ldar), R(18),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(20), U8(1),
                B(Jump), U8(12),
                B(Star), R(17),
                B(LdaZero),
                B(TestReferenceEqual), R(10),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Ldar), R(12),
                B(SetPendingMessage),
                B(Ldar), R(10),
                B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
                B(Jump), U8(19),
                B(Ldar), R(11),
                B(ReThrow),
                B(LdaTrue),
                B(Star), R(18),
                B(Mov), R(0), R(16),
                B(Mov), R(11), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionResolve), R(16), U8(3),
  /*   68 S> */ B(Return),
                B(LdaUndefined),
                B(Star), R(6),
                B(LdaTrue),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionResolve), R(5), U8(3),
  /*   68 S> */ B(Return),
                B(Star), R(5),
                B(CreateCatchContext), R(5), U8(12),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(PushContext), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(LdaTrue),
                B(Star), R(8),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionReject), R(6), U8(3),
  /*   68 S> */ B(Return),
]
constant pool: [
  Smi [98],
  Smi [233],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  Smi [6],
  Smi [9],
  SCOPE_INFO_TYPE,
]
handlers: [
  [20, 318, 318],
  [77, 161, 169],
  [195, 264, 266],
]

---
snippet: "
  async function f() {
    for await (let x of [10, 20, 30]) {
      if (x == 10) continue;
      if (x == 20) break;
    }
  }
  f();
"
frame size: 21
parameter count: 1
bytecode array length: 341
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
                B(Mov), R(closure), R(4),
                B(Mov), R(this), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionEnter), R(4), U8(2),
                B(Star), R(0),
  /*   16 E> */ B(StackCheck),
                B(Mov), R(context), R(4),
  /*   43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37),
                B(Star), R(7),
                B(LdaNamedProperty), R(7), U8(3), U8(1),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(3),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(7), U8(4), U8(5),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(7),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(8), U8(1),
                B(Star), R(6),
                B(LdaNamedProperty), R(6), U8(5), U8(9),
                B(Star), R(5),
                B(LdaFalse),
                B(Star), R(9),
                B(Mov), R(context), R(12),
                B(LdaTrue),
                B(Star), R(9),
  /*   38 S> */ B(CallProperty0), R(5), R(6), U8(11),
                B(Star), R(15),
                B(Mov), R(0), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(14), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(14), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(14),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestReferenceEqual), R(15),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(14),
                B(Mov), R(14), R(13),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
                B(LdaNamedProperty), R(13), U8(6), U8(13),
                B(JumpIfToBooleanTrue), U8(39),
                B(LdaNamedProperty), R(13), U8(7), U8(15),
                B(Star), R(13),
                B(LdaFalse),
                B(Star), R(9),
                B(Mov), R(13), R(1),
  /*   23 E> */ B(StackCheck),
  /*   38 S> */ B(Mov), R(1), R(3),
  /*   63 S> */ B(LdaSmi), I8(10),
  /*   69 E> */ B(TestEqual), R(3), U8(17),
                B(JumpIfFalse), U8(4),
  /*   76 S> */ B(Jump), U8(11),
  /*   90 S> */ B(LdaSmi), I8(20),
  /*   96 E> */ B(TestEqual), R(3), U8(18),
                B(JumpIfFalse), U8(4),
  /*  103 S> */ B(Jump), U8(5),
                B(JumpLoop), U8(93), I8(0),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Star), R(10),
                B(Jump), U8(7),
                B(Star), R(11),
                B(LdaZero),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(12),
                B(Ldar), R(9),
                B(JumpIfToBooleanTrue), U8(96),
                B(LdaNamedProperty), R(6), U8(8), U8(19),
                B(Star), R(16),
                B(JumpIfUndefined), U8(88),
                B(JumpIfNull), U8(86),
                B(Mov), R(context), R(17),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(18),
                B(LdaConstant), U8(9),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(18), U8(2),
                B(Throw),
                B(CallProperty0), R(16), R(6), U8(21),
                B(Star), R(19),
                B(Mov), R(0), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(18), U8(2),
                B(SuspendGenerator), R(0), R(0), U8(18), U8(1),
                B(ResumeGenerator), R(0), R(0), U8(18),
                B(Star), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(19),
                B(LdaZero),
                B(TestReferenceEqual), R(19),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(Ldar), R(18),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(20), U8(1),
                B(Jump), U8(12),
                B(Star), R(17),
                B(LdaZero),
                B(TestReferenceEqual), R(10),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(17),
                B(ReThrow),
                B(Ldar), R(12),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestReferenceEqual), R(10),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(11),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(6),
                B(LdaTrue),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionResolve), R(5), U8(3),
  /*  114 S> */ B(Return),
                B(Star), R(5),
                B(CreateCatchContext), R(5), U8(10),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(PushContext), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(LdaTrue),
                B(Star), R(8),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionReject), R(6), U8(3),
  /*  114 S> */ B(Return),
]
constant pool: [
  Smi [98],
  Smi [245],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  SCOPE_INFO_TYPE,
]
handlers: [
  [20, 313, 313],
  [77, 173, 181],
  [207, 276, 278],
]

---
snippet: "
  async function f() {
    var x = { 'a': 1, 'b': 2 };
    for (x['a'] of [1,2,3]) { return x['a']; }
  }
  f();
"
frame size: 17
parameter count: 1
bytecode array length: 261
bytecodes: [
                B(Mov), R(closure), R(2),
                B(Mov), R(this), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionEnter), R(2), U8(2),
                B(Star), R(0),
  /*   16 E> */ B(StackCheck),
                B(Mov), R(context), R(2),
  /*   31 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
                B(Star), R(1),
  /*   68 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
                B(Star), R(5),
                B(LdaNamedProperty), R(5), U8(2), U8(2),
                B(Star), R(6),
                B(CallProperty0), R(6), R(5), U8(4),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
                B(LdaNamedProperty), R(4), U8(3), U8(6),
                B(Star), R(3),
                B(LdaFalse),
                B(Star), R(7),
                B(Mov), R(context), R(10),
                B(LdaTrue),
                B(Star), R(7),
  /*   59 S> */ B(CallProperty0), R(3), R(4), U8(8),
                B(Star), R(11),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(LdaNamedProperty), R(11), U8(4), U8(10),
                B(JumpIfToBooleanTrue), U8(33),
                B(LdaNamedProperty), R(11), U8(5), U8(12),
                B(Star), R(11),
                B(LdaFalse),
                B(Star), R(7),
                B(Ldar), R(11),
  /*   58 E> */ B(StaNamedProperty), R(1), U8(6), U8(14),
  /*   53 E> */ B(StackCheck),
  /*   87 S> */ B(LdaNamedProperty), R(1), U8(6), U8(16),
                B(Star), R(9),
                B(LdaSmi), I8(1),
                B(Star), R(8),
                B(Mov), R(1), R(12),
                B(Jump), U8(15),
                B(LdaSmi), I8(-1),
                B(Star), R(9),
                B(Star), R(8),
                B(Jump), U8(7),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(10),
                B(Ldar), R(7),
                B(JumpIfToBooleanTrue), U8(60),
                B(LdaNamedProperty), R(4), U8(7), U8(18),
                B(Star), R(13),
                B(JumpIfUndefined), U8(52),
                B(JumpIfNull), U8(50),
                B(Mov), R(context), R(14),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(15),
                B(LdaConstant), U8(8),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
                B(Throw),
                B(CallProperty0), R(13), R(4), U8(20),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(15), U8(1),
                B(Jump), U8(12),
                B(Star), R(14),
                B(LdaZero),
                B(TestReferenceEqual), R(8),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(10),
                B(SetPendingMessage),
                B(Ldar), R(8),
                B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
                B(Jump), U8(19),
                B(Ldar), R(9),
                B(ReThrow),
                B(LdaFalse),
                B(Star), R(15),
                B(Mov), R(0), R(13),
                B(Mov), R(9), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionResolve), R(13), U8(3),
  /*   96 S> */ B(Return),
                B(LdaUndefined),
                B(Star), R(4),
                B(LdaFalse),
                B(Star), R(5),
                B(Mov), R(0), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionResolve), R(3), U8(3),
  /*   96 S> */ B(Return),
                B(Star), R(3),
                B(CreateCatchContext), R(3), U8(11),
                B(Star), R(2),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(2),
                B(PushContext), R(3),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(5),
                B(LdaFalse),
                B(Star), R(6),
                B(Mov), R(0), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionReject), R(4), U8(3),
  /*   96 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  Smi [6],
  Smi [9],
  SCOPE_INFO_TYPE,
]
handlers: [
  [16, 233, 233],
  [59, 112, 120],
  [146, 179, 181],
]

