#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  for (var p in null) {}
"
frame size: 2
parameter count: 1
bytecode array length: 3
bytecodes: [
  B(StackCheck),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  for (var p in undefined) {}
"
frame size: 2
parameter count: 1
bytecode array length: 3
bytecodes: [
  B(StackCheck),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  for (var p in undefined) {}
"
frame size: 2
parameter count: 1
bytecode array length: 3
bytecodes: [
  B(StackCheck),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 'potatoes';
  for (var p in x) { return p; }
"
frame size: 8
parameter count: 1
bytecode array length: 45
bytecodes: [
  B(StackCheck),
  B(LdaConstant), U8(0),
  B(Star), R(1),
  B(JumpIfUndefined), U8(38),
  B(JumpIfNull), U8(36),
  B(ToObject),
  B(Star), R(3),
  B(ForInPrepare), R(4),
  B(LdaZero),
  B(Star), R(7),
  B(ForInDone), R(7), R(6),
  B(JumpIfTrue), U8(23),
  B(ForInNext), R(3), R(7), R(4), U8(1),
  B(JumpIfUndefined), U8(10),
  B(Star), R(0),
  B(StackCheck),
  B(Ldar), R(0),
  B(Star), R(2),
  B(Return),
  B(ForInStep), R(7),
  B(Star), R(7),
  B(Jump), U8(-24),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
]

---
snippet: "
  var x = 0;
  for (var p in [1,2,3]) { x += p; }
"
frame size: 9
parameter count: 1
bytecode array length: 57
bytecodes: [
  B(StackCheck),
  B(LdaZero),
  B(Star), R(1),
  B(CreateArrayLiteral), U8(0), U8(0), U8(3),
  B(JumpIfUndefined), U8(47),
  B(JumpIfNull), U8(45),
  B(ToObject),
  B(Star), R(3),
  B(ForInPrepare), R(4),
  B(LdaZero),
  B(Star), R(7),
  B(ForInDone), R(7), R(6),
  B(JumpIfTrue), U8(32),
  B(ForInNext), R(3), R(7), R(4), U8(1),
  B(JumpIfUndefined), U8(19),
  B(Star), R(0),
  B(StackCheck),
  B(Ldar), R(0),
  B(Star), R(2),
  B(Ldar), R(1),
  B(Star), R(8),
  B(Ldar), R(2),
  B(Add), R(8),
  B(Star), R(1),
  B(ForInStep), R(7),
  B(Star), R(7),
  B(Jump), U8(-33),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
]
handlers: [
]

---
snippet: "
  var x = { 'a': 1, 'b': 2 };
  for (x['a'] in [10, 20, 30]) {
    if (x['a'] == 10) continue;
    if (x['a'] == 20) break;
  }
"
frame size: 8
parameter count: 1
bytecode array length: 94
bytecodes: [
  B(StackCheck),
  B(CreateObjectLiteral), U8(0), U8(0), U8(5),
  B(Star), R(1),
  B(Star), R(0),
  B(CreateArrayLiteral), U8(1), U8(1), U8(3),
  B(JumpIfUndefined), U8(79),
  B(JumpIfNull), U8(77),
  B(ToObject),
  B(Star), R(1),
  B(ForInPrepare), R(2),
  B(LdaZero),
  B(Star), R(5),
  B(ForInDone), R(5), R(4),
  B(JumpIfTrue), U8(64),
  B(ForInNext), R(1), R(5), R(2), U8(9),
  B(JumpIfUndefined), U8(51),
  B(Star), R(6),
  B(Ldar), R(0),
  B(Star), R(7),
  B(Ldar), R(6),
  B(StoreICSloppy), R(7), U8(2), U8(7),
  B(StackCheck),
  B(Ldar), R(0),
  B(Star), R(6),
  B(LoadIC), R(6), U8(2), U8(3),
  B(Star), R(7),
  B(LdaSmi), U8(10),
  B(TestEqual), R(7),
  B(JumpIfFalse), U8(4),
  B(Jump), U8(20),
  B(Ldar), R(0),
  B(Star), R(6),
  B(LoadIC), R(6), U8(2), U8(5),
  B(Star), R(7),
  B(LdaSmi), U8(20),
  B(TestEqual), R(7),
  B(JumpIfFalse), U8(4),
  B(Jump), U8(8),
  B(ForInStep), R(5),
  B(Star), R(5),
  B(Jump), U8(-65),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
]

---
snippet: "
  var x = [ 10, 11, 12 ] ;
  for (x[0] in [1,2,3]) { return x[3]; }
"
frame size: 9
parameter count: 1
bytecode array length: 69
bytecodes: [
  B(StackCheck),
  B(CreateArrayLiteral), U8(0), U8(0), U8(3),
  B(Star), R(0),
  B(CreateArrayLiteral), U8(1), U8(1), U8(3),
  B(JumpIfUndefined), U8(56),
  B(JumpIfNull), U8(54),
  B(ToObject),
  B(Star), R(1),
  B(ForInPrepare), R(2),
  B(LdaZero),
  B(Star), R(5),
  B(ForInDone), R(5), R(4),
  B(JumpIfTrue), U8(41),
  B(ForInNext), R(1), R(5), R(2), U8(7),
  B(JumpIfUndefined), U8(28),
  B(Star), R(6),
  B(Ldar), R(0),
  B(Star), R(7),
  B(LdaZero),
  B(Star), R(8),
  B(Ldar), R(6),
  B(KeyedStoreICSloppy), R(7), R(8), U8(5),
  B(StackCheck),
  B(Ldar), R(0),
  B(Star), R(6),
  B(LdaSmi), U8(3),
  B(KeyedLoadIC), R(6), U8(3),
  B(Return),
  B(ForInStep), R(5),
  B(Star), R(5),
  B(Jump), U8(-42),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::FIXED_ARRAY_TYPE,
]
handlers: [
]

