#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function f(arr) {
    for (let x of arr) { let y = x; }
  }
  f([1, 2, 3]);
"
frame size: 17
parameter count: 2
bytecode array length: 248
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(13),
                B(Mov), R(context), R(14),
  /*   34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
                B(Star), R(16),
                B(CallProperty0), R(16), R(arg0), U8(2),
                B(Mov), R(arg0), R(15),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
  /*   34 E> */ B(LdaNamedProperty), R(4), U8(1), U8(4),
                B(Star), R(5),
  /*   29 S> */ B(CallProperty0), R(5), R(4), U8(6),
                B(Star), R(6),
  /*   29 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(2), U8(8),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaNamedProperty), R(6), U8(3), U8(10),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   20 E> */ B(StackCheck),
                B(Mov), R(3), R(1),
  /*   49 S> */ B(Mov), R(1), R(0),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(47), I8(0),
                B(Jump), U8(36),
                B(Star), R(15),
                B(Ldar), R(closure),
  /*   49 E> */ B(CreateCatchContext), R(15), U8(4), U8(5),
                B(PushContext), R(15),
                B(Star), R(14),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kReThrow), R(16), U8(1),
                B(PopContext), R(15),
                B(LdaSmi), I8(-1),
                B(Star), R(12),
                B(Star), R(11),
                B(Jump), U8(7),
                B(Star), R(12),
                B(LdaZero),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(13),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(4), U8(6), U8(14),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(16),
                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(14),
                B(LdaConstant), U8(7),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
                B(Throw),
                B(Mov), R(context), R(14),
                B(Mov), R(9), R(15),
                B(Mov), R(4), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(Jump), U8(27),
                B(Mov), R(9), R(14),
                B(Mov), R(4), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), 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(13),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(12),
                B(ReThrow),
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
  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 [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [7, 124, 132],
  [10, 88, 90],
  [192, 202, 204],
]

---
snippet: "
  function f(arr) {
    for (let x of arr) { eval('1'); }
  }
  f([1, 2, 3]);
"
frame size: 24
parameter count: 2
bytecode array length: 331
bytecodes: [
                B(CreateFunctionContext), U8(4),
                B(PushContext), R(9),
                B(Ldar), R(this),
                B(StaCurrentContextSlot), U8(5),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(CreateMappedArguments),
                B(StaCurrentContextSlot), U8(7),
                B(Ldar), R(8),
                B(StaCurrentContextSlot), U8(6),
  /*   10 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(10),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(13),
                B(Mov), R(context), R(14),
  /*   34 S> */ B(LdaContextSlot), R(10), U8(4), U8(0),
                B(Star), R(15),
                B(LdaNamedProperty), R(15), U8(1), U8(0),
                B(Star), R(16),
                B(CallProperty0), R(16), R(15), U8(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(1),
  /*   34 E> */ B(LdaNamedProperty), R(1), U8(2), U8(4),
                B(Star), R(2),
  /*   29 S> */ B(CallProperty0), R(2), R(1), U8(6),
                B(Star), R(3),
  /*   29 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(LdaNamedProperty), R(3), U8(3), U8(8),
                B(JumpIfToBooleanTrue), U8(78),
                B(LdaNamedProperty), R(3), U8(4), U8(10),
                B(Star), R(5),
                B(LdaSmi), I8(2),
                B(Star), R(4),
                B(Mov), R(5), R(0),
  /*   20 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(5),
                B(PushContext), R(15),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(5),
                B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(12), U8(3),
                B(Star), R(16),
                B(LdaConstant), U8(7),
                B(Star), R(17),
                B(LdaZero),
                B(Star), R(21),
                B(LdaSmi), I8(37),
                B(Star), R(22),
                B(LdaSmi), I8(41),
                B(Star), R(23),
                B(Mov), R(16), R(18),
                B(Mov), R(17), R(19),
                B(Mov), R(closure), R(20),
                B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(18), U8(6),
                B(Star), R(16),
  /*   41 E> */ B(CallUndefinedReceiver1), R(16), R(17), U8(14),
                B(PopContext), R(15),
                B(LdaZero),
                B(Star), R(4),
                B(JumpLoop), U8(97), I8(0),
                B(Jump), U8(36),
                B(Star), R(15),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(15), U8(8), U8(9),
                B(PushContext), R(15),
                B(Star), R(14),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(4), U8(16),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kReThrow), R(16), U8(1),
                B(PopContext), R(15),
                B(LdaSmi), I8(-1),
                B(Star), R(12),
                B(Star), R(11),
                B(Jump), U8(7),
                B(Star), R(12),
                B(LdaZero),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(13),
                B(LdaZero),
                B(TestEqualStrict), R(4), U8(17),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(1), U8(10), U8(18),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(4), U8(20),
                B(JumpIfFalse), U8(47),
                B(Ldar), R(6),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(14),
                B(LdaConstant), U8(11),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
                B(Throw),
                B(Mov), R(context), R(14),
                B(Mov), R(6), R(15),
                B(Mov), R(1), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(Jump), U8(27),
                B(Mov), R(6), R(14),
                B(Mov), R(1), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
                B(Ldar), R(13),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(12),
                B(ReThrow),
                B(PopContext), R(10),
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
  FIXED_ARRAY_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["1"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [35, 205, 213],
  [38, 169, 171],
  [273, 283, 285],
]

---
snippet: "
  function f(arr) {
    for (let x of arr) { (function() { return x; })(); }
  }
  f([1, 2, 3]);
"
frame size: 15
parameter count: 2
bytecode array length: 266
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(5),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
                B(Star), R(14),
                B(CallProperty0), R(14), R(arg0), U8(2),
                B(Mov), R(arg0), R(13),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   34 E> */ B(LdaNamedProperty), R(2), U8(1), U8(4),
                B(Star), R(3),
  /*   29 S> */ B(CallProperty0), R(3), R(2), U8(6),
                B(Star), R(4),
  /*   29 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(2), U8(8),
                B(JumpIfToBooleanTrue), U8(46),
                B(LdaNamedProperty), R(4), U8(3), U8(10),
                B(Star), R(6),
                B(LdaSmi), I8(2),
                B(Star), R(5),
                B(Mov), R(6), R(1),
  /*   20 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(4),
                B(PushContext), R(13),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(6),
                B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(CreateClosure), U8(5), U8(12), U8(2),
                B(Star), R(14),
  /*   67 E> */ B(CallUndefinedReceiver0), R(14), U8(13),
                B(PopContext), R(13),
                B(LdaZero),
                B(Star), R(5),
                B(JumpLoop), U8(65), I8(0),
                B(Jump), U8(36),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(6), U8(7),
                B(PushContext), R(13),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(5), U8(15),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kReThrow), R(14), U8(1),
                B(PopContext), R(13),
                B(LdaSmi), I8(-1),
                B(Star), R(10),
                B(Star), R(9),
                B(Jump), U8(7),
                B(Star), R(10),
                B(LdaZero),
                B(Star), R(9),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(5), U8(16),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(2), U8(8), U8(17),
                B(Star), R(7),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(5), U8(19),
                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(12),
                B(LdaConstant), U8(9),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
                B(Throw),
                B(Mov), R(context), R(12),
                B(Mov), R(7), R(13),
                B(Mov), R(2), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(Jump), U8(27),
                B(Mov), R(7), R(12),
                B(Mov), R(2), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), 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(11),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*   73 S> */ B(Return),
]
constant pool: [
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [7, 142, 150],
  [10, 106, 108],
  [210, 220, 222],
]

---
snippet: "
  function f(arr) {
    for (let { x, y } of arr) { let z = x + y; }
  }
  f([{ x: 0, y: 3 }, { x: 1, y: 9 }, { x: -12, y: 17 }]);
"
frame size: 20
parameter count: 2
bytecode array length: 286
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(10),
                B(Mov), R(context), R(16),
                B(Mov), R(context), R(17),
  /*   41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
                B(Star), R(19),
                B(CallProperty0), R(19), R(arg0), U8(2),
                B(Mov), R(arg0), R(18),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(7),
  /*   41 E> */ B(LdaNamedProperty), R(7), U8(1), U8(4),
                B(Star), R(8),
  /*   36 S> */ B(CallProperty0), R(8), R(7), U8(6),
                B(Star), R(9),
  /*   36 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(LdaNamedProperty), R(9), U8(2), U8(8),
                B(JumpIfToBooleanTrue), U8(66),
                B(LdaNamedProperty), R(9), U8(3), U8(10),
                B(Star), R(11),
                B(LdaSmi), I8(2),
                B(Star), R(10),
                B(Mov), R(11), R(5),
  /*   20 E> */ B(StackCheck),
                B(Mov), R(5), R(6),
                B(Ldar), R(6),
                B(JumpIfUndefined), U8(6),
                B(Ldar), R(6),
                B(JumpIfNotNull), U8(16),
                B(LdaSmi), I8(74),
                B(Star), R(18),
                B(LdaConstant), U8(4),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(18), U8(2),
  /*   31 E> */ B(Throw),
  /*   31 S> */ B(LdaNamedProperty), R(6), U8(4), U8(12),
                B(Star), R(1),
  /*   34 S> */ B(LdaNamedProperty), R(6), U8(5), U8(14),
                B(Star), R(2),
  /*   56 S> */ B(Ldar), R(2),
  /*   58 E> */ B(Add), R(1), U8(16),
                B(Star), R(0),
                B(LdaZero),
                B(Star), R(10),
                B(JumpLoop), U8(85), I8(0),
                B(Jump), U8(36),
                B(Star), R(18),
                B(Ldar), R(closure),
  /*   56 E> */ B(CreateCatchContext), R(18), U8(6), U8(7),
                B(PushContext), R(18),
                B(Star), R(17),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(10), U8(17),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(10),
                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(7),
                B(Star), R(15),
                B(LdaZero),
                B(Star), R(14),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(16),
                B(LdaZero),
                B(TestEqualStrict), R(10), U8(18),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(7), U8(8), U8(19),
                B(Star), R(12),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(10), U8(21),
                B(JumpIfFalse), U8(47),
                B(Ldar), R(12),
                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(9),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
                B(Throw),
                B(Mov), R(context), R(17),
                B(Mov), R(12), R(18),
                B(Mov), R(7), 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(12), R(17),
                B(Mov), R(7), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(13), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
                B(Ldar), R(16),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(14),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(15),
                B(ReThrow),
                B(LdaUndefined),
  /*   65 S> */ B(Return),
]
constant pool: [
  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 ["x"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["y"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [7, 162, 170],
  [10, 126, 128],
  [230, 240, 242],
]

---
snippet: "
  function* f(arr) {
    for (let x of arr) { let y = x; }
  }
  f([1, 2, 3]);
"
frame size: 20
parameter count: 2
bytecode array length: 320
bytecodes: [
                B(Ldar), R(3),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(3), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(3),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(13),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(14),
                B(Mov), R(this), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), U8(2),
                B(Star), R(3),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(3), R(0), U8(14), U8(0),
  /*   55 S> */ B(Return),
                B(ResumeGenerator), R(3), R(12), R(0), U8(14),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
                B(Ldar), R(14),
  /*   11 E> */ B(Throw),
                B(Ldar), R(14),
  /*   55 S> */ B(Return),
                B(LdaZero),
                B(Star), R(8),
                B(Mov), R(context), R(16),
                B(Mov), R(context), R(17),
  /*   35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(18),
                B(LdaNamedProperty), R(18), U8(3), U8(0),
                B(Star), R(19),
                B(CallProperty0), R(19), R(18), U8(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(5),
  /*   35 E> */ B(LdaNamedProperty), R(5), U8(4), U8(4),
                B(Star), R(6),
  /*   30 S> */ B(CallProperty0), R(6), R(5), U8(6),
                B(Star), R(7),
  /*   30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
                B(LdaNamedProperty), R(7), U8(5), U8(8),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaNamedProperty), R(7), U8(6), U8(10),
                B(Star), R(9),
                B(LdaSmi), I8(2),
                B(Star), R(8),
                B(Mov), R(9), R(4),
  /*   21 E> */ B(StackCheck),
                B(Mov), R(4), R(1),
  /*   50 S> */ B(Mov), R(1), R(0),
                B(LdaZero),
                B(Star), R(8),
                B(JumpLoop), U8(47), I8(0),
                B(Jump), U8(36),
                B(Star), R(18),
                B(Ldar), R(closure),
  /*   50 E> */ B(CreateCatchContext), R(18), U8(7), U8(8),
                B(PushContext), R(18),
                B(Star), R(17),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(8), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(8),
                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(7),
                B(Star), R(15),
                B(LdaZero),
                B(Star), R(14),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(16),
                B(LdaZero),
                B(TestEqualStrict), R(8), U8(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(5), U8(9), U8(14),
                B(Star), R(10),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(8), U8(16),
                B(JumpIfFalse), U8(47),
                B(Ldar), R(10),
                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(10), R(18),
                B(Mov), R(5), 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(10), R(17),
                B(Mov), R(5), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(Ldar), R(16),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(14),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(15),
                B(ReThrow),
                B(LdaUndefined),
  /*   55 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [10],
  Smi [7],
  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 [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [78, 196, 204],
  [81, 160, 162],
  [264, 274, 276],
]

---
snippet: "
  function* f(arr) {
    for (let x of arr) yield x;
  }
  f([1, 2, 3]);
"
frame size: 19
parameter count: 2
bytecode array length: 380
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(2), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(12),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                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),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(2), R(0), U8(13), U8(0),
  /*   49 S> */ B(Return),
                B(ResumeGenerator), R(2), R(11), R(0), U8(13),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(13),
  /*   11 E> */ B(Throw),
                B(Ldar), R(13),
  /*   49 S> */ B(Return),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
  /*   35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(17),
                B(LdaNamedProperty), R(17), U8(4), U8(0),
                B(Star), R(18),
                B(CallProperty0), R(18), R(17), U8(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
  /*   35 E> */ B(LdaNamedProperty), R(4), U8(5), U8(4),
                B(Star), R(5),
                B(Ldar), R(11),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   30 S> */ B(CallProperty0), R(5), R(4), U8(6),
                B(Star), R(6),
  /*   30 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(7), U8(8),
                B(JumpIfToBooleanTrue), U8(67),
                B(LdaNamedProperty), R(6), U8(8), U8(10),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   21 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   40 S> */ B(LdaFalse),
                B(Star), R(18),
                B(Mov), R(0), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
                B(SuspendGenerator), R(2), R(0), U8(17), U8(1),
  /*   49 S> */ B(Return),
                B(ResumeGenerator), R(2), R(11), R(0), U8(17),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
                B(Ldar), R(17),
  /*   40 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(17), R(14),
                B(Jump), U8(58),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(100), I8(0),
                B(Jump), U8(36),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(11), U8(12),
                B(PushContext), R(17),
                B(Star), R(16),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kReThrow), R(18), U8(1),
                B(PopContext), R(17),
                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(LdaZero),
                B(TestEqualStrict), R(7), U8(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(4), U8(13), U8(14),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(16),
                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(16),
                B(LdaConstant), U8(14),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(Mov), R(context), R(16),
                B(Mov), R(9), R(17),
                B(Mov), R(4), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(Jump), U8(27),
                B(Mov), R(9), R(16),
                B(Mov), R(4), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), 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(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*   49 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   49 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [96],
  Smi [10],
  Smi [7],
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [69],
  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 [9],
]
handlers: [
  [78, 249, 257],
  [81, 213, 215],
  [318, 328, 330],
]

---
snippet: "
  async function f(arr) {
    for (let x of arr) { let y = x; }
  }
  f([1, 2, 3]);
"
frame size: 24
parameter count: 2
bytecode array length: 372
bytecodes: [
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(13),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(12),
                B(Mov), R(context), R(16),
                B(Mov), R(context), R(17),
                B(LdaZero),
                B(Star), R(8),
                B(Mov), R(context), R(20),
                B(Mov), R(context), R(21),
  /*   40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(LdaNamedProperty), R(22), U8(0), U8(0),
                B(Star), R(23),
                B(CallProperty0), R(23), R(22), U8(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(5),
  /*   40 E> */ B(LdaNamedProperty), R(5), U8(1), U8(4),
                B(Star), R(6),
  /*   35 S> */ B(CallProperty0), R(6), R(5), U8(6),
                B(Star), R(7),
  /*   35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
                B(LdaNamedProperty), R(7), U8(2), U8(8),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaNamedProperty), R(7), U8(3), U8(10),
                B(Star), R(9),
                B(LdaSmi), I8(2),
                B(Star), R(8),
                B(Mov), R(9), R(4),
  /*   26 E> */ B(StackCheck),
                B(Mov), R(4), R(1),
  /*   55 S> */ B(Mov), R(1), R(0),
                B(LdaZero),
                B(Star), R(8),
                B(JumpLoop), U8(47), I8(0),
                B(Jump), U8(40),
                B(Star), R(22),
                B(Ldar), R(closure),
  /*   55 E> */ B(CreateCatchContext), R(22), U8(4), U8(5),
                B(Star), R(21),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(21),
                B(PushContext), R(22),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(8), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(8),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(23),
                B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1),
                B(PopContext), R(22),
                B(LdaSmi), I8(-1),
                B(Star), R(19),
                B(Star), R(18),
                B(Jump), U8(7),
                B(Star), R(19),
                B(LdaZero),
                B(Star), R(18),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(20),
                B(LdaZero),
                B(TestEqualStrict), R(8), U8(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(5), U8(6), U8(14),
                B(Star), R(10),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(8), U8(16),
                B(JumpIfFalse), U8(47),
                B(Ldar), R(10),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(21),
                B(LdaConstant), U8(7),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
                B(Throw),
                B(Mov), R(context), R(21),
                B(Mov), R(10), R(22),
                B(Mov), R(5), R(23),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(21),
                B(Jump), U8(27),
                B(Mov), R(10), R(21),
                B(Mov), R(5), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(Ldar), R(20),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(18),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(19),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(19),
                B(Mov), R(12), R(18),
                B(CallJSRuntime), U8(%promise_resolve), R(18), U8(2),
                B(LdaZero),
                B(Star), R(14),
                B(Mov), R(12), R(15),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(18),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(18), U8(4), U8(8),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(PushContext), R(18),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(20),
                B(LdaFalse),
                B(Star), R(21),
                B(Mov), R(12), R(19),
                B(CallJSRuntime), U8(%promise_internal_reject), R(19), U8(3),
                B(PopContext), R(18),
                B(LdaZero),
                B(Star), R(14),
                B(Mov), R(12), R(15),
                B(Jump), U8(16),
                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(CallJSRuntime), U8(%async_function_promise_release), R(12), U8(1),
                B(Ldar), R(16),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(15),
  /*   60 S> */ B(Return),
                B(Ldar), R(15),
                B(ReThrow),
                B(LdaUndefined),
  /*   60 S> */ B(Return),
]
constant pool: [
  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 [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [18, 331, 339],
  [21, 289, 291],
  [27, 149, 157],
  [30, 109, 111],
  [217, 227, 229],
]

---
snippet: "
  async function f(arr) {
    for (let x of arr) await x;
  }
  f([1, 2, 3]);
"
frame size: 25
parameter count: 2
bytecode array length: 459
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(1), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(13),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(14),
                B(Mov), R(this), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(14), 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(16),
                B(Mov), R(context), R(17),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(20),
                B(Mov), R(context), R(21),
  /*   40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(LdaNamedProperty), R(22), U8(1), U8(0),
                B(Star), R(23),
                B(CallProperty0), R(23), R(22), U8(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
  /*   40 E> */ B(LdaNamedProperty), R(4), U8(2), U8(4),
                B(Star), R(5),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(0),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   35 S> */ B(CallProperty0), R(5), R(4), U8(6),
                B(Star), R(6),
  /*   35 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(4), U8(8),
                B(JumpIfToBooleanTrue), U8(65),
                B(LdaNamedProperty), R(6), U8(5), U8(10),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), R(3),
  /*   26 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   45 S> */ B(Mov), R(2), R(22),
                B(Mov), R(0), R(23),
                B(Mov), R(11), R(24),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(22), U8(0),
  /*   54 S> */ B(Return),
                B(ResumeGenerator), R(2), R(12), R(0), U8(22),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
                B(ReThrow),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(98), I8(0),
                B(Jump), U8(40),
                B(Star), R(22),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(22), U8(6), U8(7),
                B(Star), R(21),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(21),
                B(PushContext), R(22),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(7), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(23),
                B(CallRuntime), U16(Runtime::kReThrow), R(23), U8(1),
                B(PopContext), R(22),
                B(LdaSmi), I8(-1),
                B(Star), R(19),
                B(Star), R(18),
                B(Jump), U8(7),
                B(Star), R(19),
                B(LdaZero),
                B(Star), R(18),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(20),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(4), U8(8), U8(14),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(79),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(16),
                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(21),
                B(LdaConstant), U8(9),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
                B(Throw),
                B(Mov), R(context), R(21),
                B(Mov), R(9), R(22),
                B(Mov), R(4), R(23),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(22), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(21),
                B(Jump), U8(27),
                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(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(20),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(18),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(19),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(19),
                B(Mov), R(11), R(18),
                B(CallJSRuntime), U8(%promise_resolve), R(18), U8(2),
                B(LdaZero),
                B(Star), R(14),
                B(Mov), R(11), R(15),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(18),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(18), U8(6), U8(10),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(PushContext), R(18),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(20),
                B(LdaFalse),
                B(Star), R(21),
                B(Mov), R(11), R(19),
                B(CallJSRuntime), U8(%promise_internal_reject), R(19), U8(3),
                B(PopContext), R(18),
                B(LdaZero),
                B(Star), R(14),
                B(Mov), R(11), R(15),
                B(Jump), U8(16),
                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(CallJSRuntime), U8(%async_function_promise_release), R(11), U8(1),
                B(Ldar), R(16),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(15),
  /*   54 S> */ B(Return),
                B(Ldar), R(15),
                B(ReThrow),
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
  Smi [81],
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [72],
  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: [
  [54, 418, 426],
  [57, 376, 378],
  [63, 236, 244],
  [66, 196, 198],
  [304, 314, 316],
]

