#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  function f(...restArgs) { return restArgs; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 6
bytecodes: [
                B(CreateRestParameter),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   26 S> */ B(Nop),
  /*   43 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a, ...restArgs) { return restArgs; }
  f();
"
frame size: 2
parameter count: 2
bytecode array length: 13
bytecodes: [
                B(CreateRestParameter),
                B(Star), R(0),
                B(LdaTheHole),
                B(Star), R(1),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(1),
  /*   29 S> */ B(Ldar), R(0),
  /*   46 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a, ...restArgs) { return restArgs[0]; }
  f();
"
frame size: 2
parameter count: 2
bytecode array length: 15
bytecodes: [
                B(CreateRestParameter),
                B(Star), R(0),
                B(LdaTheHole),
                B(Star), R(1),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(1),
  /*   29 S> */ B(LdaZero),
  /*   44 E> */ B(LdaKeyedProperty), R(0), U8(1),
  /*   49 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }
  f();
"
frame size: 5
parameter count: 2
bytecode array length: 25
bytecodes: [
                B(CreateUnmappedArguments),
                B(Star), R(0),
                B(CreateRestParameter),
                B(Star), R(1),
                B(LdaTheHole),
                B(Star), R(2),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(2),
  /*   29 S> */ B(LdaZero),
  /*   44 E> */ B(LdrKeyedProperty), R(1), U8(1), R(4),
                B(LdaZero),
  /*   59 E> */ B(LdaKeyedProperty), R(0), U8(3),
                B(Add), R(4),
  /*   64 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

