#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  var global = 1;
  function f() { return ++global; }
  f();
"
frame size: 0
parameter count: 1
bytecode array length: 9
bytecodes: [
  /*   31 S> */ B(LdaGlobal), U8(0), U8(0),
                B(Inc), U8(2),
  /*   40 E> */ B(StaGlobal), U8(0), U8(3),
  /*   47 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["global"],
]
handlers: [
]

---
snippet: "
  var global = 1;
  function f() { return global--; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 15
bytecodes: [
  /*   31 S> */ B(LdaGlobal), U8(0), U8(0),
                B(ToNumeric), U8(2),
                B(Star), R(0),
                B(Dec), U8(2),
  /*   44 E> */ B(StaGlobal), U8(0), U8(3),
                B(Ldar), R(0),
  /*   47 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["global"],
]
handlers: [
]

---
snippet: "
  unallocated = 1;
  function f() { 'use strict'; return --unallocated; }
  f();
"
frame size: 0
parameter count: 1
bytecode array length: 9
bytecodes: [
  /*   46 S> */ B(LdaGlobal), U8(0), U8(0),
                B(Dec), U8(2),
  /*   55 E> */ B(StaGlobal), U8(0), U8(3),
  /*   67 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["unallocated"],
]
handlers: [
]

---
snippet: "
  unallocated = 1;
  function f() { return unallocated++; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 15
bytecodes: [
  /*   32 S> */ B(LdaGlobal), U8(0), U8(0),
                B(ToNumeric), U8(2),
                B(Star), R(0),
                B(Inc), U8(2),
  /*   50 E> */ B(StaGlobal), U8(0), U8(3),
                B(Ldar), R(0),
  /*   53 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["unallocated"],
]
handlers: [
]

