#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  for (var p of [0, 1, 2]) {}
"
frame size: 14
parameter count: 1
bytecode array length: 260
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(1), U8(5),
                B(Star), R(13),
                B(CallProperty0), R(13), R(12), U8(7),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   43 S> */ B(LdaNamedProperty), R(2), U8(2), U8(11),
                B(Star), R(12),
                B(CallProperty0), R(12), R(2), U8(9),
                B(Star), R(3),
  /*   43 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(13),
                B(JumpIfToBooleanTrue), U8(25),
                B(LdaNamedProperty), R(3), U8(4), U8(15),
                B(Star), R(5),
                B(LdaSmi), I8(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(50), I8(0),
                B(Jump), U8(36),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(5), U8(6),
                B(PushContext), R(12),
                B(Star), R(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(4), U8(17),
                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(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(18),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(2), U8(7), U8(19),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(4), U8(22),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(6),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(132),
                B(Star), R(11),
                B(LdaConstant), U8(8),
                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(5), U8(9),
                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),
  /*   62 S> */ B(Return),
]
constant pool: [
  TUPLE2_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 [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 124, 130],
  [10, 88, 90],
  [190, 200, 202],
]

---
snippet: "
  var x = 'potatoes';
  for (var p of x) { return p; }
"
frame size: 15
parameter count: 1
bytecode array length: 270
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(11),
                B(Mov), R(context), R(12),
  /*   68 S> */ B(LdaNamedProperty), R(0), U8(1), U8(4),
                B(Star), R(14),
                B(CallProperty0), R(14), R(0), U8(6),
                B(Mov), R(0), R(13),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(3),
  /*   63 S> */ B(LdaNamedProperty), R(3), U8(2), U8(10),
                B(Star), R(13),
                B(CallProperty0), R(13), R(3), U8(8),
                B(Star), R(4),
  /*   63 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(12),
                B(JumpIfToBooleanTrue), U8(27),
                B(LdaNamedProperty), R(4), U8(4), U8(14),
                B(Star), R(6),
                B(LdaSmi), I8(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(9),
                B(Mov), R(6), R(10),
                B(Jump), U8(50),
                B(Jump), U8(36),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(5), U8(6),
                B(PushContext), R(13),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(5), U8(16),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kReThrow), R(14), U8(1),
                B(PopContext), R(13),
                B(LdaSmi), I8(-1),
                B(Star), R(9),
                B(Jump), U8(8),
                B(Star), R(10),
                B(LdaSmi), I8(1),
                B(Star), R(9),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(5), U8(17),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(3), U8(7), U8(18),
                B(Star), R(7),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(5), U8(21),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(7),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(132),
                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(7), R(13),
                B(Mov), R(3), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(13), U8(2),
                B(Jump), U8(20),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(5), U8(9),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(PushContext), R(13),
                B(PopContext), R(13),
                B(Jump), U8(27),
                B(Mov), R(7), R(12),
                B(Mov), R(3), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
                B(Ldar), R(11),
                B(SetPendingMessage),
                B(Ldar), R(9),
                B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(10),
  /*   85 S> */ B(Return),
                B(Ldar), R(10),
                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 [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [11, 127, 133],
  [14, 91, 93],
  [194, 204, 206],
]

---
snippet: "
  for (var x of [10, 20, 30]) {
    if (x == 10) continue;
    if (x == 20) break;
  }
"
frame size: 14
parameter count: 1
bytecode array length: 278
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(1), U8(5),
                B(Star), R(13),
                B(CallProperty0), R(13), R(12), U8(7),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   43 S> */ B(LdaNamedProperty), R(2), U8(2), U8(11),
                B(Star), R(12),
                B(CallProperty0), R(12), R(2), U8(9),
                B(Star), R(3),
  /*   43 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(13),
                B(JumpIfToBooleanTrue), U8(43),
                B(LdaNamedProperty), R(3), U8(4), U8(15),
                B(Star), R(5),
                B(LdaSmi), I8(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), I8(10),
  /*   72 E> */ B(TestEqual), R(1), U8(17),
                B(JumpIfFalse), U8(4),
  /*   79 S> */ B(Jump), U8(14),
  /*   91 S> */ B(LdaSmi), I8(20),
  /*   97 E> */ B(TestEqual), R(1), U8(18),
                B(JumpIfFalse), U8(4),
  /*  104 S> */ B(Jump), U8(8),
                B(LdaZero),
                B(Star), R(4),
                B(JumpLoop), U8(68), I8(0),
                B(Jump), U8(36),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(5), U8(6),
                B(PushContext), R(12),
                B(Star), R(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(4), U8(19),
                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(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(20),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(2), U8(7), U8(21),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(4), U8(24),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(6),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(132),
                B(Star), R(11),
                B(LdaConstant), U8(8),
                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(5), U8(9),
                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),
  /*  113 S> */ B(Return),
]
constant pool: [
  TUPLE2_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 [""],
  FIXED_ARRAY_TYPE,
]
handlers: [
  [7, 142, 148],
  [10, 106, 108],
  [208, 218, 220],
]

---
snippet: "
  var x = { 'a': 1, 'b': 2 };
  for (x['a'] of [1,2,3]) { return x['a']; }
"
frame size: 13
parameter count: 1
bytecode array length: 280
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(7),
                B(Mov), R(7), R(0),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(context), R(9),
                B(Mov), R(context), R(10),
  /*   77 S> */ B(CreateArrayLiteral), U8(1), U8(5), U8(37),
                B(Star), R(11),
                B(LdaNamedProperty), R(11), U8(2), U8(6),
                B(Star), R(12),
                B(CallProperty0), R(12), R(11), U8(8),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(1),
  /*   68 S> */ B(LdaNamedProperty), R(1), U8(3), U8(12),
                B(Star), R(11),
                B(CallProperty0), R(11), R(1), U8(10),
                B(Star), R(2),
  /*   68 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(14),
                B(JumpIfToBooleanTrue), U8(30),
  /*   67 E> */ B(LdaNamedProperty), R(2), U8(5), U8(16),
                B(Star), R(4),
                B(LdaSmi), I8(2),
                B(Star), R(3),
                B(Ldar), R(4),
                B(StaNamedPropertySloppy), R(0), U8(6), U8(18),
  /*   62 E> */ B(StackCheck),
  /*   96 S> */ B(LdaNamedProperty), R(0), U8(6), U8(20),
                B(Star), R(8),
                B(LdaZero),
                B(Star), R(7),
                B(Jump), U8(50),
                B(Jump), U8(36),
                B(Star), R(11),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(11), U8(7), U8(8),
                B(PushContext), R(11),
                B(Star), R(10),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(3), U8(22),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
                B(PopContext), R(11),
                B(LdaSmi), I8(-1),
                B(Star), R(7),
                B(Jump), U8(8),
                B(Star), R(8),
                B(LdaSmi), I8(1),
                B(Star), R(7),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(9),
                B(LdaZero),
                B(TestEqualStrict), R(3), U8(23),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(1), U8(9), U8(24),
                B(Star), R(5),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(3), U8(27),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(5),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(132),
                B(Star), R(10),
                B(LdaConstant), U8(10),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(10), U8(2),
                B(Throw),
                B(Mov), R(context), R(10),
                B(Mov), R(5), R(11),
                B(Mov), R(1), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
                B(Jump), U8(20),
                B(Star), R(11),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(11), U8(7), U8(11),
                B(Star), R(10),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(10),
                B(PushContext), R(11),
                B(PopContext), R(11),
                B(Jump), U8(27),
                B(Mov), R(5), R(10),
                B(Mov), R(1), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(10), 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(9),
                B(SetPendingMessage),
                B(Ldar), R(7),
                B(SwitchOnSmiNoFeedback), U8(12), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(8),
  /*  105 S> */ B(Return),
                B(Ldar), R(8),
                B(ReThrow),
                B(LdaUndefined),
  /*  105 S> */ B(Return),
]
constant pool: [
  FIXED_ARRAY_TYPE,
  TUPLE2_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 [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [15, 137, 143],
  [18, 101, 103],
  [204, 214, 216],
]

