#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  class A { constructor(...args) { this.args = args; } }
  new A(...[1, 2, 3]);
"
frame size: 7
parameter count: 1
bytecode array length: 51
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(Star), R(6),
                B(CreateClosure), U8(2), U8(0), U8(2),
                B(Star), R(3),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(3), R(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
                B(Star), R(4),
                B(Mov), R(5), R(1),
                B(PopContext), R(2),
                B(Mov), R(1), R(0),
  /*   89 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
                B(Star), R(3),
                B(Ldar), R(0),
  /*   89 E> */ B(ConstructWithSpread), R(0), R(3), U8(1), U8(1),
                B(LdaUndefined),
  /*  110 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
]
handlers: [
]

---
snippet: "
  class A { constructor(...args) { this.args = args; } }
  new A(0, ...[1, 2, 3]);
"
frame size: 7
parameter count: 1
bytecode array length: 54
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(Star), R(6),
                B(CreateClosure), U8(2), U8(0), U8(2),
                B(Star), R(3),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(3), R(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
                B(Star), R(4),
                B(Mov), R(5), R(1),
                B(PopContext), R(2),
                B(Mov), R(1), R(0),
  /*   89 S> */ B(LdaZero),
                B(Star), R(3),
                B(CreateArrayLiteral), U8(3), U8(0), U8(37),
                B(Star), R(4),
                B(Ldar), R(0),
  /*   89 E> */ B(ConstructWithSpread), R(0), R(3), U8(2), U8(1),
                B(LdaUndefined),
  /*  113 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
]
handlers: [
]

---
snippet: "
  class A { constructor(...args) { this.args = args; } }
  new A(0, ...[1, 2, 3], 4);
"
frame size: 10
parameter count: 1
bytecode array length: 131
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(Star), R(6),
                B(CreateClosure), U8(2), U8(0), U8(2),
                B(Star), R(3),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(3), R(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
                B(Star), R(4),
                B(Mov), R(5), R(1),
                B(PopContext), R(2),
                B(Mov), R(1), R(0),
  /*   89 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
                B(Star), R(4),
                B(LdaConstant), U8(4),
                B(Star), R(3),
  /*  101 S> */ B(CreateArrayLiteral), U8(5), U8(1), U8(37),
                B(Star), R(7),
                B(LdaNamedProperty), R(7), U8(6), U8(2),
                B(Star), R(8),
                B(CallProperty0), R(8), R(7), U8(4),
                B(Mov), R(5), R(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(6),
                B(LdaNamedProperty), R(6), U8(7), U8(6),
                B(Star), R(5),
                B(CallProperty0), R(5), R(6), U8(15),
                B(Star), R(9),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(LdaNamedProperty), R(9), U8(8), U8(17),
                B(JumpIfToBooleanTrue), U8(19),
                B(LdaNamedProperty), R(9), U8(9), U8(8),
                B(StaInArrayLiteral), R(4), R(3), U8(13),
                B(Ldar), R(3),
                B(Inc), U8(12),
                B(Star), R(3),
                B(JumpLoop), U8(33), I8(0),
                B(LdaSmi), I8(4),
                B(StaInArrayLiteral), R(4), R(3), U8(13),
                B(Mov), R(4), R(3),
                B(CallJSRuntime), U8(%reflect_construct), R(2), U8(2),
                B(LdaUndefined),
  /*  116 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  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: [
]

