public class jdk.internal.net.http.common.SSLFlowDelegate$Monitor extends java.lang.Thread
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: jdk.internal.net.http.common.SSLFlowDelegate$Monitor
super_class: java.lang.Thread
{
final java.util.List<java.lang.ref.WeakReference<jdk.internal.net.http.common.SSLFlowDelegate$Monitorable>> list;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/ref/WeakReference<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;>;
final java.util.List<jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable> finalList;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/List<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor$FinalMonitorable;>;
final java.lang.ref.ReferenceQueue<jdk.internal.net.http.common.SSLFlowDelegate$Monitorable> queue;
descriptor: Ljava/lang/ref/ReferenceQueue;
flags: (0x0010) ACC_FINAL
Signature: Ljava/lang/ref/ReferenceQueue<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
static jdk.internal.net.http.common.SSLFlowDelegate$Monitor themon;
descriptor: Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
flags: (0x0008) ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new jdk.internal.net.http.common.SSLFlowDelegate$Monitor
dup
invokespecial jdk.internal.net.http.common.SSLFlowDelegate$Monitor.<init>:()V
putstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
1: getstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.start:()V
2: return
LocalVariableTable:
Start End Slot Name Signature
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
ldc "Monitor"
invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
1: aload 0
new java.lang.ref.ReferenceQueue
dup
invokespecial java.lang.ref.ReferenceQueue.<init>:()V
putfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.queue:Ljava/lang/ref/ReferenceQueue;
2: aload 0
iconst_1
invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.setDaemon:(Z)V
3: aload 0
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
invokestatic java.util.Collections.synchronizedList:(Ljava/util/List;)Ljava/util/List;
putfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
4: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.finalList:Ljava/util/List;
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
void addTarget(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
flags: (0x0000)
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
new java.lang.ref.WeakReference
dup
aload 1
aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.queue:Ljava/lang/ref/ReferenceQueue;
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
0 2 1 o Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
MethodParameters:
Name Flags
o
void removeTarget(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
flags: (0x0000)
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
dup
astore 2
monitorenter
1: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
start local 3 2: goto 8
3: StackMap locals: java.util.List java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.ref.WeakReference
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
checkcast jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
astore 4
start local 4 4: aload 4
ifnonnull 5
aload 3
invokeinterface java.util.Iterator.remove:()V
5: StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
StackMap stack:
aload 1
aload 4
if_acmpne 8
6: aload 3
invokeinterface java.util.Iterator.remove:()V
7: goto 9
end local 4 8: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
9: StackMap locals:
StackMap stack:
new jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable
dup
aload 0
aload 1
invokespecial jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable.<init>:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
astore 4
start local 4 10: aload 0
aload 4
invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.addTarget:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
11: aload 4
invokestatic java.lang.ref.Reference.reachabilityFence:(Ljava/lang/Object;)V
end local 4 end local 3 12: aload 2
monitorexit
13: goto 16
StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor jdk.internal.net.http.common.SSLFlowDelegate$Monitorable java.util.List
StackMap stack: java.lang.Throwable
14: aload 2
monitorexit
15: athrow
16: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
0 17 1 o Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
2 12 3 it Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;>;
4 8 4 m Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
10 12 4 m Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor$FinalMonitorable;
Exception table:
from to target type
1 13 14 any
14 15 14 any
MethodParameters:
Name Flags
o
public static void add(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
aload 0
invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.addTarget:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 o Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
MethodParameters:
Name Flags
o
public static void remove(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
aload 0
invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.removeTarget:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 o Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
MethodParameters:
Name Flags
o
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Monitor starting"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
1: StackMap locals:
StackMap stack:
ldc 20000
invokestatic java.lang.Thread.sleep:(J)V
2: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
dup
astore 1
monitorenter
3: goto 5
start local 2 StackMap locals: java.util.List java.lang.ref.Reference
StackMap stack:
4: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
aload 2
invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
pop
end local 2 StackMap locals:
StackMap stack:
5: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.queue:Ljava/lang/ref/ReferenceQueue;
invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
dup
astore 2
start local 2 6: ifnonnull 4
7: aload 0
getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 15
StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List java.lang.ref.Reference top java.util.Iterator
StackMap stack:
8: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.ref.WeakReference
astore 3
start local 3 9: aload 3
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
checkcast jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
astore 5
start local 5 10: aload 5
ifnonnull 11
goto 15
11: StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List java.lang.ref.Reference java.lang.ref.WeakReference java.util.Iterator jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
StackMap stack:
aload 5
instanceof jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable
ifeq 13
12: aload 3
invokevirtual java.lang.ref.WeakReference.enqueue:()Z
pop
13: StackMap locals:
StackMap stack:
getstatic java.lang.System.out:Ljava/io/PrintStream;
aload 5
invokeinterface jdk.internal.net.http.common.SSLFlowDelegate$Monitorable.getInfo:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
14: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "-------------------------"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 5 end local 3 15: StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List java.lang.ref.Reference top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
end local 2 16: aload 1
monitorexit
17: goto 20
StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List
StackMap stack: java.lang.Throwable
18: aload 1
monitorexit
19: athrow
20: StackMap locals:
StackMap stack:
getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "--o-o-o-o-o-o-o-o-o-o-o-o-o-o-"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: goto 1
22: StackMap locals:
StackMap stack: java.lang.InterruptedException
astore 1
start local 1 23: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Monitor exiting with "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 1 24: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
4 5 2 expired Ljava/lang/ref/Reference<+Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
6 16 2 expired Ljava/lang/ref/Reference<+Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
9 15 3 ref Ljava/lang/ref/WeakReference<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
10 15 5 o Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
23 24 1 e Ljava/lang/InterruptedException;
Exception table:
from to target type
3 17 18 any
18 19 18 any
1 22 22 Class java.lang.InterruptedException
}
SourceFile: "SSLFlowDelegate.java"
NestHost: jdk.internal.net.http.common.SSLFlowDelegate
InnerClasses:
public Monitor = jdk.internal.net.http.common.SSLFlowDelegate$Monitor of jdk.internal.net.http.common.SSLFlowDelegate
final FinalMonitorable = jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable of jdk.internal.net.http.common.SSLFlowDelegate$Monitor
public abstract Monitorable = jdk.internal.net.http.common.SSLFlowDelegate$Monitorable of jdk.internal.net.http.common.SSLFlowDelegate