#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: string
execute: yes
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: [
  /*   26 E> */ B(StackCheck),
  /*   31 S> */ B(LdaGlobal), U8(0), U8(1),
                B(Inc),
  /*   40 E> */ B(StaGlobalSloppy), U8(0), U8(3),
  /*   48 S> */ B(Return),
]
constant pool: [
  "global",
]
handlers: [
]

---
snippet: "
  var global = 1;
  function f() { return global--; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 14
bytecodes: [
  /*   26 E> */ B(StackCheck),
  /*   31 S> */ B(LdaGlobal), U8(0), U8(1),
                B(ToNumber),
                B(Star), R(0),
                B(Dec),
  /*   44 E> */ B(StaGlobalSloppy), U8(0), U8(3),
                B(Ldar), R(0),
  /*   48 S> */ B(Return),
]
constant pool: [
  "global",
]
handlers: [
]

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

---
snippet: "
  unallocated = 1;
  function f() { return unallocated++; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 14
bytecodes: [
  /*   27 E> */ B(StackCheck),
  /*   32 S> */ B(LdaGlobal), U8(0), U8(1),
                B(ToNumber),
                B(Star), R(0),
                B(Inc),
  /*   50 E> */ B(StaGlobalSloppy), U8(0), U8(3),
                B(Ldar), R(0),
  /*   54 S> */ B(Return),
]
constant pool: [
  "unallocated",
]
handlers: [
]

