#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  function t() { }
  function f() { return t(); }
  f();
"
frame size: 2
parameter count: 1
bytecode array length: 15
bytecodes: [
  /*   27 E> */ B(StackCheck),
  /*   32 S> */ B(LdaUndefined),
                B(Star), R(1),
                B(LdaGlobal), U8(0), U8(3),
                B(Star), R(0),
  /*   39 E> */ B(Call), R(0), R(1), U8(1), U8(1),
  /*   44 S> */ B(Return),
]
constant pool: [
  "t",
]
handlers: [
]

---
snippet: "
  function t(a, b, c) { }
  function f() { return t(1, 2, 3); }
  f();
"
frame size: 5
parameter count: 1
bytecode array length: 27
bytecodes: [
  /*   34 E> */ B(StackCheck),
  /*   39 S> */ B(LdaUndefined),
                B(Star), R(1),
                B(LdaGlobal), U8(0), U8(3),
                B(Star), R(0),
                B(LdaSmi), U8(1),
                B(Star), R(2),
                B(LdaSmi), U8(2),
                B(Star), R(3),
                B(LdaSmi), U8(3),
                B(Star), R(4),
  /*   46 E> */ B(Call), R(0), R(1), U8(4), U8(1),
  /*   58 S> */ B(Return),
]
constant pool: [
  "t",
]
handlers: [
]

