#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  Math.max(...[1, 2, 3]);
"
frame size: 3
parameter count: 1
bytecode array length: 25
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(LdaGlobal), U8(0), U8(0),
                B(Star), R(1),
  /*   39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(2),
                B(Star), R(0),
                B(CreateArrayLiteral), U8(2), U8(4), U8(37),
                B(Star), R(2),
  /*   39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(5),
                B(LdaUndefined),
  /*   58 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["Math"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["max"],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
]
handlers: [
]

---
snippet: "
  Math.max(0, ...[1, 2, 3]);
"
frame size: 4
parameter count: 1
bytecode array length: 28
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(LdaGlobal), U8(0), U8(0),
                B(Star), R(1),
  /*   39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(2),
                B(Star), R(0),
                B(LdaZero),
                B(Star), R(2),
                B(CreateArrayLiteral), U8(2), U8(4), U8(37),
                B(Star), R(3),
  /*   39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(5),
                B(LdaUndefined),
  /*   61 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["Math"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["max"],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
]
handlers: [
]

---
snippet: "
  Math.max(0, ...[1, 2, 3], 4);
"
frame size: 10
parameter count: 1
bytecode array length: 107
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(LdaGlobal), U8(0), U8(0),
                B(Star), R(0),
                B(LdaNamedProperty), R(0), U8(1), U8(2),
                B(Star), R(1),
                B(CreateArrayLiteral), U8(2), U8(4), U8(37),
                B(Star), R(4),
                B(LdaConstant), U8(3),
                B(Star), R(3),
  /*   49 S> */ B(CreateArrayLiteral), U8(4), U8(5), U8(37),
                B(Star), R(7),
                B(LdaNamedProperty), R(7), U8(5), U8(6),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(8),
                B(Mov), R(0), R(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(6),
                B(LdaNamedProperty), R(6), U8(6), U8(10),
                B(Star), R(5),
                B(CallProperty0), R(5), R(6), U8(19),
                B(Star), R(9),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(LdaNamedProperty), R(9), U8(7), U8(21),
                B(JumpIfToBooleanTrue), U8(19),
                B(LdaNamedProperty), R(9), U8(8), U8(12),
                B(StaInArrayLiteral), R(4), R(3), U8(17),
                B(Ldar), R(3),
                B(Inc), U8(16),
                B(Star), R(3),
                B(JumpLoop), U8(33), I8(0),
                B(LdaSmi), I8(4),
                B(StaInArrayLiteral), R(4), R(3), U8(17),
                B(Mov), R(4), R(3),
                B(CallJSRuntime), U8(%reflect_apply), R(1), U8(3),
                B(LdaUndefined),
  /*   64 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["Math"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["max"],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  Smi [1],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
]
handlers: [
]

