class com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation extends com.oracle.svm.core.thread.NativeVMOperation
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation
  super_class: com.oracle.svm.core.thread.NativeVMOperation
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
         0: .line 1085
            aload 0 /* this */
            ldc "Garbage collection"
            getstatic com.oracle.svm.core.thread.VMOperation$SystemEffect.SAFEPOINT:Lcom/oracle/svm/core/thread/VMOperation$SystemEffect;
            invokespecial com.oracle.svm.core.thread.NativeVMOperation.<init>:(Ljava/lang/String;Lcom/oracle/svm/core/thread/VMOperation$SystemEffect;)V
         1: .line 1086
            return
        end local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/svm/core/genscavenge/GCImpl$CollectionVMOperation;

  protected boolean isGC();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
         0: .line 1091
            iconst_1
            ireturn
        end local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/GCImpl$CollectionVMOperation;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)

  protected void operate(com.oracle.svm.core.thread.NativeVMOperationData);
    descriptor: (Lcom/oracle/svm/core/thread/NativeVMOperationData;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
        start local 1 // com.oracle.svm.core.thread.NativeVMOperationData data
         0: .line 1105
            invokestatic com.oracle.svm.core.snippets.ImplicitExceptions.activateImplicitExceptionsAreFatal:()V
         1: .line 1107
            aload 1 /* data */
            checkcast com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData
            astore 2 /* d */
        start local 2 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData d
         2: .line 1108
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
            aload 2 /* d */
            invokeinterface com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData.getCauseId:()I
            invokestatic com.oracle.svm.core.heap.GCCause.fromId:(I)Lcom/oracle/svm/core/heap/GCCause;
            aload 2 /* d */
            invokeinterface com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData.getRequestingEpoch:()Lorg/graalvm/word/UnsignedWord;
            aload 2 /* d */
            invokeinterface com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData.getForceFullGC:()Z
            invokevirtual com.oracle.svm.core.genscavenge.GCImpl.collectOperation:(Lcom/oracle/svm/core/heap/GCCause;Lorg/graalvm/word/UnsignedWord;Z)Z
            istore 3 /* outOfMemory */
        start local 3 // boolean outOfMemory
         3: .line 1109
            aload 2 /* d */
            iload 3 /* outOfMemory */
            invokeinterface com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData.setOutOfMemory:(Z)V
        end local 3 // boolean outOfMemory
        end local 2 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData d
         4: .line 1110
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         6: .line 1111
            aload 2 /* t */
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.lang.Throwable t
         7: .line 1112
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         8: .line 1113
            invokestatic com.oracle.svm.core.snippets.ImplicitExceptions.deactivateImplicitExceptionsAreFatal:()V
         9: .line 1114
            aload 4
            athrow
        10: .line 1113
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.snippets.ImplicitExceptions.deactivateImplicitExceptionsAreFatal:()V
        11: .line 1115
            return
        end local 1 // com.oracle.svm.core.thread.NativeVMOperationData data
        end local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lcom/oracle/svm/core/genscavenge/GCImpl$CollectionVMOperation;
            0   12     1         data  Lcom/oracle/svm/core/thread/NativeVMOperationData;
            2    4     2            d  Lcom/oracle/svm/core/genscavenge/GCImpl$CollectionVMOperationData;
            3    4     3  outOfMemory  Z
            6    7     2            t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     4       5  Class java.lang.Throwable
           1     7       7  any
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.RestrictHeapAccess(access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.NO_ALLOCATION:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, reason = "Must not allocate while collecting")
    MethodParameters:
      Name  Flags
      data  

  protected boolean hasWork(com.oracle.svm.core.thread.NativeVMOperationData);
    descriptor: (Lcom/oracle/svm/core/thread/NativeVMOperationData;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
        start local 1 // com.oracle.svm.core.thread.NativeVMOperationData data
         0: .line 1119
            aload 1 /* data */
            checkcast com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData
            astore 2 /* d */
        start local 2 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData d
         1: .line 1120
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
            invokevirtual com.oracle.svm.core.genscavenge.GCImpl.getCollectionEpoch:()Lorg/graalvm/word/UnsignedWord;
            aload 2 /* d */
            invokeinterface com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData.getRequestingEpoch:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.equal:(Lorg/graalvm/word/UnsignedWord;)Z
            ireturn
        end local 2 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData d
        end local 1 // com.oracle.svm.core.thread.NativeVMOperationData data
        end local 0 // com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/svm/core/genscavenge/GCImpl$CollectionVMOperation;
            0    2     1  data  Lcom/oracle/svm/core/thread/NativeVMOperationData;
            1    2     2     d  Lcom/oracle/svm/core/genscavenge/GCImpl$CollectionVMOperationData;
    MethodParameters:
      Name  Flags
      data  
}
SourceFile: "GCImpl.java"
NestHost: com.oracle.svm.core.genscavenge.GCImpl
InnerClasses:
  public final Access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access of com.oracle.svm.core.annotate.RestrictHeapAccess
  private CollectionVMOperation = com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperation of com.oracle.svm.core.genscavenge.GCImpl
  private abstract CollectionVMOperationData = com.oracle.svm.core.genscavenge.GCImpl$CollectionVMOperationData of com.oracle.svm.core.genscavenge.GCImpl
  public final SystemEffect = com.oracle.svm.core.thread.VMOperation$SystemEffect of com.oracle.svm.core.thread.VMOperation