#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function f() { return arguments; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 5
bytecodes: [
                B(CreateMappedArguments),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   32 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f() { return arguments[0]; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 9
bytecodes: [
                B(CreateMappedArguments),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaZero),
  /*   31 E> */ B(LdaKeyedProperty), R(0), U8(0),
  /*   35 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f() { 'use strict'; return arguments; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 5
bytecodes: [
                B(CreateUnmappedArguments),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   46 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a) { return arguments[0]; }
  f();
"
frame size: 2
parameter count: 2
bytecode array length: 17
bytecodes: [
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(1),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(4),
                B(CreateMappedArguments),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   16 S> */ B(LdaZero),
  /*   32 E> */ B(LdaKeyedProperty), R(0), U8(0),
  /*   36 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a, b, c) { return arguments; }
  f();
"
frame size: 2
parameter count: 4
bytecode array length: 21
bytecodes: [
                B(CreateFunctionContext), U8(3),
                B(PushContext), R(1),
                B(Ldar), R(arg0),
                B(StaCurrentContextSlot), U8(6),
                B(Ldar), R(arg1),
                B(StaCurrentContextSlot), U8(5),
                B(Ldar), R(arg2),
                B(StaCurrentContextSlot), U8(4),
                B(CreateMappedArguments),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   39 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a, b, c) { 'use strict'; return arguments; }
  f();
"
frame size: 1
parameter count: 4
bytecode array length: 5
bytecodes: [
                B(CreateUnmappedArguments),
                B(Star), R(0),
  /*   10 E> */ B(StackCheck),
  /*   53 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

