#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function f() { %TheHole() }
  f();
"
frame size: 0
parameter count: 1
bytecode array length: 8
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(CallRuntime), U16(Runtime::kTheHole), R(0), U8(0),
                B(LdaUndefined),
  /*   26 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f(a) { return %IsArray(a) }
  f(undefined);
"
frame size: 0
parameter count: 2
bytecode array length: 7
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   16 S> */ B(CallRuntime), U16(Runtime::kIsArray), R(arg0), U8(1),
  /*   34 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f() { return %Add(1, 2) }
  f();
"
frame size: 2
parameter count: 1
bytecode array length: 15
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
                B(LdaSmi), I8(2),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::kAdd), R(0), U8(2),
  /*   32 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

