#
# 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(147),
                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"],
  SCOPE_INFO_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(147),
                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: [
  SCOPE_INFO_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  SCOPE_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["1"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  SCOPE_INFO_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(147),
                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"],
  SCOPE_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  SCOPE_INFO_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(77),
                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(147),
                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"],
  SCOPE_INFO_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: 19
parameter count: 2
bytecode array length: 298
bytecodes: [
                B(SwitchOnGeneratorState), R(3), U8(0), U8(1),
                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(3),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(3), R(0), U8(13), U8(0),
                B(ResumeGenerator), R(3), R(0), U8(13),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(3), U8(1),
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
                B(Ldar), R(13),
  /*   11 E> */ B(Throw),
                B(Ldar), R(13),
  /*   55 S> */ B(Return),
                B(LdaZero),
                B(Star), R(8),
                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(3), 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(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(17),
                B(Ldar), R(closure),
  /*   50 E> */ B(CreateCatchContext), R(17), U8(7), U8(8),
                B(PushContext), R(17),
                B(Star), R(16),
                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(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(7),
                B(Star), R(14),
                B(LdaZero),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                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(147),
                B(Star), R(16),
                B(LdaConstant), U8(10),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(Mov), R(context), R(16),
                B(Mov), R(10), R(17),
                B(Mov), R(5), 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(10), R(16),
                B(Mov), R(5), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), 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(15),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(13),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   55 S> */ B(Return),
]
constant pool: [
  Smi [30],
  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"],
  SCOPE_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [56, 174, 182],
  [59, 138, 140],
  [242, 252, 254],
]

---
snippet: "
  function* f(arr) {
    for (let x of arr) yield x;
  }
  f([1, 2, 3]);
"
frame size: 18
parameter count: 2
bytecode array length: 342
bytecodes: [
                B(SwitchOnGeneratorState), R(2), U8(0), U8(2),
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(11),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(12),
                B(Mov), R(this), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(12), U8(2),
                B(Star), R(2),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(2), R(0), U8(12), U8(0),
                B(ResumeGenerator), R(2), R(0), U8(12),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(12),
  /*   11 E> */ B(Throw),
                B(Ldar), R(12),
  /*   49 S> */ B(Return),
                B(LdaZero),
                B(Star), R(7),
                B(Mov), R(context), R(14),
                B(Mov), R(context), R(15),
  /*   35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(16),
                B(LdaNamedProperty), R(16), U8(4), U8(0),
                B(Star), R(17),
                B(CallProperty0), R(17), R(16), 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),
  /*   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(6), U8(8),
                B(JumpIfToBooleanTrue), U8(65),
                B(LdaNamedProperty), R(6), U8(7), 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(17),
                B(Mov), R(0), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
  /*   40 E> */ B(SuspendGenerator), R(2), R(0), U8(16), U8(1),
                B(ResumeGenerator), R(2), R(0), U8(16),
                B(Star), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
                B(Ldar), R(16),
  /*   40 E> */ B(Throw),
                B(LdaZero),
                B(Star), R(12),
                B(Mov), R(16), R(13),
                B(Jump), U8(58),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(84), I8(0),
                B(Jump), U8(36),
                B(Star), R(16),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(16), U8(10), U8(11),
                B(PushContext), R(16),
                B(Star), R(15),
                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(17),
                B(CallRuntime), U16(Runtime::kReThrow), R(17), U8(1),
                B(PopContext), R(16),
                B(LdaSmi), I8(-1),
                B(Star), R(13),
                B(Star), R(12),
                B(Jump), U8(8),
                B(Star), R(13),
                B(LdaSmi), I8(1),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(14),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(4), U8(12), 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(147),
                B(Star), R(15),
                B(LdaConstant), U8(13),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
                B(Throw),
                B(Mov), R(context), R(15),
                B(Mov), R(9), R(16),
                B(Mov), R(4), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
                B(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(15),
                B(Jump), U8(27),
                B(Mov), R(9), R(15),
                B(Mov), R(4), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), 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(14),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(13),
  /*   49 S> */ B(Return),
                B(Ldar), R(13),
                B(ReThrow),
                B(LdaUndefined),
  /*   49 S> */ B(Return),
]
constant pool: [
  Smi [30],
  Smi [144],
  Smi [10],
  Smi [7],
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  Smi [15],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  SCOPE_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  Smi [6],
  Smi [9],
]
handlers: [
  [56, 211, 219],
  [59, 175, 177],
  [280, 290, 292],
]

---
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(147),
                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(InvokeIntrinsic), U8(Runtime::k_ResolvePromise), 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(InvokeIntrinsic), U8(Runtime::k_RejectPromise), 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"],
  SCOPE_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  SCOPE_INFO_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: 24
parameter count: 2
bytecode array length: 423
bytecodes: [
                B(SwitchOnGeneratorState), R(2), U8(0), U8(1),
                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),
  /*   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),
  /*   40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(1), U8(0),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), 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),
  /*   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(3), U8(8),
                B(JumpIfToBooleanTrue), U8(63),
                B(LdaNamedProperty), R(6), U8(4), 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(21),
                B(Mov), R(0), R(22),
                B(Mov), R(11), R(23),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(21), U8(3),
  /*   45 E> */ B(SuspendGenerator), R(2), R(0), U8(21), U8(0),
                B(ResumeGenerator), R(2), 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(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(82), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(5), U8(6),
                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(12),
                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(13),
                B(JumpIfTrue), U8(90),
                B(LdaNamedProperty), R(4), U8(7), 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(147),
                B(Star), R(20),
                B(LdaConstant), U8(8),
                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(Jump), U8(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(Jump), U8(27),
                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(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(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(InvokeIntrinsic), U8(Runtime::k_ResolvePromise), 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(5), U8(9),
                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(InvokeIntrinsic), U8(Runtime::k_RejectPromise), 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(10), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*   54 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
  Smi [134],
  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"],
  SCOPE_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  SCOPE_INFO_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [34, 382, 390],
  [37, 340, 342],
  [43, 200, 208],
  [46, 160, 162],
  [268, 278, 280],
]

