#
# 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(0), U8(37),
  /*   50 S> */ B(Return),
]
constant pool: [
  TUPLE2_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; return [ a, a + 1 ];
"
frame size: 3
parameter count: 1
bytecode array length: 36
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(Ldar), R(0),
  /*   54 E> */ B(StaKeyedProperty), R(2), R(1), U8(1),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Ldar), R(0),
  /*   59 E> */ B(AddSmi), I8(1), U8(3),
                B(StaKeyedProperty), R(2), R(1), U8(1),
                B(Ldar), R(2),
  /*   65 S> */ B(Return),
]
constant pool: [
  TUPLE2_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(0), U8(4),
  /*   61 S> */ B(Return),
]
constant pool: [
  TUPLE2_TYPE,
]
handlers: [
]

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

