final class com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader extends com.oracle.truffle.polyglot.InstrumentCache$Loader
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader
super_class: com.oracle.truffle.polyglot.InstrumentCache$Loader
{
static final com.oracle.truffle.polyglot.InstrumentCache$Loader INSTANCE;
descriptor: Lcom/oracle/truffle/polyglot/InstrumentCache$Loader;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.String DEBUGGER_CLASS;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "com.oracle.truffle.api.debug.impl.DebuggerInstrument"
private static final java.lang.String DEBUGGER_PROVIDER;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "com.oracle.truffle.api.debug.impl.DebuggerInstrumentProvider"
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader
dup
invokespecial com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.<init>:()V
putstatic com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.INSTANCE:Lcom/oracle/truffle/polyglot/InstrumentCache$Loader;
1: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial com.oracle.truffle.polyglot.InstrumentCache$Loader.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/polyglot/InstrumentCache$ServicesLoader;
void loadImpl(java.lang.ClassLoader, java.util.List<? super com.oracle.truffle.polyglot.InstrumentCache>, java.util.Set<? super java.lang.String>);
descriptor: (Ljava/lang/ClassLoader;Ljava/util/List;Ljava/util/Set;)V
flags: (0x0000)
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.exportTruffle:(Ljava/lang/ClassLoader;)V
1: ldc Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;
aload 1
invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
astore 5
goto 4
StackMap locals: com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader java.lang.ClassLoader java.util.List java.util.Set top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider
astore 4
start local 4 3: aload 4
aload 2
aload 3
invokestatic com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.loadInstrumentImpl:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;Ljava/util/List;Ljava/util/Set;)V
end local 4 4: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 3
ldc "com.oracle.truffle.api.debug.impl.DebuggerInstrument"
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 12
6: aload 1
ldc "com.oracle.truffle.api.debug.impl.DebuggerInstrumentProvider"
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
iconst_0
anewarray java.lang.Class
invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider
aload 2
7: aload 3
8: invokestatic com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.loadInstrumentImpl:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;Ljava/util/List;Ljava/util/Set;)V
9: goto 12
StackMap locals: com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader java.lang.ClassLoader java.util.List java.util.Set
StackMap stack: java.lang.Exception
10: astore 4
start local 4 11: ldc "Failed to discover debugger instrument."
aload 4
invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/String;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 4 12: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/truffle/polyglot/InstrumentCache$ServicesLoader;
0 13 1 loader Ljava/lang/ClassLoader;
0 13 2 list Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;
0 13 3 classNamesUsed Ljava/util/Set<-Ljava/lang/String;>;
3 4 4 provider Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;
11 12 4 e Ljava/lang/Exception;
Exception table:
from to target type
6 9 10 Class java.lang.Exception
Signature: (Ljava/lang/ClassLoader;Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;Ljava/util/Set<-Ljava/lang/String;>;)V
MethodParameters:
Name Flags
loader
list
classNamesUsed
static void loadInstrumentImpl(com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider, java.util.List<? super com.oracle.truffle.polyglot.InstrumentCache>, java.util.Set<? super java.lang.String>);
descriptor: (Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;Ljava/util/List;Ljava/util/Set;)V
flags: (0x0008) ACC_STATIC
Code:
stack=10, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
ldc Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Registration;
invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration
astore 3
start local 3 1: aload 3
ifnonnull 5
2: getstatic java.lang.System.err:Ljava/io/PrintStream;
astore 4
start local 4 3: aload 4
new java.lang.StringBuilder
dup
ldc "Provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is missing @Registration annotation."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
4: return
end local 4 5: StackMap locals: com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration
StackMap stack:
aload 0
invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider.getInstrumentClassName:()Ljava/lang/String;
astore 4
start local 4 6: aload 3
invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration.name:()Ljava/lang/String;
astore 5
start local 5 7: aload 3
invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration.id:()Ljava/lang/String;
astore 6
start local 6 8: aload 6
ifnull 9
aload 6
invokevirtual java.lang.String.isEmpty:()Z
ifeq 10
9: StackMap locals: java.lang.String java.lang.String java.lang.String
StackMap stack:
aload 4
invokestatic com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.defaultId:(Ljava/lang/String;)Ljava/lang/String;
astore 6
10: StackMap locals:
StackMap stack:
aload 3
invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration.version:()Ljava/lang/String;
astore 7
start local 7 11: aload 3
invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration.internal:()Z
istore 8
start local 8 12: new java.util.TreeSet
dup
invokespecial java.util.TreeSet.<init>:()V
astore 9
start local 9 13: aload 0
invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider.getServicesClassNames:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 11
goto 16
StackMap locals: com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider java.util.List java.util.Set com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration java.lang.String java.lang.String java.lang.String java.lang.String int java.util.Set top java.util.Iterator
StackMap stack:
14: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 10
start local 10 15: aload 9
aload 10
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 10 16: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
17: aload 2
aload 4
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 21
18: aload 2
aload 4
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
19: new com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader$ServiceLoaderInstrumentReflection
dup
aload 0
invokespecial com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader$ServiceLoaderInstrumentReflection.<init>:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;)V
astore 10
start local 10 20: aload 1
new com.oracle.truffle.polyglot.InstrumentCache
dup
aload 6
aload 5
aload 7
aload 4
iload 8
aload 9
aload 10
invokespecial com.oracle.truffle.polyglot.InstrumentCache.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/util/Set;Lcom/oracle/truffle/polyglot/InstrumentCache$InstrumentReflection;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 10 21: StackMap locals: com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider java.util.List java.util.Set com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration java.lang.String java.lang.String java.lang.String java.lang.String int java.util.Set
StackMap stack:
return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 provider Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;
0 22 1 list Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;
0 22 2 classNamesUsed Ljava/util/Set<-Ljava/lang/String;>;
1 22 3 reg Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Registration;
3 5 4 out Ljava/io/PrintStream;
6 22 4 className Ljava/lang/String;
7 22 5 name Ljava/lang/String;
8 22 6 id Ljava/lang/String;
11 22 7 version Ljava/lang/String;
12 22 8 internal Z
13 22 9 servicesClassNames Ljava/util/Set<Ljava/lang/String;>;
15 16 10 service Ljava/lang/String;
20 21 10 reflection Lcom/oracle/truffle/polyglot/InstrumentCache$InstrumentReflection;
Signature: (Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Provider;Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;Ljava/util/Set<-Ljava/lang/String;>;)V
MethodParameters:
Name Flags
provider
list
classNamesUsed
}
SourceFile: "InstrumentCache.java"
NestHost: com.oracle.truffle.polyglot.InstrumentCache
InnerClasses:
public abstract Provider = com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider of com.oracle.truffle.api.instrumentation.TruffleInstrument
public abstract Registration = com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration of com.oracle.truffle.api.instrumentation.TruffleInstrument
private abstract InstrumentReflection = com.oracle.truffle.polyglot.InstrumentCache$InstrumentReflection of com.oracle.truffle.polyglot.InstrumentCache
private abstract Loader = com.oracle.truffle.polyglot.InstrumentCache$Loader of com.oracle.truffle.polyglot.InstrumentCache
private final ServicesLoader = com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader of com.oracle.truffle.polyglot.InstrumentCache
private final ServiceLoaderInstrumentReflection = com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader$ServiceLoaderInstrumentReflection of com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader