final class io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker extends io.reactivex.Scheduler$Worker implements io.reactivex.disposables.Disposable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker
super_class: io.reactivex.Scheduler$Worker
{
final java.util.concurrent.PriorityBlockingQueue<io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable> queue;
descriptor: Ljava/util/concurrent/PriorityBlockingQueue;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/PriorityBlockingQueue<Lio/reactivex/internal/schedulers/TrampolineScheduler$TimedRunnable;>;
private final java.util.concurrent.atomic.AtomicInteger wip;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final java.util.concurrent.atomic.AtomicInteger counter;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0010) ACC_FINAL
volatile boolean disposed;
descriptor: Z
flags: (0x0040) ACC_VOLATILE
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial io.reactivex.Scheduler$Worker.<init>:()V
1: aload 0
new java.util.concurrent.PriorityBlockingQueue
dup
invokespecial java.util.concurrent.PriorityBlockingQueue.<init>:()V
putfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.queue:Ljava/util/concurrent/PriorityBlockingQueue;
2: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
putfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
3: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
putfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.counter:Ljava/util/concurrent/atomic/AtomicInteger;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;
public io.reactivex.disposables.Disposable schedule(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)Lio/reactivex/disposables/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 0
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.now:(Ljava/util/concurrent/TimeUnit;)J
invokevirtual io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.enqueue:(Ljava/lang/Runnable;J)Lio/reactivex/disposables/Disposable;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;
0 1 1 action Ljava/lang/Runnable;
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
RuntimeInvisibleParameterAnnotations:
0:
io.reactivex.annotations.NonNull()
MethodParameters:
Name Flags
action
public io.reactivex.disposables.Disposable schedule(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.now:(Ljava/util/concurrent/TimeUnit;)J
aload 4
lload 2
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
ladd
lstore 5
start local 5 1: aload 0
new io.reactivex.internal.schedulers.TrampolineScheduler$SleepingRunnable
dup
aload 1
aload 0
lload 5
invokespecial io.reactivex.internal.schedulers.TrampolineScheduler$SleepingRunnable.<init>:(Ljava/lang/Runnable;Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;J)V
lload 5
invokevirtual io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.enqueue:(Ljava/lang/Runnable;J)Lio/reactivex/disposables/Disposable;
areturn
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;
0 2 1 action Ljava/lang/Runnable;
0 2 2 delayTime J
0 2 4 unit Ljava/util/concurrent/TimeUnit;
1 2 5 execTime J
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
RuntimeInvisibleParameterAnnotations:
0:
io.reactivex.annotations.NonNull()
1:
2:
io.reactivex.annotations.NonNull()
MethodParameters:
Name Flags
action
delayTime
unit
io.reactivex.disposables.Disposable enqueue(java.lang.Runnable, long);
descriptor: (Ljava/lang/Runnable;J)Lio/reactivex/disposables/Disposable;
flags: (0x0000)
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.disposed:Z
ifeq 2
1: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
2: StackMap locals:
StackMap stack:
new io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable
dup
aload 1
lload 2
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.counter:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
invokespecial io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable.<init>:(Ljava/lang/Runnable;Ljava/lang/Long;I)V
astore 4
start local 4 3: aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.queue:Ljava/util/concurrent/PriorityBlockingQueue;
aload 4
invokevirtual java.util.concurrent.PriorityBlockingQueue.add:(Ljava/lang/Object;)Z
pop
4: aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
ifne 18
5: iconst_1
istore 5
start local 5 6: StackMap locals: io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable int
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.disposed:Z
ifeq 9
7: aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.queue:Ljava/util/concurrent/PriorityBlockingQueue;
invokevirtual java.util.concurrent.PriorityBlockingQueue.clear:()V
8: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
9: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.queue:Ljava/util/concurrent/PriorityBlockingQueue;
invokevirtual java.util.concurrent.PriorityBlockingQueue.poll:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable
astore 6
start local 6 10: aload 6
ifnonnull 12
11: goto 15
12: StackMap locals: io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable
StackMap stack:
aload 6
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable.disposed:Z
ifne 6
13: aload 6
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable.run:Ljava/lang/Runnable;
invokeinterface java.lang.Runnable.run:()V
end local 6 14: goto 6
15: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
iload 5
ineg
invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
istore 5
16: iload 5
ifne 6
17: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
end local 5 18: StackMap locals:
StackMap stack:
new io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker$AppendToQueueTask
dup
aload 0
aload 4
invokespecial io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker$AppendToQueueTask.<init>:(Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;Lio/reactivex/internal/schedulers/TrampolineScheduler$TimedRunnable;)V
invokestatic io.reactivex.disposables.Disposables.fromRunnable:(Ljava/lang/Runnable;)Lio/reactivex/disposables/Disposable;
areturn
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;
0 19 1 action Ljava/lang/Runnable;
0 19 2 execTime J
3 19 4 timedRunnable Lio/reactivex/internal/schedulers/TrampolineScheduler$TimedRunnable;
6 18 5 missed I
10 14 6 polled Lio/reactivex/internal/schedulers/TrampolineScheduler$TimedRunnable;
MethodParameters:
Name Flags
action
execTime
public void dispose();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.disposed:Z
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;
public boolean isDisposed();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker.disposed:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/schedulers/TrampolineScheduler$TrampolineWorker;
}
SourceFile: "TrampolineScheduler.java"
NestHost: io.reactivex.internal.schedulers.TrampolineScheduler
InnerClasses:
public abstract Worker = io.reactivex.Scheduler$Worker of io.reactivex.Scheduler
final SleepingRunnable = io.reactivex.internal.schedulers.TrampolineScheduler$SleepingRunnable of io.reactivex.internal.schedulers.TrampolineScheduler
final TimedRunnable = io.reactivex.internal.schedulers.TrampolineScheduler$TimedRunnable of io.reactivex.internal.schedulers.TrampolineScheduler
final TrampolineWorker = io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker of io.reactivex.internal.schedulers.TrampolineScheduler
final AppendToQueueTask = io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker$AppendToQueueTask of io.reactivex.internal.schedulers.TrampolineScheduler$TrampolineWorker