#
# 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: 8
bytecodes: [
  /*   26 E> */ B(StackCheck),
  /*   31 S> */ B(LdaGlobal), 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: 13
bytecodes: [
  /*   26 E> */ B(StackCheck),
  /*   31 S> */ B(LdaGlobal), 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: 8
bytecodes: [
  /*   27 E> */ B(StackCheck),
  /*   46 S> */ B(LdaGlobal), 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: 13
bytecodes: [
  /*   27 E> */ B(StackCheck),
  /*   32 S> */ B(LdaGlobal), 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: [
]

