#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: mixed
execute: yes
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),
  /*   35 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), U8(1),
                B(Star), R(0),
                B(LdaSmi), U8(2),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::kAdd), R(0), U8(2),
  /*   33 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f() { return %spread_iterable([1]) }
  f();
"
frame size: 2
parameter count: 1
bytecode array length: 14
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdrUndefined), R(0),
                B(CreateArrayLiteral), U8(0), U8(0), U8(3),
                B(Star), R(1),
                B(CallJSRuntime), U8(129), R(0), U8(2),
  /*   44 S> */ B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
]
handlers: [
]

