#
# 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: 260
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(13),
                B(Mov), R(context), R(14),
  /*   34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(3),
                B(Star), R(16),
                B(CallProperty0), R(16), R(arg0), U8(5),
                B(Mov), R(arg0), R(15),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
  /*   31 S> */ B(LdaNamedProperty), R(4), U8(1), U8(9),
                B(Star), R(15),
  /*   31 E> */ B(CallProperty0), R(15), R(4), U8(7),
                B(Star), R(5),
  /*   31 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(LdaNamedProperty), R(5), U8(2), U8(11),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaNamedProperty), R(5), U8(3), U8(13),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), 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(6),
                B(JumpLoop), U8(53), 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(10),
                B(Star), R(14),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(15),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kReThrow), R(15), U8(1),
                B(PopContext), R(10),
                B(LdaSmi), I8(-1),
                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(6), U8(16),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(4), U8(6), U8(17),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(20),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(8),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                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(8), R(15),
                B(Mov), R(4), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), U8(2),
                B(Jump), U8(20),
                B(Star), R(15),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(15), U8(4), U8(8),
                B(Star), R(14),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(14),
                B(PushContext), R(10),
                B(PopContext), R(10),
                B(Jump), U8(27),
                B(Mov), R(8), R(14),
                B(Mov), R(4), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), 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 [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 124, 130],
  [10, 88, 90],
  [190, 200, 202],
]

---
snippet: "
  function f(arr) {
    for (let x of arr) { eval('1'); }
  }
  f([1, 2, 3]);
"
frame size: 22
parameter count: 2
bytecode array length: 345
bytecodes: [
                B(CreateFunctionContext), U8(4),
                B(PushContext), R(7),
                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(new_target),
                B(StaCurrentContextSlot), U8(6),
  /*   10 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(8),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(context), R(12),
                B(Mov), R(context), R(13),
  /*   34 S> */ B(LdaContextSlot), R(8), U8(4), U8(0),
                B(Star), R(14),
                B(LdaNamedProperty), R(14), U8(1), U8(3),
                B(Star), R(15),
                B(CallProperty0), R(15), R(14), U8(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(1),
  /*   31 S> */ B(LdaNamedProperty), R(1), U8(2), U8(9),
                B(Star), R(14),
  /*   31 E> */ B(CallProperty0), R(14), R(1), U8(7),
                B(Star), R(2),
  /*   31 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(2), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(2), U8(1),
                B(LdaNamedProperty), R(2), U8(3), U8(11),
                B(JumpIfToBooleanTrue), U8(78),
                B(LdaNamedProperty), R(2), U8(4), U8(13),
                B(Star), R(4),
                B(LdaSmi), I8(2),
                B(Star), R(3),
                B(Mov), R(4), R(0),
  /*   20 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(5),
                B(PushContext), R(9),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(4),
                B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(17), U8(1),
                B(Star), R(14),
                B(LdaConstant), U8(7),
                B(Star), R(15),
                B(LdaZero),
                B(Star), R(19),
                B(LdaSmi), I8(37),
                B(Star), R(20),
                B(LdaSmi), I8(41),
                B(Star), R(21),
                B(Mov), R(14), R(16),
                B(Mov), R(15), R(17),
                B(Mov), R(closure), R(18),
                B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(16), U8(6),
                B(Star), R(14),
  /*   41 E> */ B(CallUndefinedReceiver1), R(14), R(15), U8(15),
                B(PopContext), R(9),
                B(LdaZero),
                B(Star), R(3),
                B(JumpLoop), U8(103), I8(0),
                B(Jump), U8(36),
                B(Star), R(14),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(14), U8(8), U8(9),
                B(PushContext), R(9),
                B(Star), R(13),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(3), U8(19),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kReThrow), R(14), U8(1),
                B(PopContext), R(9),
                B(LdaSmi), I8(-1),
                B(Star), R(10),
                B(Jump), U8(7),
                B(Star), R(11),
                B(LdaZero),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrict), R(3), U8(20),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(1), U8(10), U8(21),
                B(Star), R(5),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(3), U8(24),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(5),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(13),
                B(LdaConstant), U8(11),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2),
                B(Throw),
                B(Mov), R(context), R(13),
                B(Mov), R(5), R(14),
                B(Mov), R(1), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
                B(Jump), U8(20),
                B(Star), R(14),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(14), U8(8), U8(12),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(PushContext), R(9),
                B(PopContext), R(9),
                B(Jump), U8(27),
                B(Mov), R(5), R(13),
                B(Mov), R(1), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
                B(Ldar), R(12),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(10),
                B(JumpIfFalse), U8(7),
                B(PopContext), R(7),
                B(Ldar), R(11),
                B(ReThrow),
                B(PopContext), R(8),
                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 [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [35, 205, 211],
  [38, 169, 171],
  [271, 281, 283],
]

---
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: 278
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(3),
                B(Star), R(14),
                B(CallProperty0), R(14), R(arg0), U8(5),
                B(Mov), R(arg0), R(13),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   31 S> */ B(LdaNamedProperty), R(2), U8(1), U8(9),
                B(Star), R(13),
  /*   31 E> */ B(CallProperty0), R(13), R(2), U8(7),
                B(Star), R(3),
  /*   31 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(2), U8(11),
                B(JumpIfToBooleanTrue), U8(46),
                B(LdaNamedProperty), R(3), U8(3), U8(13),
                B(Star), R(5),
                B(LdaSmi), I8(2),
                B(Star), R(4),
                B(Mov), R(5), R(1),
  /*   20 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(4),
                B(PushContext), R(8),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(5),
                B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(CreateClosure), U8(5), U8(17), U8(2),
                B(Star), R(13),
  /*   67 E> */ B(CallUndefinedReceiver0), R(13), U8(15),
                B(PopContext), R(8),
                B(LdaZero),
                B(Star), R(4),
                B(JumpLoop), U8(71), 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(8),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(4), U8(18),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
                B(PopContext), R(8),
                B(LdaSmi), I8(-1),
                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(4), U8(19),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(2), U8(8), U8(20),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(4), U8(23),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(6),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                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(6), R(13),
                B(Mov), R(2), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(20),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(6), U8(10),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(PushContext), R(8),
                B(PopContext), R(8),
                B(Jump), U8(27),
                B(Mov), R(6), R(12),
                B(Mov), R(2), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), 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(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 [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 142, 148],
  [10, 106, 108],
  [208, 218, 220],
]

---
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: 298
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(9),
                B(Mov), R(context), R(16),
                B(Mov), R(context), R(17),
  /*   41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(3),
                B(Star), R(19),
                B(CallProperty0), R(19), R(arg0), U8(5),
                B(Mov), R(arg0), R(18),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(7),
  /*   38 S> */ B(LdaNamedProperty), R(7), U8(1), U8(9),
                B(Star), R(18),
  /*   38 E> */ B(CallProperty0), R(18), R(7), U8(7),
                B(Star), R(8),
  /*   38 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
                B(LdaNamedProperty), R(8), U8(2), U8(11),
                B(JumpIfToBooleanTrue), U8(66),
                B(LdaNamedProperty), R(8), U8(3), U8(13),
                B(Star), R(10),
                B(LdaSmi), I8(2),
                B(Star), R(9),
                B(Mov), R(10), R(5),
  /*   20 E> */ B(StackCheck),
                B(Mov), R(5), R(6),
                B(Ldar), R(5),
                B(JumpIfUndefined), U8(6),
                B(Ldar), R(6),
                B(JumpIfNotNull), U8(16),
                B(LdaSmi), I8(61),
                B(Star), R(18),
                B(LdaConstant), U8(4),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(18), U8(2),
                B(Throw),
  /*   31 S> */ B(LdaNamedProperty), R(6), U8(5), U8(17),
                B(Star), R(1),
  /*   34 S> */ B(LdaNamedProperty), R(6), U8(6), U8(19),
                B(Star), R(2),
  /*   58 S> */ B(Ldar), R(2),
  /*   58 E> */ B(Add), R(1), U8(21),
                B(Star), R(0),
                B(LdaZero),
                B(Star), R(9),
                B(JumpLoop), U8(91), I8(0),
                B(Jump), U8(36),
                B(Star), R(18),
                B(Ldar), R(closure),
  /*   58 E> */ B(CreateCatchContext), R(18), U8(7), U8(8),
                B(PushContext), R(13),
                B(Star), R(17),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(9), U8(22),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(9),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kReThrow), R(18), U8(1),
                B(PopContext), R(13),
                B(LdaSmi), I8(-1),
                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(9), U8(23),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(7), U8(9), U8(24),
                B(Star), R(11),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(9), U8(27),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(11),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(17),
                B(LdaConstant), U8(4),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
                B(Throw),
                B(Mov), R(context), R(17),
                B(Mov), R(11), R(18),
                B(Mov), R(7), R(19),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(18), U8(2),
                B(Jump), U8(20),
                B(Star), R(18),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(18), U8(7), U8(10),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(PushContext), R(13),
                B(PopContext), R(13),
                B(Jump), U8(27),
                B(Mov), R(11), R(17),
                B(Mov), R(7), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), 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 [""],
  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"],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 162, 168],
  [10, 126, 128],
  [228, 238, 240],
]

---
snippet: "
  function* f(arr) {
    for (let x of arr) { let y = x; }
  }
  f([1, 2, 3]);
"
frame size: 15
parameter count: 2
bytecode array length: 593
bytecodes: [
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(26),
                B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
                B(PushContext), R(5),
                B(ResumeGenerator), R(new_target),
                B(Star), R(4),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(6),
                B(CallRuntime), U16(Runtime::kAbort), R(6), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(4),
                B(CreateFunctionContext), U8(9),
                B(PushContext), R(0),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(6),
                B(Mov), R(this), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(6), U8(2),
                B(StaCurrentContextSlot), U8(5),
  /*   11 E> */ B(StackCheck),
                B(Mov), R(context), R(8),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(9),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(10),
                B(LdaZero),
  /*   11 E> */ B(SuspendGenerator), R(10), U8(0),
                B(Ldar), R(9),
  /*   55 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(4),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(28),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(19),
                B(LdaTrue),
                B(Star), R(14),
                B(Mov), R(11), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(13), U8(2),
                B(Star), R(7),
                B(LdaZero),
                B(Star), R(6),
                B(JumpConstant), U8(13),
                B(Ldar), R(11),
  /*   11 E> */ B(Throw),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(1),
                B(PushContext), R(1),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   35 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(2), U8(3),
                B(Star), R(14),
                B(CallProperty0), R(14), R(13), U8(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
  /*   35 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
  /*   32 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(14),
                B(LdaNamedProperty), R(14), U8(3), U8(9),
                B(Star), R(13),
  /*   32 E> */ B(CallProperty0), R(13), R(14), U8(7),
  /*   32 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(13), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(13),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(4), U8(11),
                B(JumpIfToBooleanTrue), U8(73),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(5), U8(13),
                B(StaContextSlot), R(1), U8(10), U8(0),
                B(LdaSmi), I8(2),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(StaContextSlot), R(1), U8(6), U8(0),
  /*   21 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(6),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaContextSlot), R(1), U8(6), U8(0),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(7),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   50 S> */ B(LdaImmutableContextSlot), R(3), U8(4), U8(0),
  /*   50 E> */ B(StaCurrentContextSlot), U8(4),
                B(PopContext), R(3),
                B(PopContext), R(2),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(JumpLoop), U8(120), I8(0),
                B(Jump), U8(44),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(8), U8(9),
                B(PushContext), R(2),
                B(Star), R(12),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(13),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(13), U8(15),
                B(JumpIfFalse), U8(8),
                B(LdaSmi), I8(1),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
                B(PopContext), R(2),
                B(LdaSmi), I8(-1),
                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(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrict), R(12), U8(16),
                B(JumpIfTrue), U8(150),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(10), U8(17),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(127),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(12),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(12), U8(20),
                B(JumpIfFalse), U8(69),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(12),
                B(LdaConstant), U8(11),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
                B(Throw),
                B(Mov), R(context), R(12),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(13),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(20),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(8), U8(12),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(PushContext), R(2),
                B(PopContext), R(2),
                B(Jump), U8(47),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(12),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(StaContextSlot), R(1), U8(12), U8(0),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(13),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(Ldar), R(11),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfFalse), U8(15),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(Mov), R(10), R(7),
                B(Jump), U8(33),
                B(PopContext), R(1),
                B(LdaUndefined),
                B(Star), R(9),
                B(LdaTrue),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
                B(Star), R(7),
                B(LdaZero),
                B(Star), R(6),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(6),
                B(Jump), U8(8),
                B(Star), R(7),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(8),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(9),
                B(CallRuntime), U16(Runtime::k_GeneratorClose), R(9), U8(1),
                B(Ldar), R(8),
                B(SetPendingMessage),
                B(Ldar), R(6),
                B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(7),
  /*   55 S> */ B(Return),
                B(Ldar), R(7),
                B(ReThrow),
                B(LdaUndefined),
  /*   55 S> */ B(Return),
]
constant pool: [
  Smi [56],
  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,
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [446],
  Smi [6],
  Smi [9],
]
handlers: [
  [56, 549, 555],
  [137, 334, 340],
  [140, 290, 292],
  [426, 442, 444],
]

---
snippet: "
  function* f(arr) {
    for (let x of arr) yield x;
  }
  f([1, 2, 3]);
"
frame size: 18
parameter count: 2
bytecode array length: 701
bytecodes: [
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(26),
                B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
                B(PushContext), R(4),
                B(ResumeGenerator), R(new_target),
                B(Star), R(3),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(5),
                B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CreateFunctionContext), U8(9),
                B(PushContext), R(0),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(5),
                B(Mov), R(this), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
                B(StaCurrentContextSlot), U8(5),
  /*   11 E> */ B(StackCheck),
                B(Mov), R(context), R(7),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(8),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(9),
                B(LdaZero),
  /*   11 E> */ B(SuspendGenerator), R(9), U8(0),
                B(Ldar), R(8),
  /*   49 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
                B(Star), R(10),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(28),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(19),
                B(LdaTrue),
                B(Star), R(13),
                B(Mov), R(10), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
                B(Star), R(6),
                B(LdaZero),
                B(Star), R(5),
                B(JumpConstant), U8(16),
                B(Ldar), R(10),
  /*   11 E> */ B(Throw),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(2),
                B(PushContext), R(1),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   35 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(3), U8(3),
                B(Star), R(13),
                B(CallProperty0), R(13), R(12), U8(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
  /*   35 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
                B(Ldar), R(3),
                B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(1),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(79),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
  /*   32 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(5), U8(9),
                B(Star), R(12),
  /*   32 E> */ B(CallProperty0), R(12), R(13), U8(7),
  /*   32 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(13),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(6), U8(11),
                B(JumpIfToBooleanTrue), U8(144),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(7), U8(13),
                B(StaContextSlot), R(1), U8(10), U8(0),
                B(LdaSmi), I8(2),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(StaContextSlot), R(1), U8(6), U8(0),
  /*   21 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(8),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaContextSlot), R(1), U8(6), U8(0),
                B(StaCurrentContextSlot), U8(4),
  /*   40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(12),
                B(LdaFalse),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
                B(Star), R(12),
                B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
                B(Star), R(13),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(13), U8(0),
                B(Ldar), R(12),
  /*   49 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(15),
                B(JumpIfTrue), U8(40),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(15),
                B(JumpIfTrue), U8(31),
                B(LdaTrue),
                B(Star), R(17),
                B(Mov), R(14), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(Jump), U8(71),
                B(Ldar), R(14),
  /*   40 E> */ B(Throw),
                B(PopContext), R(2),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(JumpLoop), U8(212), I8(0),
                B(Jump), U8(44),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(9), U8(10),
                B(PushContext), R(2),
                B(Star), R(11),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(12), U8(15),
                B(JumpIfFalse), U8(8),
                B(LdaSmi), I8(1),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
                B(PopContext), R(2),
                B(LdaSmi), I8(-1),
                B(Star), R(8),
                B(Jump), U8(8),
                B(Star), R(9),
                B(LdaSmi), I8(1),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(10),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(11), U8(16),
                B(JumpIfTrue), U8(150),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(11),
                B(LdaNamedProperty), R(11), U8(11), U8(17),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(127),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(11),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(11), U8(20),
                B(JumpIfFalse), U8(69),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(11),
                B(LdaConstant), U8(12),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
                B(Throw),
                B(Mov), R(context), R(11),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(12),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(Jump), U8(20),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(9), U8(13),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(PushContext), R(2),
                B(PopContext), R(2),
                B(Jump), U8(47),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(11),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
                B(StaContextSlot), R(1), U8(12), U8(0),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(13),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(Ldar), R(10),
                B(SetPendingMessage),
                B(Ldar), R(8),
                B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
                B(Jump), U8(27),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(LdaZero),
                B(Star), R(5),
                B(Mov), R(9), R(6),
                B(Jump), U8(46),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(Mov), R(9), R(6),
                B(Jump), U8(33),
                B(PopContext), R(1),
                B(LdaUndefined),
                B(Star), R(8),
                B(LdaTrue),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
                B(Star), R(6),
                B(LdaZero),
                B(Star), R(5),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(5),
                B(Jump), U8(8),
                B(Star), R(6),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(8),
                B(CallRuntime), U16(Runtime::k_GeneratorClose), R(8), U8(1),
                B(Ldar), R(7),
                B(SetPendingMessage),
                B(Ldar), R(5),
                B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(6),
  /*   49 S> */ B(Return),
                B(Ldar), R(6),
                B(ReThrow),
                B(LdaUndefined),
  /*   49 S> */ B(Return),
]
constant pool: [
  Smi [56],
  Smi [152],
  FIXED_ARRAY_TYPE,
  SYMBOL_TYPE,
  Smi [142],
  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 [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [18],
  Smi [554],
  Smi [6],
  Smi [9],
]
handlers: [
  [56, 657, 663],
  [137, 426, 432],
  [140, 382, 384],
  [519, 535, 537],
]

---
snippet: "
  async function f(arr) {
    for (let x of arr) { let y = x; }
  }
  f([1, 2, 3]);
"
frame size: 14
parameter count: 2
bytecode array length: 556
bytecodes: [
                B(CreateFunctionContext), U8(10),
                B(PushContext), R(0),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
  /*   16 E> */ B(StackCheck),
                B(LdaUndefined),
                B(Star), R(4),
                B(CallJSRuntime), U8(%async_function_promise_create), R(4), U8(1),
                B(StaCurrentContextSlot), U8(13),
                B(Mov), R(context), R(6),
                B(Mov), R(context), R(7),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(1),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(1), U8(3),
                B(Star), R(13),
                B(CallProperty0), R(13), R(12), U8(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
  /*   40 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
  /*   37 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(2), U8(9),
                B(Star), R(12),
  /*   37 E> */ B(CallProperty0), R(12), R(13), U8(7),
  /*   37 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(13),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(3), U8(11),
                B(JumpIfToBooleanTrue), U8(73),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(4), U8(13),
                B(StaContextSlot), R(1), U8(10), U8(0),
                B(LdaSmi), I8(2),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(StaContextSlot), R(1), U8(6), U8(0),
  /*   26 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(5),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaContextSlot), R(1), U8(6), U8(0),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(6),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   55 S> */ B(LdaImmutableContextSlot), R(3), U8(4), U8(0),
  /*   55 E> */ B(StaCurrentContextSlot), U8(4),
                B(PopContext), R(3),
                B(PopContext), R(2),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(JumpLoop), U8(120), I8(0),
                B(Jump), U8(48),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(8),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(PushContext), R(2),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(12), U8(15),
                B(JumpIfFalse), U8(8),
                B(LdaSmi), I8(1),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
                B(PopContext), R(2),
                B(LdaSmi), I8(-1),
                B(Star), R(8),
                B(Jump), U8(7),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(10),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(11), U8(16),
                B(JumpIfTrue), U8(150),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(11),
                B(LdaNamedProperty), R(11), U8(9), U8(17),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(127),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(11),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(11), U8(20),
                B(JumpIfFalse), U8(69),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(11),
                B(LdaConstant), U8(10),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
                B(Throw),
                B(Mov), R(context), R(11),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(12),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(Jump), U8(20),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(11),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(PushContext), R(2),
                B(PopContext), R(2),
                B(Jump), U8(47),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(11),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
                B(StaContextSlot), R(1), U8(12), U8(0),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(13),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(Ldar), R(10),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(8),
                B(JumpIfFalse), U8(9),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(Ldar), R(9),
                B(ReThrow),
                B(PopContext), R(1),
                B(LdaUndefined),
                B(Star), R(8),
                B(LdaCurrentContextSlot), U8(13),
                B(Star), R(9),
                B(LdaUndefined),
                B(Star), R(10),
                B(CallJSRuntime), U8(%promise_resolve), R(8), U8(3),
                B(LdaCurrentContextSlot), U8(13),
                B(Star), R(5),
                B(LdaZero),
                B(Star), R(4),
                B(Jump), U8(67),
                B(Jump), U8(53),
                B(Star), R(8),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(8), U8(7), U8(12),
                B(Star), R(7),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(7),
                B(PushContext), R(1),
                B(LdaUndefined),
                B(Star), R(8),
                B(LdaContextSlot), R(1), U8(13), U8(0),
                B(Star), R(9),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(10),
                B(LdaFalse),
                B(Star), R(11),
                B(CallJSRuntime), U8(%promise_internal_reject), R(8), U8(4),
                B(LdaContextSlot), R(1), U8(13), U8(0),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(Star), R(5),
                B(LdaZero),
                B(Star), R(4),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(4),
                B(Jump), U8(8),
                B(Star), R(5),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(6),
                B(LdaUndefined),
                B(Star), R(7),
                B(LdaCurrentContextSlot), U8(13),
                B(Star), R(8),
                B(CallJSRuntime), U8(%async_function_promise_release), R(7), U8(2),
                B(Ldar), R(6),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(5),
  /*   60 S> */ B(Return),
                B(Ldar), R(5),
                B(ReThrow),
                B(LdaUndefined),
  /*   60 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,
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [21, 510, 516],
  [24, 457, 459],
  [41, 242, 248],
  [44, 194, 196],
  [334, 350, 352],
]

---
snippet: "
  async function f(arr) {
    for (let x of arr) await x;
  }
  f([1, 2, 3]);
"
frame size: 19
parameter count: 2
bytecode array length: 735
bytecodes: [
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(26),
                B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
                B(PushContext), R(4),
                B(ResumeGenerator), R(new_target),
                B(Star), R(3),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(5),
                B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CreateFunctionContext), U8(11),
                B(PushContext), R(0),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(5),
                B(Mov), R(this), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
                B(StaCurrentContextSlot), U8(5),
  /*   16 E> */ B(StackCheck),
                B(LdaUndefined),
                B(Star), R(5),
                B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
                B(StaCurrentContextSlot), U8(7),
                B(Mov), R(context), R(7),
                B(Mov), R(context), R(8),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(1),
                B(PushContext), R(1),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   40 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(2), U8(3),
                B(Star), R(14),
                B(CallProperty0), R(14), R(13), U8(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
  /*   40 E> */ B(StaContextSlot), R(1), U8(9), U8(0),
                B(Ldar), R(3),
                B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(0),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(79),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
  /*   37 S> */ B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(14),
                B(LdaNamedProperty), R(14), U8(4), U8(9),
                B(Star), R(13),
  /*   37 E> */ B(CallProperty0), R(13), R(14), U8(7),
  /*   37 E> */ B(StaContextSlot), R(1), U8(10), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(13), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(13),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(5), U8(11),
                B(JumpIfToBooleanTrue), U8(167),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(6), U8(13),
                B(StaContextSlot), R(1), U8(12), U8(0),
                B(LdaSmi), I8(2),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(StaContextSlot), R(1), U8(8), U8(0),
  /*   26 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(7),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(StaCurrentContextSlot), U8(4),
  /*   51 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(StaContextSlot), R(1), U8(6), U8(0),
  /*   45 S> */ B(LdaUndefined),
                B(Star), R(13),
                B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
                B(Star), R(14),
                B(LdaContextSlot), R(1), U8(6), U8(0),
                B(Star), R(15),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(16),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(13), U8(4),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
                B(Star), R(14),
                B(LdaZero),
                B(SuspendGenerator), R(14), U8(2),
                B(Ldar), R(13),
  /*   54 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(14), U8(1),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
                B(Star), R(16),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(16),
                B(JumpIfTrue), U8(40),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(16),
                B(JumpIfTrue), U8(31),
                B(LdaTrue),
                B(Star), R(18),
                B(Mov), R(15), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(Star), R(10),
                B(LdaZero),
                B(Star), R(9),
                B(Jump), U8(75),
                B(Ldar), R(15),
                B(ReThrow),
                B(PopContext), R(2),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(JumpLoop), U8(235), I8(0),
                B(Jump), U8(48),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(8), U8(9),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(PushContext), R(2),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(13),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(13), U8(15),
                B(JumpIfFalse), U8(8),
                B(LdaSmi), I8(1),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
                B(PopContext), R(2),
                B(LdaSmi), I8(-1),
                B(Star), R(9),
                B(Jump), U8(8),
                B(Star), R(10),
                B(LdaSmi), I8(1),
                B(Star), R(9),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(11),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrict), R(12), U8(16),
                B(JumpIfTrue), U8(150),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(10), U8(17),
                B(StaContextSlot), R(1), U8(13), U8(0),
                B(LdaContextSlot), R(1), U8(13), U8(0),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(127),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(12),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(12), U8(20),
                B(JumpIfFalse), U8(69),
                B(LdaContextSlot), R(1), U8(13), U8(0),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(12),
                B(LdaConstant), U8(11),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
                B(Throw),
                B(Mov), R(context), R(12),
                B(LdaContextSlot), R(1), U8(13), U8(0),
                B(Star), R(13),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(20),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(8), U8(12),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(PushContext), R(2),
                B(PopContext), R(2),
                B(Jump), U8(47),
                B(LdaContextSlot), R(1), U8(13), U8(0),
                B(Star), R(12),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(StaContextSlot), R(1), U8(14), U8(0),
                B(LdaContextSlot), R(1), U8(14), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(13),
                B(LdaContextSlot), R(1), U8(14), U8(0),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(Ldar), R(11),
                B(SetPendingMessage),
                B(Ldar), R(9),
                B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
                B(Jump), U8(25),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(LdaZero),
                B(Star), R(5),
                B(Mov), R(10), R(6),
                B(Jump), U8(99),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(Ldar), R(10),
                B(ReThrow),
                B(PopContext), R(1),
                B(LdaUndefined),
                B(Star), R(9),
                B(LdaCurrentContextSlot), U8(7),
                B(Star), R(10),
                B(LdaUndefined),
                B(Star), R(11),
                B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
                B(LdaCurrentContextSlot), U8(7),
                B(Star), R(6),
                B(LdaZero),
                B(Star), R(5),
                B(Jump), U8(67),
                B(Jump), U8(53),
                B(Star), R(9),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(9), U8(8), U8(15),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(8),
                B(PushContext), R(1),
                B(LdaUndefined),
                B(Star), R(9),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(10),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(11),
                B(LdaFalse),
                B(Star), R(12),
                B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(Star), R(6),
                B(LdaZero),
                B(Star), R(5),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(5),
                B(Jump), U8(8),
                B(Star), R(6),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(7),
                B(LdaUndefined),
                B(Star), R(8),
                B(LdaCurrentContextSlot), U8(7),
                B(Star), R(9),
                B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
                B(Ldar), R(7),
                B(SetPendingMessage),
                B(Ldar), R(5),
                B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(6),
  /*   54 S> */ B(Return),
                B(Ldar), R(6),
                B(ReThrow),
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
  Smi [100],
  FIXED_ARRAY_TYPE,
  SYMBOL_TYPE,
  Smi [165],
  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 [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [22],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [65, 689, 695],
  [68, 636, 638],
  [85, 401, 407],
  [88, 353, 355],
  [494, 510, 512],
]

