#
# 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(0),
  /*   10 E> */ B(StackCheck),
                B(Star), R(1),
  /*   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(0),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(1),
                B(Mov), R(0), R(2),
  /*   29 S> */ B(Ldar), R(2),
  /*   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(0),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(1),
                B(Mov), R(0), R(2),
  /*   29 S> */ B(LdaZero),
  /*   44 E> */ B(LdaKeyedProperty), R(2), 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(0),
  /*   10 E> */ B(StackCheck),
                B(Mov), R(arg0), R(1),
                B(Mov), R(0), R(2),
  /*   29 S> */ B(LdaZero),
  /*   44 E> */ B(LdaKeyedProperty), R(2), U8(0),
                B(Star), R(4),
                B(LdaZero),
  /*   59 E> */ B(LdaKeyedProperty), R(3), U8(2),
  /*   48 E> */ B(Add), R(4), U8(4),
  /*   63 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

