final class com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher extends com.google.common.eventbus.Dispatcher
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher
super_class: com.google.common.eventbus.Dispatcher
{
private final java.lang.ThreadLocal<java.util.Queue<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event>> queue;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Ljava/util/Queue<Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher$Event;>;>;
private final java.lang.ThreadLocal<java.lang.Boolean> dispatching;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Ljava/lang/Boolean;>;
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher this
0: .line 73
aload 0 /* this */
invokespecial com.google.common.eventbus.Dispatcher.<init>:()V
1: .line 78
aload 0 /* this */
2: .line 79
new com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$1
dup
aload 0 /* this */
invokespecial com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$1.<init>:(Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher;)V
putfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.queue:Ljava/lang/ThreadLocal;
3: .line 87
aload 0 /* this */
4: .line 88
new com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$2
dup
aload 0 /* this */
invokespecial com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$2.<init>:(Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher;)V
putfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatching:Ljava/lang/ThreadLocal;
5: .line 73
return
end local 0 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher;
void dispatch(, java.util.Iterator<com.google.common.eventbus.Subscriber>);
descriptor: (Ljava/lang/Object;Ljava/util/Iterator;)V
flags: (0x0000)
Code:
stack=5, locals=6, args_size=3
start local 0 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher this
start local 1 // java.lang.Object event
start local 2 // java.util.Iterator subscribers
0: .line 97
aload 1 /* event */
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: .line 98
aload 2 /* subscribers */
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: .line 99
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.queue:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.util.Queue
astore 3 /* queueForThread */
start local 3 // java.util.Queue queueForThread
3: .line 100
aload 3 /* queueForThread */
new com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event
dup
aload 1 /* event */
aload 2 /* subscribers */
invokespecial com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event.<init>:(Ljava/lang/Object;Ljava/util/Iterator;)V
invokeinterface java.util.Queue.offer:(Ljava/lang/Object;)Z
pop
4: .line 102
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatching:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifne 18
5: .line 103
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatching:Ljava/lang/ThreadLocal;
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
6: .line 106
goto 9
start local 4 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event nextEvent
7: .line 108
StackMap locals: java.util.Queue com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event
StackMap stack:
aload 4 /* nextEvent */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event.subscribers:Ljava/util/Iterator;
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.google.common.eventbus.Subscriber
aload 4 /* nextEvent */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event.event:Ljava/lang/Object;
invokevirtual com.google.common.eventbus.Subscriber.dispatchEvent:(Ljava/lang/Object;)V
8: .line 107
StackMap locals:
StackMap stack:
aload 4 /* nextEvent */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event.subscribers:Ljava/util/Iterator;
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 4 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event nextEvent
9: .line 106
StackMap locals:
StackMap stack:
aload 3 /* queueForThread */
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event
dup
astore 4 /* nextEvent */
start local 4 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event nextEvent
10: ifnonnull 8
end local 4 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event nextEvent
11: .line 111
goto 16
StackMap locals:
StackMap stack: java.lang.Throwable
12: astore 5
13: .line 112
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatching:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.remove:()V
14: .line 113
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.queue:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.remove:()V
15: .line 114
aload 5
athrow
16: .line 112
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatching:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.remove:()V
17: .line 113
aload 0 /* this */
getfield com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.queue:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.remove:()V
18: .line 116
StackMap locals:
StackMap stack:
return
end local 3 // java.util.Queue queueForThread
end local 2 // java.util.Iterator subscribers
end local 1 // java.lang.Object event
end local 0 // com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher;
0 19 1 event Ljava/lang/Object;
0 19 2 subscribers Ljava/util/Iterator<Lcom/google/common/eventbus/Subscriber;>;
3 19 3 queueForThread Ljava/util/Queue<Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher$Event;>;
7 9 4 nextEvent Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher$Event;
10 11 4 nextEvent Lcom/google/common/eventbus/Dispatcher$PerThreadQueuedDispatcher$Event;
Exception table:
from to target type
6 12 12 any
Signature: (Ljava/lang/Object;Ljava/util/Iterator<Lcom/google/common/eventbus/Subscriber;>;)V
MethodParameters:
Name Flags
event
subscribers
}
SourceFile: "Dispatcher.java"
NestHost: com.google.common.eventbus.Dispatcher
InnerClasses:
private final PerThreadQueuedDispatcher = com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher of com.google.common.eventbus.Dispatcher
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$1
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$2
private final Event = com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event of com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher