public final class com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor extends com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor
super_class: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor
{
private static final int NUMBER_OF_PROPERTIES_PER_ENTRY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
boolean validateRegistration(javax.lang.model.element.Element, javax.lang.model.element.AnnotationMirror);
descriptor: (Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)Z
flags: (0x0000)
Code:
stack=3, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface javax.lang.model.element.Element.getModifiers:()Ljava/util/Set;
getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 3
1: aload 0
ldc "Registered instrument class must be public"
aload 1
invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.emitError:(Ljava/lang/String;Ljavax/lang/model/element/Element;)V
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.Element.getEnclosingElement:()Ljavax/lang/model/element/Element;
invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.PACKAGE:Ljavax/lang/model/element/ElementKind;
if_acmpeq 6
aload 1
invokeinterface javax.lang.model.element.Element.getModifiers:()Ljava/util/Set;
getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 6
4: aload 0
ldc "Registered instrument inner-class must be static"
aload 1
invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.emitError:(Ljava/lang/String;Ljavax/lang/model/element/Element;)V
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
astore 3
start local 3 7: aload 3
getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument:Ljavax/lang/model/type/DeclaredType;
astore 4
start local 4 8: aload 3
getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Provider:Ljavax/lang/model/type/DeclaredType;
astore 5
start local 5 9: aload 0
getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
aload 1
invokeinterface javax.lang.model.element.Element.asType:()Ljavax/lang/model/type/TypeMirror;
aload 4
invokeinterface javax.lang.model.util.Types.isAssignable:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 12
10: iconst_1
istore 6
start local 6 11: goto 17
end local 6 StackMap locals: com.oracle.truffle.dsl.processor.TruffleTypes javax.lang.model.type.TypeMirror javax.lang.model.type.TypeMirror
StackMap stack:
12: aload 0
getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
aload 1
invokeinterface javax.lang.model.element.Element.asType:()Ljavax/lang/model/type/TypeMirror;
aload 5
invokeinterface javax.lang.model.util.Types.isAssignable:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 15
13: iconst_0
istore 6
start local 6 14: goto 17
end local 6 15: StackMap locals:
StackMap stack:
aload 0
ldc "Registered instrument class must subclass TruffleInstrument"
aload 1
invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.emitError:(Ljava/lang/String;Ljavax/lang/model/element/Element;)V
16: iconst_0
ireturn
start local 6 17: StackMap locals: int
StackMap stack:
aload 0
aload 1
invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.assertNoErrorExpected:(Ljavax/lang/model/element/Element;)V
18: iload 6
ireturn
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 19 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
0 19 1 annotatedElement Ljavax/lang/model/element/Element;
0 19 2 registrationMirror Ljavax/lang/model/element/AnnotationMirror;
7 19 3 types Lcom/oracle/truffle/dsl/processor/TruffleTypes;
8 19 4 truffleInstrument Ljavax/lang/model/type/TypeMirror;
9 19 5 truffleInstrumentProvider Ljavax/lang/model/type/TypeMirror;
11 12 6 processingTruffleInstrument Z
14 15 6 processingTruffleInstrument Z
17 19 6 processingTruffleInstrument Z
MethodParameters:
Name Flags
annotatedElement
registrationMirror
javax.lang.model.type.DeclaredType getProviderClass();
descriptor: ()Ljavax/lang/model/type/DeclaredType;
flags: (0x0000)
Code:
stack=1, locals=2, args_size=1
start local 0 0: invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
astore 1
start local 1 1: aload 1
getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Provider:Ljavax/lang/model/type/DeclaredType;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
1 2 1 types Lcom/oracle/truffle/dsl/processor/TruffleTypes;
java.lang.Iterable<javax.lang.model.element.AnnotationMirror> getProviderAnnotations(javax.lang.model.element.TypeElement);
descriptor: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable;
flags: (0x0000)
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
astore 2
start local 2 1: aload 2
getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Registration:Ljavax/lang/model/type/DeclaredType;
astore 3
start local 3 2: aload 1
invokeinterface javax.lang.model.element.TypeElement.getAnnotationMirrors:()Ljava/util/List;
aload 3
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findAnnotationMirror:(Ljava/util/List;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/AnnotationMirror;
3: new com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1
dup
aload 0
invokespecial com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1.<init>:(Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;)V
4: invokestatic com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.copyAnnotations:(Ljavax/lang/model/element/AnnotationMirror;Ljava/util/function/Predicate;)Ljavax/lang/model/element/AnnotationMirror;
astore 4
start local 4 5: aload 4
invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
0 6 1 annotatedElement Ljavax/lang/model/element/TypeElement;
1 6 2 types Lcom/oracle/truffle/dsl/processor/TruffleTypes;
2 6 3 registrationType Ljavax/lang/model/type/DeclaredType;
5 6 4 registration Ljavax/lang/model/element/AnnotationMirror;
Signature: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable<Ljavax/lang/model/element/AnnotationMirror;>;
MethodParameters:
Name Flags
annotatedElement
void implementMethod(javax.lang.model.element.TypeElement, com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement);
descriptor: (Ljavax/lang/model/element/TypeElement;Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;)V
flags: (0x0000)
Code:
stack=5, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
astore 3
start local 3 1: aload 2
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
dup
astore 4
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 3
-1820186426: 2
-1352294148: 3
1124293028: 4
default: 29
}
StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.lang.String
StackMap stack:
2: aload 4
ldc "getInstrumentClassName"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 7
goto 29
StackMap locals:
StackMap stack:
3: aload 4
ldc "create"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 5
goto 29
StackMap locals:
StackMap stack:
4: aload 4
ldc "getServicesClassNames"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
goto 29
5: StackMap locals:
StackMap stack:
aload 3
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
aload 1
invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
6: goto 30
7: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
astore 5
start local 5 8: aload 5
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
astore 6
start local 6 9: aload 3
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
aload 6
aload 1
invokeinterface javax.lang.model.util.Elements.getBinaryName:(Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.doubleQuote:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
10: goto 30
end local 6 end local 5 11: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
astore 5
start local 5 12: aload 1
invokeinterface javax.lang.model.element.TypeElement.getAnnotationMirrors:()Ljava/util/List;
13: aload 5
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Registration:Ljavax/lang/model/type/DeclaredType;
14: invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findAnnotationMirror:(Ljava/util/List;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/AnnotationMirror;
astore 6
start local 6 15: ldc Ljavax/lang/model/type/TypeMirror;
aload 6
ldc "services"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValueList:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/util/List;
astore 7
start local 7 16: aload 7
invokeinterface java.util.List.isEmpty:()Z
ifeq 19
17: aload 3
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
aload 5
ldc Ljava/util/Collections;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
ldc "emptySet"
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
18: goto 30
19: StackMap locals: com.oracle.truffle.dsl.processor.ProcessorContext javax.lang.model.element.AnnotationMirror java.util.List
StackMap stack:
aload 3
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
20: aload 3
aload 5
ldc Ljava/util/Arrays;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
ldc "asList"
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
21: aload 7
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 26
StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor javax.lang.model.element.TypeElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.lang.String com.oracle.truffle.dsl.processor.ProcessorContext javax.lang.model.element.AnnotationMirror java.util.List top java.util.Iterator
StackMap stack:
22: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.type.TypeMirror
astore 8
start local 8 23: aload 5
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
astore 10
start local 10 24: aload 5
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
astore 11
start local 11 25: aload 3
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startGroup:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
aload 10
aload 11
aload 8
invokeinterface javax.lang.model.util.Types.erasure:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
checkcast javax.lang.model.type.DeclaredType
invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
checkcast javax.lang.model.element.TypeElement
invokeinterface javax.lang.model.util.Elements.getBinaryName:(Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.doubleQuote:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
end local 11 end local 10 end local 8 26: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
27: aload 3
iconst_2
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:(I)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
pop
28: goto 30
end local 7 end local 6 end local 5 29: StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor javax.lang.model.element.TypeElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.lang.String
StackMap stack:
new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported method: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
0 31 1 annotatedElement Ljavax/lang/model/element/TypeElement;
0 31 2 methodToImplement Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
1 31 3 builder Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
8 11 5 context Lcom/oracle/truffle/dsl/processor/ProcessorContext;
9 11 6 elements Ljavax/lang/model/util/Elements;
12 29 5 context Lcom/oracle/truffle/dsl/processor/ProcessorContext;
15 29 6 registration Ljavax/lang/model/element/AnnotationMirror;
16 29 7 services Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;
23 26 8 service Ljavax/lang/model/type/TypeMirror;
24 26 10 elements Ljavax/lang/model/util/Elements;
25 26 11 types Ljavax/lang/model/util/Types;
MethodParameters:
Name Flags
annotatedElement
methodToImplement
java.lang.String getRegistrationFileName();
descriptor: ()Ljava/lang/String;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "META-INF/truffle/instrument"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
void storeRegistrations(java.util.Properties, java.lang.Iterable<? extends javax.lang.model.element.TypeElement>);
descriptor: (Ljava/util/Properties;Ljava/lang/Iterable;)V
flags: (0x0000)
Code:
stack=5, locals=21, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
astore 3
start local 3 1: aload 0
aload 0
invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.getRegistrationFileName:()Ljava/lang/String;
aload 1
invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.loadIfFileAlreadyExists:(Ljava/lang/String;Ljava/util/Properties;)I
istore 4
start local 4 2: aload 2
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 6
goto 32
StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int top java.util.Iterator
StackMap stack:
3: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.TypeElement
astore 5
start local 5 4: aload 5
aload 3
getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Registration:Ljavax/lang/model/type/DeclaredType;
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findAnnotationMirror:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/AnnotationMirror;
astore 7
start local 7 5: aload 7
ifnonnull 7
6: goto 32
7: StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror
StackMap stack:
ldc Ljava/lang/String;
aload 7
ldc "id"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.String
astore 8
start local 8 8: aload 8
aload 1
invokestatic com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.findInstrument:(Ljava/lang/String;Ljava/util/Properties;)I
istore 9
start local 9 9: iload 9
ifne 12
10: iinc 4 1
11: iload 4
istore 9
12: StackMap locals: java.lang.String int
StackMap stack:
new java.lang.StringBuilder
dup
ldc "instrument"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 9
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 10
start local 10 13: aload 0
getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
aload 5
invokeinterface javax.lang.model.util.Elements.getBinaryName:(Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 11
start local 11 14: aload 1
new java.lang.StringBuilder
dup
aload 10
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "id"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 8
invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
pop
15: aload 1
new java.lang.StringBuilder
dup
aload 10
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "name"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Ljava/lang/String;
aload 7
ldc "name"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
pop
16: aload 1
new java.lang.StringBuilder
dup
aload 10
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "version"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Ljava/lang/String;
aload 7
ldc "version"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
pop
17: aload 1
new java.lang.StringBuilder
dup
aload 10
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "className"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 11
invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
pop
18: aload 1
new java.lang.StringBuilder
dup
aload 10
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "internal"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Ljava/lang/Boolean;
aload 7
ldc "internal"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
invokestatic java.lang.Boolean.toString:(Z)Ljava/lang/String;
invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
pop
19: iconst_0
istore 12
start local 12 20: aload 7
invokeinterface javax.lang.model.element.AnnotationMirror.getElementValues:()Ljava/util/Map;
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 14
goto 31
StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror java.lang.String int java.lang.String java.lang.String int top java.util.Iterator
StackMap stack:
21: aload 14
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 13
start local 13 22: aload 13
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast javax.lang.model.element.ExecutableElement
invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
astore 15
start local 15 23: aload 15
ldc "services"
invokeinterface javax.lang.model.element.Name.contentEquals:(Ljava/lang/CharSequence;)Z
ifeq 31
24: aload 13
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast javax.lang.model.element.AnnotationValue
astore 16
start local 16 25: aload 16
invokeinterface javax.lang.model.element.AnnotationValue.getValue:()Ljava/lang/Object;
checkcast java.util.List
astore 17
start local 17 26: aload 17
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 19
goto 30
StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror java.lang.String int java.lang.String java.lang.String int java.util.Map$Entry java.util.Iterator javax.lang.model.element.Name javax.lang.model.element.AnnotationValue java.util.List top java.util.Iterator
StackMap stack:
27: aload 19
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
astore 18
start local 18 28: aload 18
checkcast javax.lang.model.element.AnnotationValue
astore 20
start local 20 29: aload 1
new java.lang.StringBuilder
dup
aload 10
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "service"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 12
iinc 12 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 20
invokeinterface javax.lang.model.element.AnnotationValue.getValue:()Ljava/lang/Object;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
pop
end local 20 end local 18 30: StackMap locals:
StackMap stack:
aload 19
invokeinterface java.util.Iterator.hasNext:()Z
ifne 27
end local 17 end local 16 end local 15 end local 13 31: StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror java.lang.String int java.lang.String java.lang.String int top java.util.Iterator
StackMap stack:
aload 14
invokeinterface java.util.Iterator.hasNext:()Z
ifne 21
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 5 32: StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
33: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
0 34 1 into Ljava/util/Properties;
0 34 2 instruments Ljava/lang/Iterable<+Ljavax/lang/model/element/TypeElement;>;
1 34 3 types Lcom/oracle/truffle/dsl/processor/TruffleTypes;
2 34 4 numInstruments I
4 32 5 l Ljavax/lang/model/element/TypeElement;
5 32 7 annotation Ljavax/lang/model/element/AnnotationMirror;
8 32 8 id Ljava/lang/String;
9 32 9 instNum I
13 32 10 prefix Ljava/lang/String;
14 32 11 className Ljava/lang/String;
20 32 12 serviceCounter I
22 31 13 entry Ljava/util/Map$Entry<+Ljavax/lang/model/element/ExecutableElement;+Ljavax/lang/model/element/AnnotationValue;>;
23 31 15 attrName Ljavax/lang/model/element/Name;
25 31 16 attrValue Ljavax/lang/model/element/AnnotationValue;
26 31 17 classes Ljava/util/List<*>;
28 30 18 clazz Ljava/lang/Object;
29 30 20 clazzValue Ljavax/lang/model/element/AnnotationValue;
Signature: (Ljava/util/Properties;Ljava/lang/Iterable<+Ljavax/lang/model/element/TypeElement;>;)V
MethodParameters:
Name Flags
into
instruments
private static int findInstrument(java.lang.String, java.util.Properties);
descriptor: (Ljava/lang/String;Ljava/util/Properties;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: iconst_1
istore 2
start local 2 1: goto 5
start local 3 2: StackMap locals: int java.lang.String
StackMap stack:
aload 0
aload 3
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 4
3: iload 2
ireturn
4: StackMap locals:
StackMap stack:
iinc 2 1
end local 3 5: StackMap locals:
StackMap stack:
aload 1
new java.lang.StringBuilder
dup
ldc "instrument"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ".id"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
dup
astore 3
start local 3 6: ifnonnull 2
7: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 id Ljava/lang/String;
0 8 1 p Ljava/util/Properties;
1 8 2 cnt I
2 5 3 val Ljava/lang/String;
6 8 3 val Ljava/lang/String;
MethodParameters:
Name Flags
id
p
private int loadIfFileAlreadyExists(java.lang.String, java.util.Properties);
descriptor: (Ljava/lang/String;Ljava/util/Properties;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getFiler:()Ljavax/annotation/processing/Filer;
1: getstatic javax.tools.StandardLocation.CLASS_OUTPUT:Ljavax/tools/StandardLocation;
ldc ""
aload 1
2: invokeinterface javax.annotation.processing.Filer.getResource:(Ljavax/tools/JavaFileManager$Location;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljavax/tools/FileObject;
astore 3
start local 3 3: aload 2
aload 3
invokeinterface javax.tools.FileObject.openInputStream:()Ljava/io/InputStream;
invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
4: aload 2
invokevirtual java.util.Properties.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.size:()I
iconst_4
idiv
5: ireturn
end local 3 6: StackMap locals:
StackMap stack: java.io.IOException
pop
7: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
0 8 1 filename Ljava/lang/String;
0 8 2 p Ljava/util/Properties;
3 6 3 file Ljavax/tools/FileObject;
Exception table:
from to target type
0 5 6 Class java.io.IOException
MethodParameters:
Name Flags
filename
p
}
SourceFile: "InstrumentRegistrationProcessor.java"
NestMembers:
com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1
InnerClasses:
com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1
public abstract Entry = java.util.Map$Entry of java.util.Map
public abstract Location = javax.tools.JavaFileManager$Location of javax.tools.JavaFileManager
RuntimeVisibleAnnotations:
javax.annotation.processing.SupportedAnnotationTypes(value = {"com.oracle.truffle.api.instrumentation.TruffleInstrument.Registration"})