#
# 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: 16
parameter count: 2
bytecode array length: 262
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(12),
                B(Mov), R(context), R(13),
  /*   34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
                B(Star), R(15),
                B(CallProperty0), R(15), R(arg0), U8(2),
                B(Mov), R(arg0), R(14),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
  /*   29 S> */ B(LdaNamedProperty), R(4), U8(1), U8(4),
                B(Star), R(14),
                B(CallProperty0), R(14), R(4), U8(6),
                B(Star), R(5),
  /*   29 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(8),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaNamedProperty), R(5), U8(3), U8(10),
                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(14),
                B(Ldar), R(closure),
  /*   49 E> */ B(CreateCatchContext), R(14), U8(4), U8(5),
                B(PushContext), R(14),
                B(Star), R(13),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(12),
                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(14),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Star), R(10),
                B(Jump), U8(7),
                B(Star), R(11),
                B(LdaZero),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrict), R(6), U8(13),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(4), U8(6), U8(14),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(16),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(8),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(13),
                B(LdaConstant), U8(7),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2),
                B(Throw),
                B(Mov), R(context), R(13),
                B(Mov), R(8), R(14),
                B(Mov), R(4), 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(4), U8(8),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(PushContext), R(14),
                B(PopContext), R(14),
                B(Jump), U8(27),
                B(Mov), R(8), R(13),
                B(Mov), R(4), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), 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(12),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(10),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(11),
                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, 132],
  [10, 88, 90],
  [192, 202, 204],
]

---
snippet: "
  function f(arr) {
    for (let x of arr) { eval('1'); }
  }
  f([1, 2, 3]);
"
frame size: 23
parameter count: 2
bytecode array length: 345
bytecodes: [
                B(CreateFunctionContext), U8(4),
                B(PushContext), R(8),
                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(7),
                B(StaCurrentContextSlot), U8(6),
  /*   10 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(9),
                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(9), U8(4), U8(0),
                B(Star), R(14),
                B(LdaNamedProperty), R(14), U8(1), U8(0),
                B(Star), R(15),
                B(CallProperty0), R(15), R(14), U8(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(1),
  /*   29 S> */ B(LdaNamedProperty), R(1), U8(2), U8(4),
                B(Star), R(14),
                B(CallProperty0), R(14), R(1), U8(6),
                B(Star), R(2),
  /*   29 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(8),
                B(JumpIfToBooleanTrue), U8(78),
                B(LdaNamedProperty), R(2), U8(4), U8(10),
                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(14),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(4),
                B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(12), U8(3),
                B(Star), R(15),
                B(LdaConstant), U8(7),
                B(Star), R(16),
                B(LdaZero),
                B(Star), R(20),
                B(LdaSmi), I8(37),
                B(Star), R(21),
                B(LdaSmi), I8(41),
                B(Star), R(22),
                B(Mov), R(15), R(17),
                B(Mov), R(16), R(18),
                B(Mov), R(closure), R(19),
                B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(17), U8(6),
                B(Star), R(15),
  /*   41 E> */ B(CallUndefinedReceiver1), R(15), R(16), U8(14),
                B(PopContext), R(14),
                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(14),
                B(Star), R(13),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(3), U8(16),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kReThrow), R(15), U8(1),
                B(PopContext), R(14),
                B(LdaSmi), I8(-1),
                B(Star), R(11),
                B(Star), R(10),
                B(Jump), U8(7),
                B(Star), R(11),
                B(LdaZero),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrict), R(3), U8(17),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(1), U8(10), U8(18),
                B(Star), R(5),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(3), U8(20),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(5),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                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(14),
                B(PopContext), R(14),
                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(5),
                B(Ldar), R(11),
                B(ReThrow),
                B(PopContext), R(9),
                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, 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: 14
parameter count: 2
bytecode array length: 280
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
                B(Star), R(13),
                B(CallProperty0), R(13), R(arg0), U8(2),
                B(Mov), R(arg0), R(12),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   29 S> */ B(LdaNamedProperty), R(2), U8(1), U8(4),
                B(Star), R(12),
                B(CallProperty0), R(12), R(2), 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(2), U8(8),
                B(JumpIfToBooleanTrue), U8(46),
                B(LdaNamedProperty), R(3), U8(3), U8(10),
                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(12),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(5),
                B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(CreateClosure), U8(5), U8(12), U8(2),
                B(Star), R(13),
  /*   67 E> */ B(CallUndefinedReceiver0), R(13), U8(13),
                B(PopContext), R(12),
                B(LdaZero),
                B(Star), R(4),
                B(JumpLoop), U8(71), I8(0),
                B(Jump), U8(36),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(6), U8(7),
                B(PushContext), R(12),
                B(Star), R(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(4), U8(15),
                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(12),
                B(LdaSmi), I8(-1),
                B(Star), R(9),
                B(Star), R(8),
                B(Jump), U8(7),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(10),
                B(LdaZero),
                B(TestEqualStrict), R(4), U8(16),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(2), U8(8), U8(17),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(4), U8(19),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(6),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(11),
                B(LdaConstant), U8(9),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
                B(Throw),
                B(Mov), R(context), R(11),
                B(Mov), R(6), R(12),
                B(Mov), R(2), 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(6), U8(10),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(PushContext), R(12),
                B(PopContext), R(12),
                B(Jump), U8(27),
                B(Mov), R(6), R(11),
                B(Mov), R(2), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), 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(10),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(8),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(9),
                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, 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: 19
parameter count: 2
bytecode array length: 300
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(9),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
  /*   41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
                B(Star), R(18),
                B(CallProperty0), R(18), R(arg0), U8(2),
                B(Mov), R(arg0), R(17),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(7),
  /*   36 S> */ B(LdaNamedProperty), R(7), U8(1), U8(4),
                B(Star), R(17),
                B(CallProperty0), R(17), R(7), U8(6),
                B(Star), R(8),
  /*   36 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(8),
                B(JumpIfToBooleanTrue), U8(66),
                B(LdaNamedProperty), R(8), U8(3), U8(10),
                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(6),
                B(JumpIfUndefined), U8(6),
                B(Ldar), R(6),
                B(JumpIfNotNull), U8(16),
                B(LdaSmi), I8(74),
                B(Star), R(17),
                B(LdaConstant), U8(4),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(17), 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(9),
                B(JumpLoop), U8(91), I8(0),
                B(Jump), U8(36),
                B(Star), R(17),
                B(Ldar), R(closure),
  /*   56 E> */ B(CreateCatchContext), R(17), U8(6), U8(7),
                B(PushContext), R(17),
                B(Star), R(16),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(9), U8(17),
                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(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(9), U8(18),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(7), U8(8), U8(19),
                B(Star), R(11),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(9), U8(21),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(11),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(16),
                B(LdaConstant), U8(9),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(Mov), R(context), R(16),
                B(Mov), R(11), R(17),
                B(Mov), R(7), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Jump), U8(20),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(6), U8(10),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(PopContext), R(17),
                B(Jump), U8(27),
                B(Mov), R(11), R(16),
                B(Mov), R(7), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), 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(15),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(13),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   65 S> */ B(Return),
]
constant pool: [
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["y"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_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: 341
bytecodes: [
                B(Ldar), R(3),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(3), U8(1),
                B(PushContext), R(12),
                B(RestoreGeneratorState), R(3),
                B(Star), R(11),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(12),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(3),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(3), R(0), U8(13), U8(0),
  /*   55 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(3), R(0), U8(13),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(3), U8(1),
                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(7),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
  /*   35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(17),
                B(LdaNamedProperty), R(17), U8(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),
  /*   30 S> */ B(LdaNamedProperty), R(5), U8(4), U8(4),
                B(Star), R(17),
                B(CallProperty0), R(17), R(5), 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(5), U8(8),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaNamedProperty), R(6), U8(6), U8(10),
                B(Star), R(8),
                B(LdaSmi), I8(2),
                B(Star), R(7),
                B(Mov), R(8), 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(7),
                B(JumpLoop), U8(53), 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(7), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kReThrow), R(18), U8(1),
                B(PopContext), R(17),
                B(LdaSmi), I8(-1),
                B(Star), R(14),
                B(Star), R(13),
                B(Jump), U8(7),
                B(Star), R(14),
                B(LdaZero),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(LdaZero),
                B(TestEqualStrict), R(7), U8(13),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(5), U8(9), U8(14),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(16),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(9),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(16),
                B(LdaConstant), U8(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(9), R(17),
                B(Mov), R(5), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Jump), U8(20),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(7), U8(11),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(PopContext), R(17),
                B(Jump), U8(27),
                B(Mov), R(9), R(16),
                B(Mov), R(5), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(10), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(13),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   55 S> */ B(Return),
]
constant pool: [
  Smi [37],
  Smi [10],
  Smi [7],
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [85, 203, 211],
  [88, 167, 169],
  [271, 281, 283],
]

---
snippet: "
  function* f(arr) {
    for (let x of arr) yield x;
  }
  f([1, 2, 3]);
"
frame size: 18
parameter count: 2
bytecode array length: 408
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(11),
                B(RestoreGeneratorState), R(2),
                B(Star), R(10),
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                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),
  /*   49 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(2), R(0), U8(12),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(2), U8(1),
                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(6),
                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),
                B(Ldar), R(10),
                B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
                B(LdaSmi), I8(-2),
  /*   35 E> */ B(TestEqualStrictNoFeedback), R(10),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   30 S> */ B(LdaNamedProperty), R(4), U8(6), U8(4),
                B(Star), R(16),
                B(CallProperty0), R(16), R(4), U8(6),
                B(Star), R(5),
  /*   30 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(7), U8(8),
                B(JumpIfToBooleanTrue), U8(74),
                B(LdaNamedProperty), R(5), U8(8), U8(10),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), 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),
                B(SuspendGenerator), R(2), R(0), U8(16), U8(1),
  /*   49 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(2), R(0), U8(16),
                B(LdaSmi), I8(-2),
                B(Star), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(2), U8(1),
                B(Star), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(9), 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(6),
                B(JumpLoop), U8(113), I8(0),
                B(Jump), U8(36),
                B(Star), R(16),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(16), U8(11), U8(12),
                B(PushContext), R(16),
                B(Star), R(15),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                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(6), U8(13),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(4), U8(13), U8(14),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(16),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(8),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(15),
                B(LdaConstant), U8(14),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
                B(Throw),
                B(Mov), R(context), R(15),
                B(Mov), R(8), R(16),
                B(Mov), R(4), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
                B(Jump), U8(20),
                B(Star), R(16),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(16), U8(11), U8(15),
                B(Star), R(15),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(15),
                B(PushContext), R(16),
                B(PopContext), R(16),
                B(Jump), U8(27),
                B(Mov), R(8), R(15),
                B(Mov), R(4), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), 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(14),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(16), 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 [37],
  Smi [97],
  Smi [10],
  Smi [7],
  SYMBOL_TYPE,
  Smi [75],
  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"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [85, 263, 271],
  [88, 227, 229],
  [332, 342, 344],
]

---
snippet: "
  async function f(arr) {
    for (let x of arr) { let y = x; }
  }
  f([1, 2, 3]);
"
frame size: 23
parameter count: 2
bytecode array length: 386
bytecodes: [
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(12),
                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(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(0), 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(5),
  /*   35 S> */ B(LdaNamedProperty), R(5), U8(1), U8(4),
                B(Star), R(21),
                B(CallProperty0), R(21), R(5), 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(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(4),
  /*   26 E> */ B(StackCheck),
                B(Mov), R(4), R(1),
  /*   55 S> */ B(Mov), R(1), R(0),
                B(LdaZero),
                B(Star), R(7),
                B(JumpLoop), U8(53), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
  /*   55 E> */ B(CreateCatchContext), R(21), U8(4), U8(5),
                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(104),
                B(LdaNamedProperty), R(5), U8(6), U8(14),
                B(Star), R(9),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(7), U8(16),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(9),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(20),
                B(LdaConstant), U8(7),
                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(5), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Jump), U8(20),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(4), U8(8),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(PopContext), R(21),
                B(Jump), U8(27),
                B(Mov), R(9), R(20),
                B(Mov), R(5), 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(CallJSRuntime), U8(%promise_resolve), R(17), U8(2),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(4), 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(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(3),
                B(PopContext), R(17),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(11), R(14),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(14),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(CallJSRuntime), U8(%async_function_promise_release), R(11), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*   60 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   60 S> */ B(Return),
]
constant pool: [
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [18, 345, 353],
  [21, 303, 305],
  [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: 480
bytecodes: [
                B(Ldar), R(2),
                B(JumpIfUndefined), U8(18),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(2), U8(1),
                B(PushContext), R(12),
                B(RestoreGeneratorState), R(2),
                B(Star), R(11),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(Abort), U8(15),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(12),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(10),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(6),
                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),
                B(Ldar), R(11),
                B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
                B(LdaSmi), I8(-2),
  /*   40 E> */ B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(4),
                B(Abort), U8(15),
  /*   35 S> */ B(LdaNamedProperty), R(4), U8(3), U8(4),
                B(Star), R(21),
                B(CallProperty0), R(21), R(4), U8(6),
                B(Star), R(5),
  /*   35 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(4), U8(8),
                B(JumpIfToBooleanTrue), U8(72),
                B(LdaNamedProperty), R(5), U8(5), U8(10),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), 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(10), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(SuspendGenerator), R(2), R(0), U8(21), U8(0),
  /*   54 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(2), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(2), U8(1),
                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(6),
                B(JumpLoop), U8(111), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(6), U8(7),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(12),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                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(6), U8(13),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(4), U8(8), U8(14),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(16),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(8),
                B(TestTypeOf), U8(6),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(144),
                B(Star), R(20),
                B(LdaConstant), U8(9),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(8), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Jump), U8(20),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(6), U8(10),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(PopContext), R(21),
                B(Jump), U8(27),
                B(Mov), R(8), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), 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(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(10), R(17),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(2),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(6), U8(11),
                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(10), R(18),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(3),
                B(PopContext), R(17),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(10), 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(10), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(12), 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 [75],
  SYMBOL_TYPE,
  Smi [78],
  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,
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [54, 439, 447],
  [57, 397, 399],
  [63, 243, 251],
  [66, 203, 205],
  [311, 321, 323],
]

