#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  return [ 1, 2 ];
"
frame size: 0
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(CreateArrayLiteral), U8(0), U8(2), U8(9),
  /*   51 S> */ B(Return),
]
constant pool: [
  CONSTANT_ELEMENTS_PAIR_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; return [ a, a + 1 ];
"
frame size: 3
parameter count: 1
bytecode array length: 35
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(CreateArrayLiteral), U8(0), U8(3), U8(9),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(Ldar), R(0),
  /*   54 E> */ B(StaKeyedPropertySloppy), R(2), R(1), U8(4),
                B(LdaSmi), I8(1),
                B(Star), R(1),
  /*   59 E> */ B(AddSmi), I8(1), R(0), U8(2),
                B(StaKeyedPropertySloppy), R(2), R(1), U8(4),
                B(Ldar), R(2),
  /*   66 S> */ B(Return),
]
constant pool: [
  CONSTANT_ELEMENTS_PAIR_TYPE,
]
handlers: [
]

---
snippet: "
  return [ [ 1, 2 ], [ 3 ] ];
"
frame size: 0
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(0),
  /*   62 S> */ B(Return),
]
constant pool: [
  CONSTANT_ELEMENTS_PAIR_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; return [ [ a, 2 ], [ a + 2 ] ];
"
frame size: 5
parameter count: 1
bytecode array length: 65
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(CreateArrayLiteral), U8(0), U8(9), U8(0),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(CreateArrayLiteral), U8(1), U8(2), U8(9),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Ldar), R(0),
  /*   56 E> */ B(StaKeyedPropertySloppy), R(4), R(3), U8(3),
                B(Ldar), R(4),
                B(StaKeyedPropertySloppy), R(2), R(1), U8(10),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(CreateArrayLiteral), U8(2), U8(6), U8(9),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
  /*   68 E> */ B(AddSmi), I8(2), R(0), U8(5),
                B(StaKeyedPropertySloppy), R(4), R(3), U8(7),
                B(Ldar), R(4),
                B(StaKeyedPropertySloppy), R(2), R(1), U8(10),
                B(Ldar), R(2),
  /*   77 S> */ B(Return),
]
constant pool: [
  CONSTANT_ELEMENTS_PAIR_TYPE,
  CONSTANT_ELEMENTS_PAIR_TYPE,
  CONSTANT_ELEMENTS_PAIR_TYPE,
]
handlers: [
]

