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