final class jdk.vm.ci.hotspot.HandleCleaner extends jdk.vm.ci.hotspot.Cleaner
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.vm.ci.hotspot.HandleCleaner
  super_class: jdk.vm.ci.hotspot.Cleaner
{
  private final long handle;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean isJObject;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            ldc Ljdk/vm/ci/hotspot/HandleCleaner;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic jdk.vm.ci.hotspot.HandleCleaner.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.lang.Object, long, boolean);
    descriptor: (Ljava/lang/Object;JZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // jdk.vm.ci.hotspot.HandleCleaner this
        start local 1 // java.lang.Object wrapper
        start local 2 // long handle
        start local 4 // boolean isJObject
         0: .line 51
            aload 0 /* this */
            aload 1 /* wrapper */
            invokespecial jdk.vm.ci.hotspot.Cleaner.<init>:(Ljava/lang/Object;)V
         1: .line 52
            aload 0 /* this */
            lload 2 /* handle */
            putfield jdk.vm.ci.hotspot.HandleCleaner.handle:J
         2: .line 53
            aload 0 /* this */
            iload 4 /* isJObject */
            putfield jdk.vm.ci.hotspot.HandleCleaner.isJObject:Z
         3: .line 54
            return
        end local 4 // boolean isJObject
        end local 2 // long handle
        end local 1 // java.lang.Object wrapper
        end local 0 // jdk.vm.ci.hotspot.HandleCleaner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Ljdk/vm/ci/hotspot/HandleCleaner;
            0    4     1    wrapper  Ljava/lang/Object;
            0    4     2     handle  J
            0    4     4  isJObject  Z
    MethodParameters:
           Name  Flags
      wrapper    
      handle     
      isJObject  

  void doCleanup();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=8, locals=3, args_size=1
        start local 0 // jdk.vm.ci.hotspot.HandleCleaner this
         0: .line 61
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HandleCleaner.isJObject:Z
            ifeq 3
         1: .line 65
            invokestatic jdk.vm.ci.hotspot.CompilerToVM.compilerToVM:()Ljdk/vm/ci/hotspot/CompilerToVM;
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HandleCleaner.handle:J
            invokevirtual jdk.vm.ci.hotspot.CompilerToVM.deleteGlobalHandle:(J)V
         2: .line 66
            goto 5
         3: .line 70
      StackMap locals:
      StackMap stack:
            getstatic jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE:Ljdk/internal/misc/Unsafe;
            aconst_null
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HandleCleaner.handle:J
            invokevirtual jdk.internal.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
            lstore 1 /* value */
        start local 1 // long value
         4: .line 71
            getstatic jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE:Ljdk/internal/misc/Unsafe;
            aconst_null
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HandleCleaner.handle:J
            lload 1 /* value */
            lconst_0
            invokevirtual jdk.internal.misc.Unsafe.compareAndSetLong:(Ljava/lang/Object;JJJ)Z
            pop
        end local 1 // long value
         5: .line 73
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.vm.ci.hotspot.HandleCleaner this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljdk/vm/ci/hotspot/HandleCleaner;
            4    5     1  value  J

  static void create(java.lang.Object, long);
    descriptor: (Ljava/lang/Object;J)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.Object wrapper
        start local 1 // long handle
         0: .line 81
            getstatic jdk.vm.ci.hotspot.HandleCleaner.$assertionsDisabled:Z
            ifne 1
            aload 0 /* wrapper */
            instanceof jdk.vm.ci.hotspot.IndirectHotSpotObjectConstantImpl
            ifne 1
            aload 0 /* wrapper */
            instanceof jdk.vm.ci.hotspot.MetaspaceHandleObject
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 82
      StackMap locals:
      StackMap stack:
            new jdk.vm.ci.hotspot.HandleCleaner
            aload 0 /* wrapper */
            lload 1 /* handle */
            aload 0 /* wrapper */
            instanceof jdk.vm.ci.hotspot.IndirectHotSpotObjectConstantImpl
            invokespecial jdk.vm.ci.hotspot.HandleCleaner.<init>:(Ljava/lang/Object;JZ)V
         2: .line 83
            return
        end local 1 // long handle
        end local 0 // java.lang.Object wrapper
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  wrapper  Ljava/lang/Object;
            0    3     1   handle  J
    MethodParameters:
         Name  Flags
      wrapper  
      handle   
}
SourceFile: "HandleCleaner.java"