#
# 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: 24
parameter count: 1
bytecode array length: 554
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(2),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(11),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(19),
                B(Mov), R(context), R(20),
  /*   43 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(4), U8(1),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(3),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(21), U8(5), U8(5),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(7),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
                B(Star), R(4),
  /*   43 E> */ B(LdaNamedProperty), R(4), U8(6), U8(9),
                B(Star), R(5),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(7), U8(1), I8(0),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   40 S> */ B(CallProperty0), R(5), R(4), U8(11),
                B(Star), R(22),
                B(Mov), R(2), R(21),
                B(Mov), R(11), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(0),
  /*   57 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(21),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Mov), R(21), R(6),
  /*   40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
                B(LdaNamedProperty), R(6), U8(8), U8(13),
                B(JumpIfToBooleanTrue), U8(25),
                B(LdaNamedProperty), R(6), U8(9), U8(15),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   23 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(98), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(11),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(17),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
                B(PopContext), R(21),
                B(LdaSmi), I8(-1),
                B(Star), R(18),
                B(Star), R(17),
                B(Jump), U8(7),
                B(Star), R(18),
                B(LdaZero),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(18),
                B(JumpIfTrue), U8(171),
                B(LdaNamedProperty), R(4), U8(12), U8(19),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(160),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(21),
                B(JumpIfFalse), U8(88),
                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(20),
                B(LdaConstant), U8(13),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(9), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(22),
                B(Mov), R(2), R(21),
                B(Mov), R(11), R(23),
                B(CallJSRuntime), U8(%async_function_await_caught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(1),
  /*   57 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(21),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Ldar), R(21),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(Jump), U8(67),
                B(Mov), R(9), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Star), R(21),
                B(Mov), R(2), R(20),
                B(Mov), R(11), R(22),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(20), U8(2),
  /*   57 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(20),
                B(Star), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(21),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(21),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(20),
                B(ReThrow),
                B(Mov), R(20), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(20), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
                B(Ldar), R(19),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(17),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(18),
                B(Mov), R(11), R(17),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(2),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(10), U8(14),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(19),
                B(LdaFalse),
                B(Star), R(20),
                B(Mov), R(11), R(18),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(3),
                B(PopContext), R(17),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(14),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(CallJSRuntime), U8(%async_function_promise_release), R(11), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*   57 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   57 S> */ B(Return),
]
constant pool: [
  Smi [95],
  Smi [332],
  Smi [391],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [34],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [46, 513, 521],
  [49, 471, 473],
  [55, 250, 258],
  [58, 210, 212],
  [318, 369, 371],
]

---
snippet: "
  async function f() {
    for await (let x of [1, 2, 3]) { return x; }
  }
  f();
"
frame size: 24
parameter count: 1
bytecode array length: 583
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(2),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(11),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(19),
                B(Mov), R(context), R(20),
  /*   43 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(4), U8(1),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(3),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(21), U8(5), U8(5),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(7),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
                B(Star), R(4),
  /*   43 E> */ B(LdaNamedProperty), R(4), U8(6), U8(9),
                B(Star), R(5),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(7), U8(1), I8(0),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   40 S> */ B(CallProperty0), R(5), R(4), U8(11),
                B(Star), R(22),
                B(Mov), R(2), R(21),
                B(Mov), R(11), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(0),
  /*   68 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(21),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Mov), R(21), R(6),
  /*   40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
                B(LdaNamedProperty), R(6), U8(8), U8(13),
                B(JumpIfToBooleanTrue), U8(27),
                B(LdaNamedProperty), R(6), U8(9), U8(15),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   23 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   56 S> */ B(LdaZero),
                B(Star), R(17),
                B(Mov), R(8), R(18),
                B(Jump), U8(56),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(11),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(17),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
                B(PopContext), R(21),
                B(LdaSmi), I8(-1),
                B(Star), R(18),
                B(Star), R(17),
                B(Jump), U8(8),
                B(Star), R(18),
                B(LdaSmi), I8(1),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(18),
                B(JumpIfTrue), U8(171),
                B(LdaNamedProperty), R(4), U8(12), U8(19),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(160),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(21),
                B(JumpIfFalse), U8(88),
                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(20),
                B(LdaConstant), U8(13),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(9), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(22),
                B(Mov), R(2), R(21),
                B(Mov), R(11), R(23),
                B(CallJSRuntime), U8(%async_function_await_caught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(1),
  /*   68 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(21),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Ldar), R(21),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(Jump), U8(67),
                B(Mov), R(9), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Star), R(21),
                B(Mov), R(2), R(20),
                B(Mov), R(11), R(22),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(20), U8(2),
  /*   68 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(20),
                B(Star), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(21),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(21),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(20),
                B(ReThrow),
                B(Mov), R(20), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(20), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
                B(Ldar), R(19),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
                B(Jump), U8(13),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(18), R(14),
                B(Jump), U8(81),
                B(Ldar), R(18),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(18),
                B(Mov), R(11), R(17),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(2),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(59),
                B(Jump), U8(43),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(10), U8(16),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(19),
                B(LdaFalse),
                B(Star), R(20),
                B(Mov), R(11), R(18),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(3),
                B(PopContext), R(17),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(14),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(2),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(CallJSRuntime), U8(%async_function_promise_release), R(11), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(17), U8(3), I8(0),
                B(Jump), U8(21),
                B(Mov), R(11), R(16),
                B(Mov), R(14), R(17),
                B(CallJSRuntime), U8(%promise_resolve), R(16), U8(2),
                B(Ldar), R(11),
  /*   68 S> */ B(Return),
                B(Ldar), R(14),
  /*   68 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   68 S> */ B(Return),
]
constant pool: [
  Smi [95],
  Smi [335],
  Smi [394],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [34],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  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 [6],
  Smi [19],
  Smi [22],
]
handlers: [
  [46, 529, 537],
  [49, 486, 488],
  [55, 252, 260],
  [58, 212, 214],
  [321, 372, 374],
]

---
snippet: "
  async function f() {
    for await (let x of [10, 20, 30]) {
      if (x == 10) continue;
      if (x == 20) break;
    }
  }
  f();
"
frame size: 24
parameter count: 1
bytecode array length: 572
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(2),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(11),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(19),
                B(Mov), R(context), R(20),
  /*   43 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(4), U8(1),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(3),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(21), U8(5), U8(5),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(7),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
                B(Star), R(4),
  /*   43 E> */ B(LdaNamedProperty), R(4), U8(6), U8(9),
                B(Star), R(5),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(7), U8(1), I8(0),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   40 S> */ B(CallProperty0), R(5), R(4), U8(11),
                B(Star), R(22),
                B(Mov), R(2), R(21),
                B(Mov), R(11), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(0),
  /*  114 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(21),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Mov), R(21), R(6),
  /*   40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(21), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
                B(LdaNamedProperty), R(6), U8(8), U8(13),
                B(JumpIfToBooleanTrue), U8(43),
                B(LdaNamedProperty), R(6), U8(9), U8(15),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   23 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   63 S> */ B(LdaSmi), I8(10),
  /*   69 E> */ B(TestEqual), R(0), U8(17),
                B(JumpIfFalse), U8(4),
  /*   76 S> */ B(Jump), U8(14),
  /*   90 S> */ B(LdaSmi), I8(20),
  /*   96 E> */ B(TestEqual), R(0), U8(18),
                B(JumpIfFalse), U8(4),
  /*  103 S> */ B(Jump), U8(8),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(116), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(11),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(19),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
                B(PopContext), R(21),
                B(LdaSmi), I8(-1),
                B(Star), R(18),
                B(Star), R(17),
                B(Jump), U8(7),
                B(Star), R(18),
                B(LdaZero),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(20),
                B(JumpIfTrue), U8(171),
                B(LdaNamedProperty), R(4), U8(12), U8(21),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(160),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(23),
                B(JumpIfFalse), U8(88),
                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(20),
                B(LdaConstant), U8(13),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(9), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(22),
                B(Mov), R(2), R(21),
                B(Mov), R(11), R(23),
                B(CallJSRuntime), U8(%async_function_await_caught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(1),
  /*  114 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(21),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Ldar), R(21),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(Jump), U8(67),
                B(Mov), R(9), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Star), R(21),
                B(Mov), R(2), R(20),
                B(Mov), R(11), R(22),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(20), U8(2),
  /*  114 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(20),
                B(Star), R(20),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(21),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(21),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(20),
                B(ReThrow),
                B(Mov), R(20), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(20), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
                B(Ldar), R(19),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(17),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(18),
                B(Mov), R(11), R(17),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(2),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(10), U8(14),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(19),
                B(LdaFalse),
                B(Star), R(20),
                B(Mov), R(11), R(18),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(3),
                B(PopContext), R(17),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(14),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(CallJSRuntime), U8(%async_function_promise_release), R(11), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*  114 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*  114 S> */ B(Return),
]
constant pool: [
  Smi [95],
  Smi [350],
  Smi [409],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [34],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [46, 531, 539],
  [49, 489, 491],
  [55, 268, 276],
  [58, 228, 230],
  [336, 387, 389],
]

---
snippet: "
  async function f() {
    var x = { 'a': 1, 'b': 2 };
    for (x['a'] of [1,2,3]) { return x['a']; }
  }
  f();
"
frame size: 20
parameter count: 1
bytecode array length: 403
bytecodes: [
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(9),
                B(Mov), R(context), R(12),
                B(Mov), R(context), R(13),
  /*   31 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(14),
                B(Mov), R(14), R(1),
                B(LdaZero),
                B(Star), R(5),
                B(Mov), R(context), R(16),
                B(Mov), R(context), R(17),
  /*   68 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
                B(Star), R(18),
                B(LdaNamedProperty), R(18), U8(2), U8(2),
                B(Star), R(19),
                B(CallProperty0), R(19), R(18), U8(4),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   68 E> */ B(LdaNamedProperty), R(2), U8(3), U8(6),
                B(Star), R(3),
  /*   59 S> */ B(CallProperty0), R(3), R(2), U8(8),
                B(Star), R(4),
  /*   59 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(4), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
                B(LdaNamedProperty), R(4), U8(4), U8(10),
                B(JumpIfToBooleanTrue), U8(30),
  /*   58 E> */ B(LdaNamedProperty), R(4), U8(5), U8(12),
                B(Star), R(6),
                B(LdaSmi), I8(2),
                B(Star), R(5),
                B(Ldar), R(6),
                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(15),
                B(LdaZero),
                B(Star), R(14),
                B(Jump), U8(56),
                B(Jump), U8(40),
                B(Star), R(18),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(18), U8(7), U8(8),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(PushContext), R(18),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(5), U8(18),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kReThrow), R(19), U8(1),
                B(PopContext), R(18),
                B(LdaSmi), I8(-1),
                B(Star), R(15),
                B(Star), R(14),
                B(Jump), U8(8),
                B(Star), R(15),
                B(LdaSmi), I8(1),
                B(Star), R(14),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(16),
                B(LdaZero),
                B(TestEqualStrict), R(5), U8(19),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(2), U8(9), U8(20),
                B(Star), R(7),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(5), U8(22),
                B(JumpIfFalse), U8(47),
                B(Ldar), R(7),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(17),
                B(LdaConstant), U8(10),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
                B(Throw),
                B(Mov), R(context), R(17),
                B(Mov), R(7), R(18),
                B(Mov), R(2), R(19),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(18), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(Jump), U8(27),
                B(Mov), R(7), R(17),
                B(Mov), R(2), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
                B(Ldar), R(16),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
                B(Jump), U8(13),
                B(LdaZero),
                B(Star), R(10),
                B(Mov), R(15), R(11),
                B(Jump), U8(81),
                B(Ldar), R(15),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(15),
                B(Mov), R(9), R(14),
                B(CallJSRuntime), U8(%promise_resolve), R(14), U8(2),
                B(LdaSmi), I8(1),
                B(Star), R(10),
                B(Mov), R(9), R(11),
                B(Jump), U8(59),
                B(Jump), U8(43),
                B(Star), R(14),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(14), U8(7), U8(13),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(PushContext), R(14),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(16),
                B(LdaFalse),
                B(Star), R(17),
                B(Mov), R(9), R(15),
                B(CallJSRuntime), U8(%promise_internal_reject), R(15), U8(3),
                B(PopContext), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(10),
                B(Mov), R(9), R(11),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Star), R(10),
                B(Jump), U8(8),
                B(Star), R(11),
                B(LdaSmi), I8(2),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(12),
                B(CallJSRuntime), U8(%async_function_promise_release), R(9), U8(1),
                B(Ldar), R(12),
                B(SetPendingMessage),
                B(Ldar), R(10),
                B(SwitchOnSmiNoFeedback), U8(14), U8(3), I8(0),
                B(Jump), U8(21),
                B(Mov), R(9), R(13),
                B(Mov), R(11), R(14),
                B(CallJSRuntime), U8(%promise_resolve), R(13), U8(2),
                B(Ldar), R(9),
  /*   96 S> */ B(Return),
                B(Ldar), R(11),
  /*   96 S> */ B(Return),
                B(Ldar), R(11),
                B(ReThrow),
                B(LdaUndefined),
  /*   96 S> */ B(Return),
]
constant pool: [
  FIXED_ARRAY_TYPE,
  TUPLE2_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 [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  Smi [6],
  Smi [14],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [19],
  Smi [22],
]
handlers: [
  [10, 349, 357],
  [13, 306, 308],
  [27, 153, 161],
  [30, 113, 115],
  [222, 232, 234],
]

