#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  {
    class A {
      a;
      ['b'];
      static c;
      static ['d'];
    }
  
    class B {
      a = 1;
      ['b'] = this.a;
      static c = 3;
      static ['d'] = this.c;
    }
    new A;
    new B;
  }
"
frame size: 11
parameter count: 1
bytecode array length: 191
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(5),
                B(LdaTheHole),
                B(Star), R(8),
                B(CreateClosure), U8(2), U8(0), U8(2),
                B(Star), R(5),
                B(LdaConstant), U8(1),
                B(Star), R(6),
  /*   60 S> */ B(LdaConstant), U8(3),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(9),
  /*   92 S> */ B(LdaConstant), U8(4),
                B(Star), R(10),
                B(LdaConstant), U8(5),
                B(TestEqualStrict), R(10), U8(0),
                B(Mov), R(5), R(7),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
                B(Ldar), R(10),
                B(StaCurrentContextSlot), U8(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(5),
                B(Star), R(6),
                B(Mov), R(5), R(3),
                B(CreateClosure), U8(6), U8(1), U8(2),
                B(Star), R(7),
                B(StaNamedProperty), R(5), U8(7), U8(1),
                B(CreateClosure), U8(8), U8(2), U8(2),
                B(Star), R(9),
                B(CallProperty0), R(9), R(3), U8(3),
                B(PopContext), R(4),
                B(Mov), R(3), R(0),
  /*   38 E> */ B(CreateBlockContext), U8(9),
                B(PushContext), R(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(5),
                B(LdaTheHole),
                B(Star), R(8),
                B(CreateClosure), U8(11), U8(3), U8(2),
                B(Star), R(5),
                B(LdaConstant), U8(10),
                B(Star), R(6),
  /*  131 S> */ B(LdaConstant), U8(3),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(9),
  /*  176 S> */ B(LdaConstant), U8(4),
                B(Star), R(10),
                B(LdaConstant), U8(5),
                B(TestEqualStrict), R(10), U8(0),
                B(Mov), R(5), R(7),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
                B(Ldar), R(10),
                B(StaCurrentContextSlot), U8(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(5),
                B(Star), R(6),
                B(Mov), R(5), R(2),
                B(CreateClosure), U8(12), U8(4), U8(2),
                B(Star), R(7),
                B(StaNamedProperty), R(5), U8(7), U8(5),
                B(CreateClosure), U8(13), U8(5), U8(2),
                B(Star), R(9),
                B(CallProperty0), R(9), R(2), U8(7),
                B(PopContext), R(4),
                B(Mov), R(2), R(1),
  /*  197 S> */ B(Ldar), R(0),
  /*  197 E> */ B(Construct), R(0), R(0), U8(0), U8(9),
  /*  206 S> */ B(Ldar), R(2),
  /*  206 E> */ B(Construct), R(2), R(0), U8(0), U8(11),
                B(LdaUndefined),
  /*  215 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["b"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["d"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
  SHARED_FUNCTION_INFO_TYPE,
  SYMBOL_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  {
    class A extends class {} {
      a;
      ['b'];
      static c;
      static ['d'];
    }
  
    class B extends class {} {
      a = 1;
      ['b'] = this.a;
      static c = 3;
      static ['d'] = this.c;
      foo() { return 1; }
      constructor() {
        super();
      }
    }
  
    class C extends B {
      a = 1;
      ['b'] = this.a;
      static c = 3;
      static ['d'] = super.foo();
      constructor() {
        (() => super())();
      }
    }
  
    new A;
    new B;
    new C;
  }
"
frame size: 15
parameter count: 1
bytecode array length: 343
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(6),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(5),
                B(LdaTheHole),
                B(Star), R(14),
                B(CreateClosure), U8(3), U8(0), U8(2),
                B(Star), R(11),
                B(LdaConstant), U8(2),
                B(Star), R(12),
                B(Mov), R(11), R(13),
                B(CallRuntime), U16(Runtime::kDefineClass), R(12), U8(3),
                B(Star), R(12),
                B(CreateClosure), U8(4), U8(1), U8(2),
                B(Star), R(7),
                B(LdaConstant), U8(1),
                B(Star), R(8),
  /*   77 S> */ B(LdaConstant), U8(5),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(11),
  /*  109 S> */ B(LdaConstant), U8(6),
                B(Star), R(12),
                B(LdaConstant), U8(7),
                B(TestEqualStrict), R(12), U8(0),
                B(Mov), R(13), R(10),
                B(Mov), R(7), R(9),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
                B(Ldar), R(12),
                B(StaCurrentContextSlot), U8(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(5),
                B(Star), R(8),
                B(Mov), R(7), R(5),
                B(CreateClosure), U8(8), U8(2), U8(2),
                B(Star), R(9),
                B(StaNamedProperty), R(7), U8(9), U8(1),
                B(CreateClosure), U8(10), U8(3), U8(2),
                B(Star), R(11),
                B(CallProperty0), R(11), R(5), U8(3),
                B(PopContext), R(6),
                B(Mov), R(5), R(0),
  /*   38 E> */ B(CreateBlockContext), U8(11),
                B(PushContext), R(6),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(5),
                B(LdaTheHole),
                B(Star), R(14),
                B(CreateClosure), U8(14), U8(4), U8(2),
                B(Star), R(11),
                B(LdaConstant), U8(13),
                B(Star), R(12),
                B(Mov), R(11), R(13),
                B(CallRuntime), U16(Runtime::kDefineClass), R(12), U8(3),
                B(Star), R(12),
                B(CreateClosure), U8(15), U8(5), U8(2),
                B(Star), R(7),
                B(LdaConstant), U8(12),
                B(Star), R(8),
  /*  165 S> */ B(LdaConstant), U8(5),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(11),
  /*  210 S> */ B(LdaConstant), U8(6),
                B(Star), R(12),
                B(LdaConstant), U8(7),
                B(TestEqualStrict), R(12), U8(0),
                B(Mov), R(7), R(9),
                B(Mov), R(13), R(10),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
                B(Ldar), R(12),
                B(StaCurrentContextSlot), U8(5),
                B(CreateClosure), U8(16), U8(6), U8(2),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(6),
                B(Star), R(8),
                B(Mov), R(7), R(4),
                B(CreateClosure), U8(17), U8(7), U8(2),
                B(Star), R(9),
                B(StaNamedProperty), R(7), U8(9), U8(5),
                B(CreateClosure), U8(18), U8(8), U8(2),
                B(Star), R(11),
                B(CallProperty0), R(11), R(4), U8(7),
                B(PopContext), R(6),
                B(Mov), R(4), R(1),
  /*  122 E> */ B(CreateBlockContext), U8(19),
                B(PushContext), R(6),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(5),
  /*  313 E> */ B(CreateClosure), U8(21), U8(9), U8(2),
                B(Star), R(7),
                B(LdaConstant), U8(20),
                B(Star), R(8),
  /*  333 S> */ B(LdaConstant), U8(5),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(11),
  /*  378 S> */ B(LdaConstant), U8(6),
                B(Star), R(12),
                B(LdaConstant), U8(7),
                B(TestEqualStrict), R(12), U8(0),
                B(Mov), R(4), R(10),
                B(Mov), R(7), R(9),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
                B(Ldar), R(12),
                B(StaCurrentContextSlot), U8(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(5),
                B(Star), R(8),
                B(Mov), R(7), R(3),
                B(CreateClosure), U8(22), U8(10), U8(2),
                B(Star), R(9),
                B(StaNamedProperty), R(7), U8(9), U8(9),
                B(CreateClosure), U8(23), U8(11), U8(2),
                B(Star), R(11),
                B(Ldar), R(3),
                B(StaNamedProperty), R(11), U8(24), U8(11),
                B(CallProperty0), R(11), R(3), U8(13),
                B(PopContext), R(6),
                B(Mov), R(3), R(2),
  /*  456 S> */ B(Ldar), R(0),
  /*  456 E> */ B(Construct), R(0), R(0), U8(0), U8(15),
  /*  465 S> */ B(Ldar), R(1),
  /*  465 E> */ B(Construct), R(1), R(0), U8(0), U8(17),
  /*  474 S> */ B(Ldar), R(3),
  /*  474 E> */ B(Construct), R(3), R(0), U8(0), U8(19),
                B(LdaUndefined),
  /*  483 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["b"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["d"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
  SHARED_FUNCTION_INFO_TYPE,
  SYMBOL_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SCOPE_INFO_TYPE,
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
  SYMBOL_TYPE,
]
handlers: [
]

