public final class sun.rmi.transport.ObjectTable
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: sun.rmi.transport.ObjectTable
  super_class: java.lang.Object
{
  private static final long gcInterval;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Object tableLock;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Map<sun.rmi.transport.ObjectEndpoint, sun.rmi.transport.Target> objTable;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Lsun/rmi/transport/ObjectEndpoint;Lsun/rmi/transport/Target;>;

  private static final java.util.Map<sun.rmi.transport.WeakRef, sun.rmi.transport.Target> implTable;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Lsun/rmi/transport/WeakRef;Lsun/rmi/transport/Target;>;

  private static final java.lang.Object keepAliveLock;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static int keepAliveCount;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.Thread reaper;
    descriptor: Ljava/lang/Thread;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static final java.lang.ref.ReferenceQueue reapQueue;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static sun.misc.GC$LatencyRequest gcLatencyRequest;
    descriptor: Lsun/misc/GC$LatencyRequest;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 55
            new sun.security.action.GetLongAction
            dup
            ldc "sun.rmi.dgc.server.gcInterval"
            ldc 3600000
            invokespecial sun.security.action.GetLongAction.<init>:(Ljava/lang/String;J)V
         1: .line 54
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
         2: .line 53
            putstatic sun.rmi.transport.ObjectTable.gcInterval:J
         3: .line 61
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
         4: .line 65
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
         5: .line 64
            putstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
         6: .line 67
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
         7: .line 66
            putstatic sun.rmi.transport.ObjectTable.implTable:Ljava/util/Map;
         8: .line 73
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic sun.rmi.transport.ObjectTable.keepAliveLock:Ljava/lang/Object;
         9: .line 76
            iconst_0
            putstatic sun.rmi.transport.ObjectTable.keepAliveCount:I
        10: .line 79
            aconst_null
            putstatic sun.rmi.transport.ObjectTable.reaper:Ljava/lang/Thread;
        11: .line 82
            new java.lang.ref.ReferenceQueue
            dup
            invokespecial java.lang.ref.ReferenceQueue.<init>:()V
            putstatic sun.rmi.transport.ObjectTable.reapQueue:Ljava/lang/ref/ReferenceQueue;
        12: .line 85
            aconst_null
            putstatic sun.rmi.transport.ObjectTable.gcLatencyRequest:Lsun/misc/GC$LatencyRequest;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.rmi.transport.ObjectTable this
         0: .line 90
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.rmi.transport.ObjectTable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/transport/ObjectTable;

  static sun.rmi.transport.Target getTarget(sun.rmi.transport.ObjectEndpoint);
    descriptor: (Lsun/rmi/transport/ObjectEndpoint;)Lsun/rmi/transport/Target;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.rmi.transport.ObjectEndpoint oe
         0: .line 96
            getstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 97
            getstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
            aload 0 /* oe */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.rmi.transport.Target
            aload 1
            monitorexit
         2: areturn
         3: .line 96
      StackMap locals: sun.rmi.transport.ObjectEndpoint java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // sun.rmi.transport.ObjectEndpoint oe
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    oe  Lsun/rmi/transport/ObjectEndpoint;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any
    MethodParameters:
      Name  Flags
      oe    

  public static sun.rmi.transport.Target getTarget(java.rmi.Remote);
    descriptor: (Ljava/rmi/Remote;)Lsun/rmi/transport/Target;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.rmi.Remote impl
         0: .line 105
            getstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 106
            getstatic sun.rmi.transport.ObjectTable.implTable:Ljava/util/Map;
            new sun.rmi.transport.WeakRef
            dup
            aload 0 /* impl */
            invokespecial sun.rmi.transport.WeakRef.<init>:(Ljava/lang/Object;)V
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.rmi.transport.Target
            aload 1
            monitorexit
         2: areturn
         3: .line 105
      StackMap locals: java.rmi.Remote java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // java.rmi.Remote impl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  impl  Ljava/rmi/Remote;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any
    MethodParameters:
      Name  Flags
      impl  

  public static java.rmi.Remote getStub(java.rmi.Remote);
    descriptor: (Ljava/rmi/Remote;)Ljava/rmi/Remote;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.rmi.Remote impl
         0: .line 122
            aload 0 /* impl */
            invokestatic sun.rmi.transport.ObjectTable.getTarget:(Ljava/rmi/Remote;)Lsun/rmi/transport/Target;
            astore 1 /* target */
        start local 1 // sun.rmi.transport.Target target
         1: .line 123
            aload 1 /* target */
            ifnonnull 3
         2: .line 124
            new java.rmi.NoSuchObjectException
            dup
            ldc "object not exported"
            invokespecial java.rmi.NoSuchObjectException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 126
      StackMap locals: sun.rmi.transport.Target
      StackMap stack:
            aload 1 /* target */
            invokevirtual sun.rmi.transport.Target.getStub:()Ljava/rmi/Remote;
            areturn
        end local 1 // sun.rmi.transport.Target target
        end local 0 // java.rmi.Remote impl
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    impl  Ljava/rmi/Remote;
            1    4     1  target  Lsun/rmi/transport/Target;
    Exceptions:
      throws java.rmi.NoSuchObjectException
    MethodParameters:
      Name  Flags
      impl  

  public static boolean unexportObject(java.rmi.Remote, boolean);
    descriptor: (Ljava/rmi/Remote;Z)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.rmi.Remote obj
        start local 1 // boolean force
         0: .line 150
            getstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 151
            aload 0 /* obj */
            invokestatic sun.rmi.transport.ObjectTable.getTarget:(Ljava/rmi/Remote;)Lsun/rmi/transport/Target;
            astore 3 /* target */
        start local 3 // sun.rmi.transport.Target target
         2: .line 152
            aload 3 /* target */
            ifnonnull 4
         3: .line 153
            new java.rmi.NoSuchObjectException
            dup
            ldc "object not exported"
            invokespecial java.rmi.NoSuchObjectException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 155
      StackMap locals: java.lang.Object sun.rmi.transport.Target
      StackMap stack:
            aload 3 /* target */
            iload 1 /* force */
            invokevirtual sun.rmi.transport.Target.unexport:(Z)Z
            ifeq 8
         5: .line 156
            aload 3 /* target */
            invokestatic sun.rmi.transport.ObjectTable.removeTarget:(Lsun/rmi/transport/Target;)V
         6: .line 157
            aload 2
            monitorexit
         7: iconst_1
            ireturn
         8: .line 159
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         9: iconst_0
            ireturn
        end local 3 // sun.rmi.transport.Target target
        10: .line 150
      StackMap locals: java.rmi.Remote int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        11: athrow
        end local 1 // boolean force
        end local 0 // java.rmi.Remote obj
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0     obj  Ljava/rmi/Remote;
            0   12     1   force  Z
            2   10     3  target  Lsun/rmi/transport/Target;
      Exception table:
        from    to  target  type
           1     7      10  any
           8     9      10  any
          10    11      10  any
    Exceptions:
      throws java.rmi.NoSuchObjectException
    MethodParameters:
       Name  Flags
      obj    
      force  

  static void putTarget(sun.rmi.transport.Target);
    descriptor: (Lsun/rmi/transport/Target;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // sun.rmi.transport.Target target
         0: .line 171
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.getObjectEndpoint:()Lsun/rmi/transport/ObjectEndpoint;
            astore 1 /* oe */
        start local 1 // sun.rmi.transport.ObjectEndpoint oe
         1: .line 172
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.getWeakImpl:()Lsun/rmi/transport/WeakRef;
            astore 2 /* weakImpl */
        start local 2 // sun.rmi.transport.WeakRef weakImpl
         2: .line 174
            getstatic sun.rmi.transport.DGCImpl.dgcLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 4
         3: .line 175
            getstatic sun.rmi.transport.DGCImpl.dgcLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "add object "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* oe */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         4: .line 178
      StackMap locals: sun.rmi.transport.ObjectEndpoint sun.rmi.transport.WeakRef
      StackMap stack:
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.getImpl:()Ljava/rmi/Remote;
            astore 3 /* impl */
        start local 3 // java.rmi.Remote impl
         5: .line 179
            aload 3 /* impl */
            ifnonnull 9
         6: .line 180
            new java.rmi.server.ExportException
            dup
         7: .line 181
            ldc "internal error: attempt to export collected object"
         8: .line 180
            invokespecial java.rmi.server.ExportException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 184
      StackMap locals: java.rmi.Remote
      StackMap stack:
            getstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        10: .line 185
            getstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
            aload 1 /* oe */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 14
        11: .line 186
            new java.rmi.server.ExportException
            dup
        12: .line 187
            ldc "internal error: ObjID already in use"
        13: .line 186
            invokespecial java.rmi.server.ExportException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 188
      StackMap locals: java.lang.Object
      StackMap stack:
            getstatic sun.rmi.transport.ObjectTable.implTable:Ljava/util/Map;
            aload 2 /* weakImpl */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 16
        15: .line 189
            new java.rmi.server.ExportException
            dup
            ldc "object already exported"
            invokespecial java.rmi.server.ExportException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 192
      StackMap locals:
      StackMap stack:
            getstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
            aload 1 /* oe */
            aload 0 /* target */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 193
            getstatic sun.rmi.transport.ObjectTable.implTable:Ljava/util/Map;
            aload 2 /* weakImpl */
            aload 0 /* target */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 195
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.isPermanent:()Z
            ifne 20
        19: .line 196
            invokestatic sun.rmi.transport.ObjectTable.incrementKeepAliveCount:()V
        20: .line 184
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 4
            monitorexit
        23: athrow
        24: .line 199
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.rmi.Remote impl
        end local 2 // sun.rmi.transport.WeakRef weakImpl
        end local 1 // sun.rmi.transport.ObjectEndpoint oe
        end local 0 // sun.rmi.transport.Target target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0    target  Lsun/rmi/transport/Target;
            1   25     1        oe  Lsun/rmi/transport/ObjectEndpoint;
            2   25     2  weakImpl  Lsun/rmi/transport/WeakRef;
            5   25     3      impl  Ljava/rmi/Remote;
      Exception table:
        from    to  target  type
          10    21      22  any
          22    23      22  any
    Exceptions:
      throws java.rmi.server.ExportException
    MethodParameters:
        Name  Flags
      target  

  private static void removeTarget(sun.rmi.transport.Target);
    descriptor: (Lsun/rmi/transport/Target;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.rmi.transport.Target target
         0: .line 210
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.getObjectEndpoint:()Lsun/rmi/transport/ObjectEndpoint;
            astore 1 /* oe */
        start local 1 // sun.rmi.transport.ObjectEndpoint oe
         1: .line 211
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.getWeakImpl:()Lsun/rmi/transport/WeakRef;
            astore 2 /* weakImpl */
        start local 2 // sun.rmi.transport.WeakRef weakImpl
         2: .line 213
            getstatic sun.rmi.transport.DGCImpl.dgcLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 4
         3: .line 214
            getstatic sun.rmi.transport.DGCImpl.dgcLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "remove object "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* oe */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         4: .line 217
      StackMap locals: sun.rmi.transport.ObjectEndpoint sun.rmi.transport.WeakRef
      StackMap stack:
            getstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
            aload 1 /* oe */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 218
            getstatic sun.rmi.transport.ObjectTable.implTable:Ljava/util/Map;
            aload 2 /* weakImpl */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 220
            aload 0 /* target */
            invokevirtual sun.rmi.transport.Target.markRemoved:()V
         7: .line 221
            return
        end local 2 // sun.rmi.transport.WeakRef weakImpl
        end local 1 // sun.rmi.transport.ObjectEndpoint oe
        end local 0 // sun.rmi.transport.Target target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0    target  Lsun/rmi/transport/Target;
            1    8     1        oe  Lsun/rmi/transport/ObjectEndpoint;
            2    8     2  weakImpl  Lsun/rmi/transport/WeakRef;
    MethodParameters:
        Name  Flags
      target  

  static void referenced(java.rmi.server.ObjID, long, java.rmi.dgc.VMID);
    descriptor: (Ljava/rmi/server/ObjID;JLjava/rmi/dgc/VMID;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // java.rmi.server.ObjID id
        start local 1 // long sequenceNum
        start local 3 // java.rmi.dgc.VMID vmid
         0: .line 229
            getstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         1: .line 231
            new sun.rmi.transport.ObjectEndpoint
            dup
            aload 0 /* id */
            invokestatic sun.rmi.transport.Transport.currentTransport:()Lsun/rmi/transport/Transport;
            invokespecial sun.rmi.transport.ObjectEndpoint.<init>:(Ljava/rmi/server/ObjID;Lsun/rmi/transport/Transport;)V
         2: .line 230
            astore 5 /* oe */
        start local 5 // sun.rmi.transport.ObjectEndpoint oe
         3: .line 232
            getstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
            aload 5 /* oe */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.rmi.transport.Target
            astore 6 /* target */
        start local 6 // sun.rmi.transport.Target target
         4: .line 233
            aload 6 /* target */
            ifnull 6
         5: .line 234
            aload 6 /* target */
            lload 1 /* sequenceNum */
            aload 3 /* vmid */
            invokevirtual sun.rmi.transport.Target.referenced:(JLjava/rmi/dgc/VMID;)V
        end local 6 // sun.rmi.transport.Target target
        end local 5 // sun.rmi.transport.ObjectEndpoint oe
         6: .line 229
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 4
            monitorexit
         9: athrow
        10: .line 237
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.rmi.dgc.VMID vmid
        end local 1 // long sequenceNum
        end local 0 // java.rmi.server.ObjID id
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0           id  Ljava/rmi/server/ObjID;
            0   11     1  sequenceNum  J
            0   11     3         vmid  Ljava/rmi/dgc/VMID;
            3    6     5           oe  Lsun/rmi/transport/ObjectEndpoint;
            4    6     6       target  Lsun/rmi/transport/Target;
      Exception table:
        from    to  target  type
           1     7       8  any
           8     9       8  any
    MethodParameters:
             Name  Flags
      id           
      sequenceNum  
      vmid         

  static void unreferenced(java.rmi.server.ObjID, long, java.rmi.dgc.VMID, boolean);
    descriptor: (Ljava/rmi/server/ObjID;JLjava/rmi/dgc/VMID;Z)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // java.rmi.server.ObjID id
        start local 1 // long sequenceNum
        start local 3 // java.rmi.dgc.VMID vmid
        start local 4 // boolean strong
         0: .line 247
            getstatic sun.rmi.transport.ObjectTable.tableLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         1: .line 249
            new sun.rmi.transport.ObjectEndpoint
            dup
            aload 0 /* id */
            invokestatic sun.rmi.transport.Transport.currentTransport:()Lsun/rmi/transport/Transport;
            invokespecial sun.rmi.transport.ObjectEndpoint.<init>:(Ljava/rmi/server/ObjID;Lsun/rmi/transport/Transport;)V
         2: .line 248
            astore 6 /* oe */
        start local 6 // sun.rmi.transport.ObjectEndpoint oe
         3: .line 250
            getstatic sun.rmi.transport.ObjectTable.objTable:Ljava/util/Map;
            aload 6 /* oe */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.rmi.transport.Target
            astore 7 /* target */
        start local 7 // sun.rmi.transport.Target target
         4: .line 251
            aload 7 /* target */
            ifnull 6
         5: .line 252
            aload 7 /* target */
            lload 1 /* sequenceNum */
            aload 3 /* vmid */
            iload 4 /* strong */
            invokevirtual sun.rmi.transport.Target.unreferenced:(JLjava/rmi/dgc/VMID;Z)V
        end local 7 // sun.rmi.transport.Target target
        end local 6 // sun.rmi.transport.ObjectEndpoint oe
         6: .line 247
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 5
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 5
            monitorexit
         9: athrow
        10: .line 254
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean strong
        end local 3 // java.rmi.dgc.VMID vmid
        end local 1 // long sequenceNum
        end local 0 // java.rmi.server.ObjID id
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0           id  Ljava/rmi/server/ObjID;
            0   11     1  sequenceNum  J
            0   11     3         vmid  Ljava/rmi/dgc/VMID;
            0   11     4       strong  Z
            3    6     6           oe  Lsun/rmi/transport/ObjectEndpoint;
            4    6     7       target  Lsun/rmi/transport/Target;
      Exception table:
        from    to  target  type
           1     7       8  any
           8     9       8  any
    MethodParameters:
             Name  Flags
      id           
      sequenceNum  
      vmid         
      strong       

  static void incrementKeepAliveCount();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 274
            getstatic sun.rmi.transport.ObjectTable.keepAliveLock:Ljava/lang/Object;
            dup
            astore 0
            monitorenter
         1: .line 275
            getstatic sun.rmi.transport.ObjectTable.keepAliveCount:I
            iconst_1
            iadd
            putstatic sun.rmi.transport.ObjectTable.keepAliveCount:I
         2: .line 277
            getstatic sun.rmi.transport.ObjectTable.reaper:Ljava/lang/Thread;
            ifnonnull 6
         3: .line 279
            new sun.rmi.runtime.NewThreadAction
            dup
            new sun.rmi.transport.ObjectTable$Reaper
            dup
            invokespecial sun.rmi.transport.ObjectTable$Reaper.<init>:()V
            ldc "Reaper"
            iconst_0
            invokespecial sun.rmi.runtime.NewThreadAction.<init>:(Ljava/lang/Runnable;Ljava/lang/String;Z)V
         4: .line 278
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Thread
            putstatic sun.rmi.transport.ObjectTable.reaper:Ljava/lang/Thread;
         5: .line 280
            getstatic sun.rmi.transport.ObjectTable.reaper:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
         6: .line 290
      StackMap locals: java.lang.Object
      StackMap stack:
            getstatic sun.rmi.transport.ObjectTable.gcLatencyRequest:Lsun/misc/GC$LatencyRequest;
            ifnonnull 8
         7: .line 291
            getstatic sun.rmi.transport.ObjectTable.gcInterval:J
            invokestatic sun.misc.GC.requestLatency:(J)Lsun/misc/GC$LatencyRequest;
            putstatic sun.rmi.transport.ObjectTable.gcLatencyRequest:Lsun/misc/GC$LatencyRequest;
         8: .line 274
      StackMap locals:
      StackMap stack:
            aload 0
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 0
            monitorexit
        11: athrow
        12: .line 294
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           1     9      10  any
          10    11      10  any

  static void decrementKeepAliveCount();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 310
            getstatic sun.rmi.transport.ObjectTable.keepAliveLock:Ljava/lang/Object;
            dup
            astore 0
            monitorenter
         1: .line 311
            getstatic sun.rmi.transport.ObjectTable.keepAliveCount:I
            iconst_1
            isub
            putstatic sun.rmi.transport.ObjectTable.keepAliveCount:I
         2: .line 313
            getstatic sun.rmi.transport.ObjectTable.keepAliveCount:I
            ifne 8
         3: .line 314
            getstatic sun.rmi.transport.ObjectTable.reaper:Ljava/lang/Thread;
            ifnonnull 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 315
      StackMap locals: java.lang.Object
      StackMap stack:
            new sun.rmi.transport.ObjectTable$1
            dup
            invokespecial sun.rmi.transport.ObjectTable$1.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         5: .line 321
            aconst_null
            putstatic sun.rmi.transport.ObjectTable.reaper:Ljava/lang/Thread;
         6: .line 328
            getstatic sun.rmi.transport.ObjectTable.gcLatencyRequest:Lsun/misc/GC$LatencyRequest;
            invokevirtual sun.misc.GC$LatencyRequest.cancel:()V
         7: .line 329
            aconst_null
            putstatic sun.rmi.transport.ObjectTable.gcLatencyRequest:Lsun/misc/GC$LatencyRequest;
         8: .line 310
      StackMap locals:
      StackMap stack:
            aload 0
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 0
            monitorexit
        11: athrow
        12: .line 332
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           1     9      10  any
          10    11      10  any
}
SourceFile: "ObjectTable.java"
NestMembers:
  sun.rmi.transport.ObjectTable$1  sun.rmi.transport.ObjectTable$Reaper
InnerClasses:
  public LatencyRequest = sun.misc.GC$LatencyRequest of sun.misc.GC
  sun.rmi.transport.ObjectTable$1
  private Reaper = sun.rmi.transport.ObjectTable$Reaper of sun.rmi.transport.ObjectTable