#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  class Person {
    constructor(name) { this.name = name; }
    speak() { console.log(this.name + ' is speaking.'); }
  }
"
frame size: 8
parameter count: 1
bytecode array length: 72
bytecodes: [
                B(LdaTheHole),
                B(Star), R(2),
  /*   30 E> */ B(StackCheck),
                B(LdaTheHole),
                B(Star), R(0),
  /*   34 S> */ B(LdaTheHole),
                B(Star), R(3),
                B(CreateClosure), U8(0), U8(2),
                B(Star), R(4),
                B(LdaSmi), U8(34),
                B(Star), R(5),
                B(Wide), B(LdaSmi), U16(148),
                B(Star), R(6),
                B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4),
                B(Star), R(3),
                B(LdaNamedProperty), R(3), U8(1), U8(2),
                B(Star), R(4),
                B(LdaConstant), U8(2),
                B(ToName), R(6),
                B(CreateClosure), U8(3), U8(2),
                B(Star), R(7),
                B(LdaSmi), U8(2),
                B(StaDataPropertyInLiteral), R(4), R(6), R(7), U8(1),
                B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(3), U8(1),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
                B(Star), R(0),
                B(Star), R(1),
                B(Star), R(2),
                B(LdaUndefined),
  /*  149 S> */ B(Return),
]
constant pool: [
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["speak"],
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  class person {
    constructor(name) { this.name = name; }
    speak() { console.log(this.name + ' is speaking.'); }
  }
"
frame size: 8
parameter count: 1
bytecode array length: 72
bytecodes: [
                B(LdaTheHole),
                B(Star), R(2),
  /*   30 E> */ B(StackCheck),
                B(LdaTheHole),
                B(Star), R(0),
  /*   34 S> */ B(LdaTheHole),
                B(Star), R(3),
                B(CreateClosure), U8(0), U8(2),
                B(Star), R(4),
                B(LdaSmi), U8(34),
                B(Star), R(5),
                B(Wide), B(LdaSmi), U16(148),
                B(Star), R(6),
                B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4),
                B(Star), R(3),
                B(LdaNamedProperty), R(3), U8(1), U8(2),
                B(Star), R(4),
                B(LdaConstant), U8(2),
                B(ToName), R(6),
                B(CreateClosure), U8(3), U8(2),
                B(Star), R(7),
                B(LdaSmi), U8(2),
                B(StaDataPropertyInLiteral), R(4), R(6), R(7), U8(1),
                B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(3), U8(1),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
                B(Star), R(0),
                B(Star), R(1),
                B(Star), R(2),
                B(LdaUndefined),
  /*  149 S> */ B(Return),
]
constant pool: [
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["speak"],
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  var n0 = 'a';
  var n1 = 'b';
  class N {
    [n0]() { return n0; }
    static [n1]() { return n1; }
  }
"
frame size: 10
parameter count: 1
bytecode array length: 115
bytecodes: [
                B(CreateFunctionContext), U8(2),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(Star), R(2),
  /*   30 E> */ B(StackCheck),
  /*   43 S> */ B(LdaConstant), U8(0),
  /*   43 E> */ B(StaCurrentContextSlot), U8(4),
  /*   57 S> */ B(LdaConstant), U8(1),
  /*   57 E> */ B(StaCurrentContextSlot), U8(5),
                B(LdaTheHole),
                B(Star), R(0),
  /*   62 S> */ B(LdaTheHole),
                B(Star), R(4),
                B(CreateClosure), U8(2), U8(2),
                B(Star), R(5),
                B(LdaSmi), U8(62),
                B(Star), R(6),
                B(Wide), B(LdaSmi), U16(128),
                B(Star), R(7),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
                B(Star), R(4),
                B(LdaNamedProperty), R(4), U8(3), U8(2),
                B(Star), R(5),
                B(LdaCurrentContextSlot), U8(4),
  /*   75 E> */ B(ToName), R(7),
                B(CreateClosure), U8(4), U8(2),
                B(Star), R(8),
                B(LdaSmi), U8(2),
                B(StaDataPropertyInLiteral), R(5), R(7), R(8), U8(3),
                B(Star), R(9),
                B(LdaCurrentContextSlot), U8(5),
  /*  106 E> */ B(ToName), R(7),
                B(LdaConstant), U8(3),
                B(TestEqualStrict), R(7), U8(0),
                B(Mov), R(4), R(6),
                B(JumpIfToBooleanFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
                B(CreateClosure), U8(5), U8(2),
                B(Star), R(8),
                B(StaDataPropertyInLiteral), R(6), R(7), R(8), U8(3),
                B(CallRuntime), U16(Runtime::kInstallClassNameAccessorWithCheck), R(4), U8(1),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
                B(Star), R(0),
                B(Star), R(1),
                B(Star), R(2),
                B(LdaUndefined),
  /*  129 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["b"],
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  var count = 0;
  class C { constructor() { count++; }}
  return new C();
"
frame size: 8
parameter count: 1
bytecode array length: 66
bytecodes: [
                B(CreateFunctionContext), U8(1),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(Star), R(2),
  /*   30 E> */ B(StackCheck),
  /*   46 S> */ B(LdaZero),
  /*   46 E> */ B(StaCurrentContextSlot), U8(4),
                B(LdaTheHole),
                B(Star), R(0),
  /*   49 S> */ B(LdaTheHole),
                B(Star), R(4),
                B(CreateClosure), U8(0), U8(2),
                B(Star), R(5),
                B(LdaSmi), U8(49),
                B(Star), R(6),
                B(LdaSmi), U8(86),
                B(Star), R(7),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
                B(Star), R(4),
                B(LdaNamedProperty), R(4), U8(1), U8(2),
                B(Star), R(5),
                B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(4), U8(1),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
                B(Star), R(0),
                B(Star), R(1),
                B(Star), R(2),
  /*   87 S> */ B(Nop),
  /*   94 E> */ B(New), R(2), R(0), U8(0), U8(4),
  /*  103 S> */ B(Return),
]
constant pool: [
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
]
handlers: [
]

---
snippet: "
  (class {})
  class E { static name () {}}
"
frame size: 9
parameter count: 1
bytecode array length: 101
bytecodes: [
                B(LdaTheHole),
                B(Star), R(3),
  /*   30 E> */ B(StackCheck),
  /*   35 S> */ B(LdaTheHole),
                B(Star), R(4),
                B(CreateClosure), U8(0), U8(2),
                B(Star), R(5),
                B(LdaSmi), U8(35),
                B(Star), R(6),
                B(LdaSmi), U8(43),
                B(Star), R(7),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
                B(Star), R(4),
                B(LdaNamedProperty), R(4), U8(1), U8(2),
                B(Star), R(5),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
                B(Star), R(1),
                B(LdaTheHole),
                B(Star), R(0),
  /*   45 S> */ B(LdaTheHole),
                B(Star), R(4),
                B(CreateClosure), U8(2), U8(2),
                B(Star), R(5),
                B(LdaSmi), U8(45),
                B(Star), R(6),
                B(LdaSmi), U8(73),
                B(Star), R(7),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
                B(Star), R(4),
                B(LdaNamedProperty), R(4), U8(1), U8(4),
                B(Star), R(5),
                B(LdaConstant), U8(3),
                B(ToName), R(7),
                B(CreateClosure), U8(4), U8(2),
                B(Star), R(8),
                B(LdaSmi), U8(2),
                B(StaDataPropertyInLiteral), R(4), R(7), R(8), U8(1),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
                B(Star), R(0),
                B(Star), R(2),
                B(Star), R(3),
                B(LdaUndefined),
  /*   74 S> */ B(Return),
]
constant pool: [
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["name"],
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

