#
# 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: 10
bytecodes: [
  /*   26 E> */ B(StackCheck),
  /*   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: 16
bytecodes: [
  /*   26 E> */ B(StackCheck),
  /*   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: 10
bytecodes: [
  /*   27 E> */ B(StackCheck),
  /*   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: 16
bytecodes: [
  /*   27 E> */ B(StackCheck),
  /*   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: [
]

