#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: mixed
execute: yes
wrap: no
test function name: f

---
snippet: "
  function f() { return this; }
  f();
"
frame size: 0
parameter count: 1
bytecode array length: 4
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(Ldar), R(this),
  /*   28 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(arg1) { return arg1; }
  f();
"
frame size: 0
parameter count: 2
bytecode array length: 4
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   19 S> */ B(Ldar), R(arg0),
  /*   32 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(arg1) { return this; }
  f();
"
frame size: 0
parameter count: 2
bytecode array length: 4
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   19 S> */ B(Ldar), R(this),
  /*   32 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { return arg4; }
  f();
"
frame size: 0
parameter count: 8
bytecode array length: 4
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   55 S> */ B(Ldar), R(arg3),
  /*   68 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { return this; }
  f();
"
frame size: 0
parameter count: 8
bytecode array length: 4
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   55 S> */ B(Ldar), R(this),
  /*   68 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(arg1) { arg1 = 1; }
  f();
"
frame size: 0
parameter count: 2
bytecode array length: 7
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   19 S> */ B(LdaSmi), U8(1),
                B(Star), R(arg0),
                B(LdaUndefined),
  /*   29 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(arg1, arg2, arg3, arg4) { arg2 = 1; }
  f();
"
frame size: 0
parameter count: 5
bytecode array length: 7
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   37 S> */ B(LdaSmi), U8(1),
                B(Star), R(arg1),
                B(LdaUndefined),
  /*   47 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

