final class com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
super_class: java.lang.Object
{
private final com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList<com.oracle.truffle.api.instrumentation.EventBinding$Source<?>> bindings;
descriptor: Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList<Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;>;
private final java.util.WeakHashMap<com.oracle.truffle.api.source.Source, java.lang.Void> sources;
descriptor: Ljava/util/WeakHashMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/WeakHashMap<Lcom/oracle/truffle/api/source/Source;Ljava/lang/Void;>;
private final com.oracle.truffle.api.instrumentation.InstrumentationHandler$WeakAsyncList<com.oracle.truffle.api.source.Source> sourcesList;
descriptor: Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$WeakAsyncList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$WeakAsyncList<Lcom/oracle/truffle/api/source/Source;>;
private final java.util.concurrent.atomic.AtomicBoolean sourcesInitialized;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.locks.ReentrantReadWriteLock bindingsLock;
descriptor: Ljava/util/concurrent/locks/ReentrantReadWriteLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.function.BiConsumer<com.oracle.truffle.api.instrumentation.EventBinding$Source<?>[], com.oracle.truffle.api.source.Source> notificationConsumer;
descriptor: Ljava/util/function/BiConsumer;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/function/BiConsumer<[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/source/Source;>;
private com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue notifications;
descriptor: Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.util.function.BiConsumer<com.oracle.truffle.api.instrumentation.EventBinding$Source<?>[], com.oracle.truffle.api.source.Source>);
descriptor: (Ljava/util/function/BiConsumer;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList
dup
iconst_0
anewarray com.oracle.truffle.api.instrumentation.EventBinding$Source
invokespecial com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.<init>:([Ljava/lang/Object;)V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
2: aload 0
new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sources:Ljava/util/WeakHashMap;
3: aload 0
new com.oracle.truffle.api.instrumentation.InstrumentationHandler$WeakAsyncList
dup
bipush 16
invokespecial com.oracle.truffle.api.instrumentation.InstrumentationHandler$WeakAsyncList.<init>:(I)V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sourcesList:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$WeakAsyncList;
4: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sourcesInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;
5: aload 0
new java.util.concurrent.locks.ReentrantReadWriteLock
dup
invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:()V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
6: aload 0
new com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue
dup
aload 0
invokespecial com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.<init>:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;)V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
7: aload 0
aload 1
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notificationConsumer:Ljava/util/function/BiConsumer;
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 9 1 notificationConsumer Ljava/util/function/BiConsumer<[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/source/Source;>;
Signature: (Ljava/util/function/BiConsumer<[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/source/Source;>;)V
MethodParameters:
Name Flags
notificationConsumer
private com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue addInitializeSourcesNotification();
descriptor: ()Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.getWriteHoldCount:()I
ifgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 2
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.size:()I
iconst_1
if_icmpeq 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
new com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$InitializeSourcesNotification
dup
aload 0
invokespecial com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$InitializeSourcesNotification.<init>:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;)V
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.enqueue:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotification;)V
3: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 4
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.shouldProcess:()Z
ifne 4
new java.lang.AssertionError
dup
ldc "Thread that added InitializeSourcesNotification is not the one to process the notification queue."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 5
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.isSourcesInitializationRequired:()Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
private com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue addAllSourcesNotification(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>);
descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=2, args_size=2
start local 0 start local 1 0: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.getWriteHoldCount:()I
ifgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
new com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$AllSourcesNotification
dup
aload 0
iconst_1
anewarray com.oracle.truffle.api.instrumentation.EventBinding$Source
dup
iconst_0
aload 1
aastore
invokespecial com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$AllSourcesNotification.<init>:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)V
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.enqueue:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotification;)V
2: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.shouldProcess:()Z
ifeq 7
3: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 6
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.isSourcesInitializationRequired:()Z
ifne 4
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.size:()I
iconst_1
if_icmpgt 6
StackMap locals:
StackMap stack:
4: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.isSourcesInitializationRequired:()Z
ifeq 5
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.size:()I
iconst_1
if_icmpeq 6
StackMap locals:
StackMap stack:
5: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
areturn
7: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 8 1 binding Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
MethodParameters:
Name Flags
binding
private com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue addNotification(java.util.Map<com.oracle.truffle.api.source.Source, java.lang.Void>, com.oracle.truffle.api.instrumentation.EventBinding$Source<?>[]);
descriptor: (Ljava/util/Map;[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.getReadHoldCount:()I
ifgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 2
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sources:Ljava/util/WeakHashMap;
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 3
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.isEmpty:()Z
ifeq 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
new com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$NewSourcesNotification
dup
aload 0
aload 2
aload 1
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokespecial com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$NewSourcesNotification.<init>:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/util/Collection;)V
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.enqueue:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotification;)V
4: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.shouldProcess:()Z
ifeq 7
5: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 6
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.isSourcesInitializationRequired:()Z
ifeq 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
areturn
7: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 8 1 collectedSources Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/lang/Void;>;
0 8 2 bindingsToNotify [Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/lang/Void;>;[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
MethodParameters:
Name Flags
collectedSources
bindingsToNotify
void setInitialized();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sourcesInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
boolean hasBindings();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.isEmpty:()Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
com.oracle.truffle.api.instrumentation.EventBinding$Source<?>[] getBindingsArray();
descriptor: ()[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.getArray:()[Ljava/lang/Object;
checkcast com.oracle.truffle.api.instrumentation.EventBinding$Source[]
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
Signature: ()[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
void clearForDisposedBinding(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>);
descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
astore 2
start local 2 1: aload 2
invokeinterface java.util.concurrent.locks.Lock.lock:()V
2: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.remove:(Ljava/lang/Object;)Z
pop
3: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.isEmpty:()Z
ifeq 9
4: aload 0
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.clearAllInternal:()V
5: goto 9
StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler com.oracle.truffle.api.instrumentation.EventBinding$Source java.util.concurrent.locks.Lock
StackMap stack: java.lang.Throwable
6: astore 3
7: aload 2
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
8: aload 3
athrow
9: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 11 1 disposedBinding Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
1 11 2 lock Ljava/util/concurrent/locks/Lock;
Exception table:
from to target type
2 6 6 any
Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;)V
MethodParameters:
Name Flags
disposedBinding
void clearForDisposedInstrumenter(com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter);
descriptor: (Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;)V
flags: (0x0000)
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
astore 2
start local 2 1: aload 2
invokeinterface java.util.concurrent.locks.Lock.lock:()V
2: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
aload 1
invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.filterBindingsForInstrumenter:(Ljava/util/Collection;Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;)Ljava/util/Collection;
astore 3
start local 3 3: aload 3
invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.disposeBindingsBulk:(Ljava/util/Collection;)V
4: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
aload 3
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.removeAll:(Ljava/util/Collection;)Z
pop
5: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.isEmpty:()Z
ifeq 11
6: aload 0
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.clearAllInternal:()V
end local 3 7: goto 11
StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter java.util.concurrent.locks.Lock
StackMap stack: java.lang.Throwable
8: astore 4
9: aload 2
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
10: aload 4
athrow
11: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 13 1 disposedInstrumenter Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;
1 13 2 lock Ljava/util/concurrent/locks/Lock;
3 7 3 disposedSourceLoadedBindings Ljava/util/Collection<Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;>;
Exception table:
from to target type
2 8 8 any
MethodParameters:
Name Flags
disposedInstrumenter
void clearAll();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
astore 1
start local 1 1: aload 1
invokeinterface java.util.concurrent.locks.Lock.lock:()V
2: aload 0
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.clearAllInternal:()V
3: goto 7
StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler java.util.concurrent.locks.Lock
StackMap stack: java.lang.Throwable
4: astore 2
5: aload 1
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
6: aload 2
athrow
7: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
1 9 1 lock Ljava/util/concurrent/locks/Lock;
Exception table:
from to target type
2 4 4 any
private void clearAllInternal();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.getWriteHoldCount:()I
ifgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.clear:()V
2: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sources:Ljava/util/WeakHashMap;
invokevirtual java.util.WeakHashMap.clear:()V
3: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sourcesList:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$WeakAsyncList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$WeakAsyncList.clear:()V
4: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sourcesInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
5: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.clear:()V
6: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.invalidate:()V
7: aload 0
new com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue
dup
aload 0
invokespecial com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue.<init>:(Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;)V
putfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.notifications:Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
8: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue addBinding(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, boolean);
descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Z)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
flags: (0x0000)
Code:
stack=2, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
astore 4
start local 4 2: aload 4
invokeinterface java.util.concurrent.locks.Lock.lock:()V
3: iconst_0
istore 5
start local 5 4: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.isEmpty:()Z
ifeq 6
5: iconst_1
istore 5
6: StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue java.util.concurrent.locks.Lock int
StackMap stack:
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.add:(Ljava/lang/Object;)Z
pop
7: iload 2
ifeq 10
8: aload 0
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.addAllSourcesNotification:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
astore 3
9: goto 16
StackMap locals:
StackMap stack:
10: iload 5
ifeq 16
11: aload 0
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.addInitializeSourcesNotification:()Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
astore 3
end local 5 12: goto 16
StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler com.oracle.truffle.api.instrumentation.EventBinding$Source int com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue java.util.concurrent.locks.Lock
StackMap stack: java.lang.Throwable
13: astore 6
14: aload 4
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
15: aload 6
athrow
16: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
17: aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 18 1 binding Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
0 18 2 notify Z
1 18 3 notificationsToProcess Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
2 18 4 lock Ljava/util/concurrent/locks/Lock;
4 12 5 initializeSources Z
Exception table:
from to target type
3 13 13 any
Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Z)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
MethodParameters:
Name Flags
binding
notify
com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue addNewSources(java.util.Map<com.oracle.truffle.api.source.Source, java.lang.Void>, boolean);
descriptor: (Ljava/util/Map;Z)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
flags: (0x0000)
Code:
stack=3, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindingsLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
astore 4
start local 4 2: aload 4
invokeinterface java.util.concurrent.locks.Lock.lock:()V
3: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.isEmpty:()Z
ifne 21
4: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sources:Ljava/util/WeakHashMap;
dup
astore 5
monitorenter
5: iload 2
ifeq 8
6: aload 0
aload 1
aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.bindings:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$CopyOnWriteList;
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList.getArray:()[Ljava/lang/Object;
checkcast com.oracle.truffle.api.instrumentation.EventBinding$Source[]
invokevirtual com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.addNotification:(Ljava/util/Map;[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
astore 3
7: goto 14
8: StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue java.util.concurrent.locks.Lock java.util.WeakHashMap
StackMap stack:
aload 1
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 7
goto 13
StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler java.util.Map int com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue java.util.concurrent.locks.Lock java.util.WeakHashMap top java.util.Iterator
StackMap stack:
9: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.api.source.Source
astore 6
start local 6 10: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sources:Ljava/util/WeakHashMap;
aload 6
invokevirtual java.util.WeakHashMap.containsKey:(Ljava/lang/Object;)Z
ifne 13
11: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sources:Ljava/util/WeakHashMap;
aload 6
aconst_null
invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
12: aload 0
getfield com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler.sourcesList:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$WeakAsyncList;
aload 6
invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$WeakAsyncList.add:(Ljava/lang/Object;)Z
pop
end local 6 13: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
14: StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler java.util.Map int com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue java.util.concurrent.locks.Lock java.util.WeakHashMap
StackMap stack:
aload 5
monitorexit
15: goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
16: aload 5
monitorexit
17: athrow
18: StackMap locals: com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler java.util.Map int com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue java.util.concurrent.locks.Lock
StackMap stack: java.lang.Throwable
astore 8
19: aload 4
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
20: aload 8
athrow
21: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
22: aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler;
0 23 1 newSources Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/lang/Void;>;
0 23 2 notify Z
1 23 3 notificationsToProcess Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
2 23 4 lock Ljava/util/concurrent/locks/Lock;
10 13 6 src Lcom/oracle/truffle/api/source/Source;
Exception table:
from to target type
5 15 16 any
16 17 16 any
3 18 18 any
Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/lang/Void;>;Z)Lcom/oracle/truffle/api/instrumentation/SourceInstrumentationHandler$SourcesNotificationQueue;
MethodParameters:
Name Flags
newSources
notify
}
SourceFile: "SourceInstrumentationHandler.java"
NestMembers:
com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$AllSourcesNotification com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$InitializeSourcesNotification com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$NewSourcesNotification com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotification com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue
InnerClasses:
final Source = com.oracle.truffle.api.instrumentation.EventBinding$Source of com.oracle.truffle.api.instrumentation.EventBinding
abstract AbstractInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
CopyOnWriteList = com.oracle.truffle.api.instrumentation.InstrumentationHandler$CopyOnWriteList of com.oracle.truffle.api.instrumentation.InstrumentationHandler
final WeakAsyncList = com.oracle.truffle.api.instrumentation.InstrumentationHandler$WeakAsyncList of com.oracle.truffle.api.instrumentation.InstrumentationHandler
private AllSourcesNotification = com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$AllSourcesNotification of com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
private InitializeSourcesNotification = com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$InitializeSourcesNotification of com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
private NewSourcesNotification = com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$NewSourcesNotification of com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
private abstract SourcesNotification = com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotification of com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
final SourcesNotificationQueue = com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler$SourcesNotificationQueue of com.oracle.truffle.api.instrumentation.SourceInstrumentationHandler
public ReadLock = java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock of java.util.concurrent.locks.ReentrantReadWriteLock
public WriteLock = java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock of java.util.concurrent.locks.ReentrantReadWriteLock