#
# Autogenerated by generate-bytecode-expectations.
#

---
execute: yes
wrap: yes

---
snippet: "
  for (var p of [0, 1, 2]) {}
"
frame size: 15
parameter count: 1
bytecode array length: 279
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(9),
                B(Star), R(14),
                B(LdaConstant), U8(1),
  /*   48 E> */ B(LdrKeyedProperty), R(14), U8(4), R(13),
  /*   48 E> */ B(Call), R(13), R(14), U8(1), U8(2),
                B(Star), R(2),
  /*   45 S> */ B(LdrNamedProperty), R(2), U8(2), U8(8), R(14),
  /*   45 E> */ B(Call), R(14), R(2), U8(1), U8(6),
                B(Star), R(3),
  /*   45 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(LdaNamedProperty), R(3), U8(3), U8(10),
                B(JumpIfToBooleanTrue), U8(24),
                B(LdrNamedProperty), R(3), U8(4), U8(12), R(5),
                B(LdaSmi), U8(2),
                B(Star), R(4),
                B(Mov), R(5), R(0),
  /*   34 E> */ B(StackCheck),
                B(Mov), R(0), R(1),
                B(LdaZero),
                B(Star), R(4),
                B(JumpLoop), U8(-49), U8(0),
                B(Jump), U8(37),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(5), U8(6),
                B(Star), R(12),
                B(PushContext), R(8),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(4), U8(14),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(4),
                B(LdrContextSlot), R(context), U8(4), U8(0), R(13),
                B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
                B(PopContext), R(8),
                B(LdaSmi), U8(-1),
                B(Star), R(9),
                B(Jump), U8(7),
                B(Star), R(10),
                B(LdaZero),
                B(Star), R(9),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(4), U8(15),
                B(JumpIfTrue), U8(121),
                B(LdaUndefined),
                B(TestEqualStrict), R(2), U8(16),
                B(JumpIfTrue), U8(115),
                B(LdrNamedProperty), R(2), U8(7), U8(17), R(6),
                B(LdaNull),
                B(TestEqual), R(6), U8(19),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(102),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(4), U8(20),
                B(JumpIfFalse), U8(70),
                B(Ldar), R(6),
                B(TypeOf),
                B(Star), R(12),
                B(LdaConstant), U8(8),
                B(TestEqualStrict), R(12), U8(21),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(129),
                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(23),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(5), U8(10),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                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(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(11), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(9), U8(0),
                B(JumpIfTrue), U8(4),
                B(Jump), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*   62 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"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["function"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 118, 124],
  [10, 81, 83],
  [201, 211, 213],
]

---
snippet: "
  var x = 'potatoes';
  for (var p of x) { return p; }
"
frame size: 16
parameter count: 1
bytecode array length: 290
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaConstant), U8(0),
                B(Star), R(0),
                B(LdaZero),
                B(Star), R(5),
                B(Mov), R(context), R(12),
                B(Mov), R(context), R(13),
  /*   68 S> */ B(LdaConstant), U8(1),
  /*   68 E> */ B(LdrKeyedProperty), R(0), U8(4), R(14),
  /*   68 E> */ B(Call), R(14), R(0), U8(1), U8(2),
                B(Star), R(3),
  /*   65 S> */ B(LdrNamedProperty), R(3), U8(2), U8(8), R(15),
  /*   65 E> */ B(Call), R(15), R(3), U8(1), U8(6),
                B(Star), R(4),
  /*   65 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(4), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
                B(LdaNamedProperty), R(4), U8(3), U8(10),
                B(JumpIfToBooleanTrue), U8(26),
                B(LdrNamedProperty), R(4), U8(4), U8(12), R(6),
                B(LdaSmi), U8(2),
                B(Star), R(5),
                B(Mov), R(6), R(1),
  /*   54 E> */ B(StackCheck),
                B(Mov), R(1), R(2),
  /*   73 S> */ B(LdaZero),
                B(Star), R(10),
                B(Mov), R(1), R(11),
                B(Jump), U8(51),
                B(Jump), U8(37),
                B(Star), R(14),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(14), U8(5), U8(6),
                B(Star), R(13),
                B(PushContext), R(9),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(5), U8(14),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(5),
                B(LdrContextSlot), R(context), U8(4), U8(0), R(14),
                B(CallRuntime), U16(Runtime::kReThrow), R(14), U8(1),
                B(PopContext), R(9),
                B(LdaSmi), U8(-1),
                B(Star), R(10),
                B(Jump), U8(8),
                B(Star), R(11),
                B(LdaSmi), U8(1),
                B(Star), R(10),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Star), R(12),
                B(LdaZero),
                B(TestEqualStrict), R(5), U8(15),
                B(JumpIfTrue), U8(121),
                B(LdaUndefined),
                B(TestEqualStrict), R(3), U8(16),
                B(JumpIfTrue), U8(115),
                B(LdrNamedProperty), R(3), U8(7), U8(17), R(7),
                B(LdaNull),
                B(TestEqual), R(7), U8(19),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(102),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(5), U8(20),
                B(JumpIfFalse), U8(70),
                B(Ldar), R(7),
                B(TypeOf),
                B(Star), R(13),
                B(LdaConstant), U8(8),
                B(TestEqualStrict), R(13), U8(21),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(129),
                B(Star), R(13),
                B(LdaConstant), U8(9),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2),
                B(Throw),
                B(Mov), R(context), R(13),
                B(Mov), R(7), R(14),
                B(Mov), R(3), R(15),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(14), U8(2),
                B(Jump), U8(23),
                B(Star), R(14),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(14), U8(5), U8(10),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Ldar), R(13),
                B(PushContext), R(9),
                B(PopContext), R(9),
                B(Jump), U8(27),
                B(Mov), R(7), R(13),
                B(Mov), R(3), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
                B(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(12), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(10), U8(0),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(10), U8(0),
                B(JumpIfTrue), U8(7),
                B(Jump), U8(8),
                B(Ldar), R(11),
  /*   85 S> */ B(Return),
                B(Ldar), R(11),
                B(ReThrow),
                B(LdaUndefined),
  /*   85 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["potatoes"],
  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 ["function"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [11, 118, 124],
  [14, 81, 83],
  [202, 212, 214],
]

---
snippet: "
  for (var x of [10, 20, 30]) {
    if (x == 10) continue;
    if (x == 20) break;
  }
"
frame size: 15
parameter count: 1
bytecode array length: 297
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(9),
                B(Star), R(14),
                B(LdaConstant), U8(1),
  /*   48 E> */ B(LdrKeyedProperty), R(14), U8(4), R(13),
  /*   48 E> */ B(Call), R(13), R(14), U8(1), U8(2),
                B(Star), R(2),
  /*   45 S> */ B(LdrNamedProperty), R(2), U8(2), U8(8), R(14),
  /*   45 E> */ B(Call), R(14), R(2), U8(1), U8(6),
                B(Star), R(3),
  /*   45 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(LdaNamedProperty), R(3), U8(3), U8(10),
                B(JumpIfToBooleanTrue), U8(42),
                B(LdrNamedProperty), R(3), U8(4), U8(12), R(5),
                B(LdaSmi), U8(2),
                B(Star), R(4),
                B(Mov), R(5), R(0),
  /*   34 E> */ B(StackCheck),
                B(Mov), R(0), R(1),
  /*   66 S> */ B(LdaSmi), U8(10),
  /*   72 E> */ B(TestEqual), R(1), U8(14),
                B(JumpIfFalse), U8(4),
  /*   79 S> */ B(Jump), U8(14),
  /*   91 S> */ B(LdaSmi), U8(20),
  /*   97 E> */ B(TestEqual), R(1), U8(15),
                B(JumpIfFalse), U8(4),
  /*  104 S> */ B(Jump), U8(8),
                B(LdaZero),
                B(Star), R(4),
                B(JumpLoop), U8(-67), U8(0),
                B(Jump), U8(37),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(5), U8(6),
                B(Star), R(12),
                B(PushContext), R(8),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(4), U8(16),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(4),
                B(LdrContextSlot), R(context), U8(4), U8(0), R(13),
                B(CallRuntime), U16(Runtime::kReThrow), R(13), U8(1),
                B(PopContext), R(8),
                B(LdaSmi), U8(-1),
                B(Star), R(9),
                B(Jump), U8(7),
                B(Star), R(10),
                B(LdaZero),
                B(Star), R(9),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(4), U8(17),
                B(JumpIfTrue), U8(121),
                B(LdaUndefined),
                B(TestEqualStrict), R(2), U8(18),
                B(JumpIfTrue), U8(115),
                B(LdrNamedProperty), R(2), U8(7), U8(19), R(6),
                B(LdaNull),
                B(TestEqual), R(6), U8(21),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(102),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(4), U8(22),
                B(JumpIfFalse), U8(70),
                B(Ldar), R(6),
                B(TypeOf),
                B(Star), R(12),
                B(LdaConstant), U8(8),
                B(TestEqualStrict), R(12), U8(23),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(129),
                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(23),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(5), U8(10),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                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(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(11), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(9), U8(0),
                B(JumpIfTrue), U8(4),
                B(Jump), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*  113 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"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["function"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 136, 142],
  [10, 99, 101],
  [219, 229, 231],
]

---
snippet: "
  var x = { 'a': 1, 'b': 2 };
  for (x['a'] of [1,2,3]) { return x['a']; }
"
frame size: 14
parameter count: 1
bytecode array length: 303
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(1), R(8),
                B(Mov), R(8), R(0),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   77 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(9),
                B(Star), R(13),
                B(LdaConstant), U8(2),
  /*   77 E> */ B(LdrKeyedProperty), R(13), U8(4), R(12),
  /*   77 E> */ B(Call), R(12), R(13), U8(1), U8(2),
                B(Star), R(1),
  /*   74 S> */ B(LdrNamedProperty), R(1), U8(3), U8(8), R(13),
  /*   74 E> */ B(Call), R(13), R(1), U8(1), U8(6),
                B(Star), R(2),
  /*   74 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(4), U8(10),
                B(JumpIfToBooleanTrue), U8(29),
  /*   67 E> */ B(LdrNamedProperty), R(2), U8(5), U8(12), R(4),
                B(LdaSmi), U8(2),
                B(Star), R(3),
                B(Ldar), R(4),
                B(StaNamedPropertySloppy), R(0), U8(6), U8(14),
  /*   62 E> */ B(StackCheck),
  /*   88 S> */ B(Nop),
  /*   96 E> */ B(LdrNamedProperty), R(0), U8(6), U8(16), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(Jump), U8(51),
                B(Jump), U8(37),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(8),
                B(Star), R(11),
                B(PushContext), R(7),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(3), U8(18),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(3),
                B(LdrContextSlot), R(context), U8(4), U8(0), R(12),
                B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
                B(PopContext), R(7),
                B(LdaSmi), U8(-1),
                B(Star), R(8),
                B(Jump), U8(8),
                B(Star), R(9),
                B(LdaSmi), U8(1),
                B(Star), R(8),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Star), R(10),
                B(LdaZero),
                B(TestEqualStrict), R(3), U8(19),
                B(JumpIfTrue), U8(121),
                B(LdaUndefined),
                B(TestEqualStrict), R(1), U8(20),
                B(JumpIfTrue), U8(115),
                B(LdrNamedProperty), R(1), U8(9), U8(21), R(5),
                B(LdaNull),
                B(TestEqual), R(5), U8(23),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(102),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(3), U8(24),
                B(JumpIfFalse), U8(70),
                B(Ldar), R(5),
                B(TypeOf),
                B(Star), R(11),
                B(LdaConstant), U8(10),
                B(TestEqualStrict), R(11), U8(25),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(129),
                B(Star), R(11),
                B(LdaConstant), U8(11),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
                B(Throw),
                B(Mov), R(context), R(11),
                B(Mov), R(5), R(12),
                B(Mov), R(1), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(Jump), U8(23),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(12),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Ldar), R(11),
                B(PushContext), R(7),
                B(PopContext), R(7),
                B(Jump), U8(27),
                B(Mov), R(5), R(11),
                B(Mov), R(1), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), 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(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(10), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(8), U8(0),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(8), U8(0),
                B(JumpIfTrue), U8(7),
                B(Jump), U8(8),
                B(Ldar), R(9),
  /*  105 S> */ B(Return),
                B(Ldar), R(9),
                B(ReThrow),
                B(LdaUndefined),
  /*  105 S> */ B(Return),
]
constant pool: [
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["function"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [15, 131, 137],
  [18, 94, 96],
  [215, 225, 227],
]

