#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: mixed
execute: yes
wrap: yes

---
snippet: "
  for (var p of [0, 1, 2]) {}
"
frame size: 16
parameter count: 1
bytecode array length: 284
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(LdrUndefined), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(3),
                B(Star), R(14),
                B(LdaConstant), U8(1),
  /*   48 E> */ B(LdrKeyedProperty), R(14), U8(3), R(13),
  /*   48 E> */ B(Call), R(13), R(14), U8(1), U8(1),
                B(Star), R(1),
  /*   45 S> */ B(LdrNamedProperty), R(1), U8(2), U8(7), R(14),
  /*   45 E> */ B(Call), R(14), R(1), U8(1), U8(5),
                B(Star), R(2),
  /*   45 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(9),
                B(JumpIfToBooleanTrue), U8(22),
                B(LdaSmi), U8(2),
                B(Star), R(3),
                B(LdrNamedProperty), R(2), U8(4), U8(11), R(0),
                B(Ldar), R(0),
  /*   34 E> */ B(StackCheck),
                B(Mov), R(0), R(7),
                B(LdaZero),
                B(Star), R(3),
                B(Jump), U8(-48),
                B(Jump), U8(41),
                B(Star), R(14),
                B(LdaConstant), U8(5),
                B(Star), R(13),
                B(Mov), R(closure), R(15),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
                B(Star), R(12),
                B(PushContext), R(8),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(3),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(3),
                B(LdrContextSlot), R(context), U8(4), 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(3),
                B(JumpIfTrue), U8(5),
                B(LdaUndefined),
                B(TestEqualStrict), R(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(118),
                B(LdrNamedProperty), R(1), U8(6), U8(13), R(5),
                B(LdaNull),
                B(TestEqual), R(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(106),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(3),
                B(JumpIfFalse), U8(75),
                B(Ldar), R(5),
                B(TypeOf),
                B(Star), R(12),
                B(LdaConstant), U8(7),
                B(TestEqualStrict), R(12),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(128),
                B(Star), R(12),
                B(LdaConstant), U8(8),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
                B(Throw),
                B(Mov), R(context), R(12),
                B(Mov), R(5), R(13),
                B(Mov), R(1), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(29),
                B(Star), R(14),
                B(LdaConstant), U8(5),
                B(Star), R(13),
                B(Mov), R(closure), R(15),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
                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(5), R(12),
                B(Mov), R(1), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), 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(11), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(9),
                B(JumpIfTrue), U8(4),
                B(Jump), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*   62 S> */ B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::SYMBOL_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
  [9, 122, 128],
  [12, 81, 83],
  [201, 211, 213],
]

---
snippet: "
  var x = 'potatoes';
  for (var p of x) { return p; }
"
frame size: 17
parameter count: 1
bytecode array length: 297
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaConstant), U8(0),
                B(Star), R(7),
                B(LdrUndefined), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(context), R(12),
                B(Mov), R(context), R(13),
  /*   68 S> */ B(LdaConstant), U8(1),
  /*   68 E> */ B(LdrKeyedProperty), R(7), U8(3), R(14),
  /*   68 E> */ B(Call), R(14), R(7), U8(1), U8(1),
                B(Star), R(1),
  /*   65 S> */ B(LdrNamedProperty), R(1), U8(2), U8(7), R(15),
  /*   65 E> */ B(Call), R(15), R(1), U8(1), U8(5),
                B(Star), R(2),
  /*   65 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(9),
                B(JumpIfToBooleanTrue), U8(27),
                B(LdaSmi), U8(2),
                B(Star), R(3),
                B(LdrNamedProperty), R(2), U8(4), U8(11), R(0),
                B(Ldar), R(0),
  /*   54 E> */ B(StackCheck),
                B(Mov), R(0), R(8),
  /*   73 S> */ B(LdaZero),
                B(Star), R(10),
                B(Mov), R(0), R(11),
                B(Jump), U8(57),
                B(Jump), U8(-53),
                B(Jump), U8(41),
                B(Star), R(15),
                B(LdaConstant), U8(5),
                B(Star), R(14),
                B(Mov), R(closure), R(16),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(14), U8(3),
                B(Star), R(13),
                B(PushContext), R(9),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(3),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(3),
                B(LdrContextSlot), R(context), U8(4), 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(3),
                B(JumpIfTrue), U8(5),
                B(LdaUndefined),
                B(TestEqualStrict), R(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(118),
                B(LdrNamedProperty), R(1), U8(6), U8(13), R(5),
                B(LdaNull),
                B(TestEqual), R(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(106),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(3),
                B(JumpIfFalse), U8(75),
                B(Ldar), R(5),
                B(TypeOf),
                B(Star), R(13),
                B(LdaConstant), U8(7),
                B(TestEqualStrict), R(13),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(128),
                B(Star), R(13),
                B(LdaConstant), U8(8),
                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(29),
                B(Star), R(15),
                B(LdaConstant), U8(5),
                B(Star), R(14),
                B(Mov), R(closure), R(16),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(14), U8(3),
                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(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(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(12), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(10),
                B(JumpIfTrue), U8(10),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(10),
                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: [
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::SYMBOL_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
  [13, 125, 131],
  [16, 84, 86],
  [205, 215, 217],
]

---
snippet: "
  for (var x of [10, 20, 30]) {
    if (x == 10) continue;
    if (x == 20) break;
  }
"
frame size: 16
parameter count: 1
bytecode array length: 300
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(LdrUndefined), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(3),
                B(Star), R(14),
                B(LdaConstant), U8(1),
  /*   48 E> */ B(LdrKeyedProperty), R(14), U8(3), R(13),
  /*   48 E> */ B(Call), R(13), R(14), U8(1), U8(1),
                B(Star), R(1),
  /*   45 S> */ B(LdrNamedProperty), R(1), U8(2), U8(7), R(14),
  /*   45 E> */ B(Call), R(14), R(1), U8(1), U8(5),
                B(Star), R(2),
  /*   45 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(9),
                B(JumpIfToBooleanTrue), U8(38),
                B(LdaSmi), U8(2),
                B(Star), R(3),
                B(LdrNamedProperty), R(2), U8(4), U8(11), R(0),
                B(Ldar), R(0),
  /*   34 E> */ B(StackCheck),
                B(Mov), R(0), R(7),
  /*   66 S> */ B(LdaSmi), U8(10),
  /*   72 E> */ B(TestEqual), R(7),
                B(JumpIfFalse), U8(4),
  /*   79 S> */ B(Jump), U8(13),
  /*   91 S> */ B(LdaSmi), U8(20),
  /*   97 E> */ B(TestEqual), R(7),
                B(JumpIfFalse), U8(4),
  /*  104 S> */ B(Jump), U8(7),
                B(LdaZero),
                B(Star), R(3),
                B(Jump), U8(-64),
                B(Jump), U8(41),
                B(Star), R(14),
                B(LdaConstant), U8(5),
                B(Star), R(13),
                B(Mov), R(closure), R(15),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
                B(Star), R(12),
                B(PushContext), R(8),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(3),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(3),
                B(LdrContextSlot), R(context), U8(4), 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(3),
                B(JumpIfTrue), U8(5),
                B(LdaUndefined),
                B(TestEqualStrict), R(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(118),
                B(LdrNamedProperty), R(1), U8(6), U8(13), R(5),
                B(LdaNull),
                B(TestEqual), R(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(106),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(3),
                B(JumpIfFalse), U8(75),
                B(Ldar), R(5),
                B(TypeOf),
                B(Star), R(12),
                B(LdaConstant), U8(7),
                B(TestEqualStrict), R(12),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(128),
                B(Star), R(12),
                B(LdaConstant), U8(8),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
                B(Throw),
                B(Mov), R(context), R(12),
                B(Mov), R(5), R(13),
                B(Mov), R(1), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(29),
                B(Star), R(14),
                B(LdaConstant), U8(5),
                B(Star), R(13),
                B(Mov), R(closure), R(15),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(13), U8(3),
                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(5), R(12),
                B(Mov), R(1), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), 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(11), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(9),
                B(JumpIfTrue), U8(4),
                B(Jump), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*  113 S> */ B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::SYMBOL_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
  [9, 138, 144],
  [12, 97, 99],
  [217, 227, 229],
]

---
snippet: "
  var x = { 'a': 1, 'b': 2 };
  for (x['a'] of [1,2,3]) { return x['a']; }
"
frame size: 15
parameter count: 1
bytecode array length: 308
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(1),
                B(Star), R(8),
                B(Star), R(6),
                B(LdrUndefined), R(3),
                B(LdaZero),
                B(Star), R(2),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   77 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(3),
                B(Star), R(13),
                B(LdaConstant), U8(2),
  /*   77 E> */ B(LdrKeyedProperty), R(13), U8(3), R(12),
  /*   77 E> */ B(Call), R(12), R(13), U8(1), U8(1),
                B(Star), R(0),
  /*   74 S> */ B(LdrNamedProperty), R(0), U8(3), U8(7), R(13),
  /*   74 E> */ B(Call), R(13), R(0), U8(1), U8(5),
                B(Star), R(1),
  /*   74 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(1), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(1), U8(1),
                B(LdaNamedProperty), R(1), U8(4), U8(9),
                B(JumpIfToBooleanTrue), U8(28),
                B(LdaSmi), U8(2),
                B(Star), R(2),
  /*   67 E> */ B(LdaNamedProperty), R(1), U8(5), U8(11),
                B(StaNamedPropertySloppy), R(6), U8(6), U8(13),
  /*   62 E> */ B(StackCheck),
  /*   88 S> */ B(Nop),
  /*   96 E> */ B(LdrNamedProperty), R(6), U8(6), U8(15), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(Jump), U8(57),
                B(Jump), U8(-54),
                B(Jump), U8(41),
                B(Star), R(13),
                B(LdaConstant), U8(7),
                B(Star), R(12),
                B(Mov), R(closure), R(14),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(12), U8(3),
                B(Star), R(11),
                B(PushContext), R(7),
                B(LdaSmi), U8(2),
                B(TestEqualStrict), R(2),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), U8(1),
                B(Star), R(2),
                B(LdrContextSlot), R(context), U8(4), 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(2),
                B(JumpIfTrue), U8(5),
                B(LdaUndefined),
                B(TestEqualStrict), R(0),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(118),
                B(LdrNamedProperty), R(0), U8(8), U8(17), R(4),
                B(LdaNull),
                B(TestEqual), R(4),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(106),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(2),
                B(JumpIfFalse), U8(75),
                B(Ldar), R(4),
                B(TypeOf),
                B(Star), R(11),
                B(LdaConstant), U8(9),
                B(TestEqualStrict), R(11),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), U16(128),
                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(Mov), R(4), R(12),
                B(Mov), R(0), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(Jump), U8(29),
                B(Star), R(13),
                B(LdaConstant), U8(7),
                B(Star), R(12),
                B(Mov), R(closure), R(14),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(12), U8(3),
                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(4), R(11),
                B(Mov), R(0), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(CallRuntime), U16(Runtime::kInterpreterSetPendingMessage), R(10), U8(1),
                B(LdaZero),
                B(TestEqualStrict), R(8),
                B(JumpIfTrue), U8(10),
                B(LdaSmi), U8(1),
                B(TestEqualStrict), R(8),
                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: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::SYMBOL_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
  [17, 136, 142],
  [20, 95, 97],
  [216, 226, 228],
]

