class jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher
super_class: java.lang.Object
{
final jdk.internal.net.http.common.SubscriberWrapper this$0;
descriptor: Ljdk/internal/net/http/common/SubscriberWrapper;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$jdk$internal$net$http$common$SubscriberWrapper$SchedulingAction;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
void <init>(jdk.internal.net.http.common.SubscriberWrapper);
descriptor: (Ljdk/internal/net/http/common/SubscriberWrapper;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/internal/net/http/common/SubscriberWrapper$DownstreamPusher;
MethodParameters:
Name Flags
this$0 final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run1:()V
1: goto 6
StackMap locals:
StackMap stack: java.lang.Throwable
2: astore 1
start local 1 3: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
invokeinterface jdk.internal.net.http.common.Logger.on:()Z
ifeq 5
4: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
new java.lang.StringBuilder
dup
ldc "DownstreamPusher threw: "
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;
invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
5: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
aload 1
invokevirtual jdk.internal.net.http.common.SubscriberWrapper.errorCommon:(Ljava/lang/Throwable;)Z
pop
end local 1 6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/internal/net/http/common/SubscriberWrapper$DownstreamPusher;
3 6 1 t Ljava/lang/Throwable;
Exception table:
from to target type
0 1 2 Class java.lang.Throwable
private void run1();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=4, args_size=1
start local 0 0: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamCompleted:Z
ifeq 4
1: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
invokeinterface jdk.internal.net.http.common.Logger.on:()Z
ifeq 3
2: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
ldc "DownstreamPusher: downstream is already completed"
invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
return
4: StackMap locals:
StackMap stack:
invokestatic jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.$SWITCH_TABLE$jdk$internal$net$http$common$SubscriberWrapper$SchedulingAction:()[I
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper.enterScheduling:()Ljdk/internal/net/http/common/SubscriberWrapper$SchedulingAction;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.ordinal:()I
iaload
tableswitch { // 1 - 3
1: 5
2: 7
3: 6
default: 8
}
5: StackMap locals:
StackMap stack:
goto 11
6: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.pushScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
invokevirtual jdk.internal.net.http.common.SequentialScheduler.runOrSchedule:()V
return
7: StackMap locals:
StackMap stack:
return
8: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.errorRef:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
9: new java.lang.InternalError
dup
ldc "unknown scheduling command"
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
10: invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
11: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.errorRef:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.lang.Throwable
astore 1
start local 1 12: aload 1
ifnull 29
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.outputQ:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.isEmpty:()Z
ifeq 29
13: aload 0
dup
astore 2
monitorenter
14: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamCompleted:Z
ifeq 17
15: aload 2
monitorexit
16: return
17: StackMap locals: java.lang.Throwable jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
iconst_1
putfield jdk.internal.net.http.common.SubscriberWrapper.downstreamCompleted:Z
18: aload 2
monitorexit
19: goto 22
StackMap locals:
StackMap stack: java.lang.Throwable
20: aload 2
monitorexit
21: athrow
22: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
invokeinterface jdk.internal.net.http.common.Logger.on:()Z
ifeq 24
23: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
new java.lang.StringBuilder
dup
ldc "DownstreamPusher: forwarding error downstream: "
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;
invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;)V
24: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.pushScheduler:Ljdk/internal/net/http/common/SequentialScheduler;
invokevirtual jdk.internal.net.http.common.SequentialScheduler.stop:()V
25: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.outputQ:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.clear:()V
26: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamSubscriber:Ljava/util/concurrent/Flow$Subscriber;
aload 1
invokeinterface java.util.concurrent.Flow$Subscriber.onError:(Ljava/lang/Throwable;)V
27: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.cf:Ljava/util/concurrent/CompletableFuture;
aload 1
invokevirtual java.util.concurrent.CompletableFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
pop
28: return
29: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.outputQ:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.isEmpty:()Z
ifne 35
30: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
invokeinterface jdk.internal.net.http.common.Logger.on:()Z
ifeq 39
31: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
ldc "DownstreamPusher: queue not empty, downstreamSubscription: %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
32: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamSubscription:Ljdk/internal/net/http/common/SubscriptionBase;
aastore
33: invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
34: goto 39
35: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
invokeinterface jdk.internal.net.http.common.Logger.on:()Z
ifeq 39
36: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
ldc "DownstreamPusher: queue empty, downstreamSubscription: %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
37: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamSubscription:Ljdk/internal/net/http/common/SubscriptionBase;
aastore
38: invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
39: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 40: goto 48
41: StackMap locals: int
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.outputQ:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.poll:()Ljava/lang/Object;
checkcast java.util.List
astore 3
start local 3 42: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
invokeinterface jdk.internal.net.http.common.Logger.on:()Z
ifeq 46
43: aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.debug:Ljdk/internal/net/http/common/Logger;
ldc "DownstreamPusher: Pushing %d bytes downstream"
iconst_1
anewarray java.lang.Object
dup
iconst_0
44: aload 3
invokestatic jdk.internal.net.http.common.Utils.remaining:(Ljava/util/List;)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
45: invokeinterface jdk.internal.net.http.common.Logger.log:(Ljava/lang/String;[Ljava/lang/Object;)V
46: StackMap locals: java.util.List
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamSubscriber:Ljava/util/concurrent/Flow$Subscriber;
aload 3
invokeinterface java.util.concurrent.Flow$Subscriber.onNext:(Ljava/lang/Object;)V
47: iconst_1
istore 2
end local 3 48: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.outputQ:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.isEmpty:()Z
ifne 49
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
getfield jdk.internal.net.http.common.SubscriberWrapper.downstreamSubscription:Ljdk/internal/net/http/common/SubscriptionBase;
invokevirtual jdk.internal.net.http.common.SubscriptionBase.tryDecrement:()Z
ifne 41
49: StackMap locals:
StackMap stack:
iload 2
ifeq 50
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper.upstreamWindowUpdate:()V
50: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.this$0:Ljdk/internal/net/http/common/SubscriberWrapper;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper.checkCompletion:()V
51: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Ljdk/internal/net/http/common/SubscriberWrapper$DownstreamPusher;
12 52 1 error Ljava/lang/Throwable;
40 52 2 datasent Z
42 48 3 b Ljava/util/List<Ljava/nio/ByteBuffer;>;
Exception table:
from to target type
14 16 20 any
17 19 20 any
20 21 20 any
static int[] $SWITCH_TABLE$jdk$internal$net$http$common$SubscriberWrapper$SchedulingAction();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.$SWITCH_TABLE$jdk$internal$net$http$common$SubscriberWrapper$SchedulingAction:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.values:()[Ljdk/internal/net/http/common/SubscriberWrapper$SchedulingAction;
arraylength
newarray 10
astore 0
2: aload 0
getstatic jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.CONTINUE:Ljdk/internal/net/http/common/SubscriberWrapper$SchedulingAction;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.ordinal:()I
iconst_1
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.RESCHEDULE:Ljdk/internal/net/http/common/SubscriberWrapper$SchedulingAction;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.ordinal:()I
iconst_3
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.RETURN:Ljdk/internal/net/http/common/SubscriberWrapper$SchedulingAction;
invokevirtual jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction.ordinal:()I
iconst_2
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
dup
putstatic jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.$SWITCH_TABLE$jdk$internal$net$http$common$SubscriberWrapper$SchedulingAction:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
}
SourceFile: "SubscriberWrapper.java"
NestHost: jdk.internal.net.http.common.SubscriberWrapper
InnerClasses:
public abstract Subscriber = java.util.concurrent.Flow$Subscriber of java.util.concurrent.Flow
DownstreamPusher = jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher of jdk.internal.net.http.common.SubscriberWrapper
public final SchedulingAction = jdk.internal.net.http.common.SubscriberWrapper$SchedulingAction of jdk.internal.net.http.common.SubscriberWrapper