#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

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

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

---
snippet: "
  function f(a, ...restArgs) { return restArgs[0]; }
  f();
"
frame size: 3
parameter count: 2
bytecode array length: 15
bytecodes: [
                B(CreateRestParameter),
                B(Star), R(2),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(0),
                B(Mov), R(2), R(1),
  /*   29 S> */ B(LdaZero),
  /*   44 E> */ B(LdaKeyedProperty), R(1), U8(0),
  /*   48 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: 27
bytecodes: [
                B(CreateUnmappedArguments),
                B(Star), R(3),
                B(CreateRestParameter),
                B(Star), R(2),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(0),
                B(Mov), R(2), R(1),
  /*   29 S> */ B(LdaZero),
  /*   44 E> */ B(LdaKeyedProperty), R(1), U8(1),
                B(Star), R(4),
                B(LdaZero),
  /*   59 E> */ B(LdaKeyedProperty), R(3), U8(3),
  /*   48 E> */ B(Add), R(4), U8(0),
  /*   63 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

