#
# 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(4),
  /*   40 E> */ B(StaGlobalSloppy), U8(0), U8(2),
  /*   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(ToNumber), U8(4),
                B(Star), R(0),
                B(Dec), U8(4),
  /*   44 E> */ B(StaGlobalSloppy), U8(0), U8(2),
                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(4),
  /*   55 E> */ B(StaGlobalStrict), U8(0), U8(2),
  /*   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(ToNumber), U8(4),
                B(Star), R(0),
                B(Inc), U8(4),
  /*   50 E> */ B(StaGlobalSloppy), U8(0), U8(2),
                B(Ldar), R(0),
  /*   53 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["unallocated"],
]
handlers: [
]

