public class com.oracle.truffle.object.dsl.processor.LayoutParser
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.object.dsl.processor.LayoutParser
super_class: java.lang.Object
{
private final com.oracle.truffle.object.dsl.processor.LayoutProcessor processor;
descriptor: Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private javax.lang.model.type.TypeMirror objectTypeSuperclass;
descriptor: Ljavax/lang/model/type/TypeMirror;
flags: (0x0002) ACC_PRIVATE
private com.oracle.truffle.object.dsl.processor.model.LayoutModel superLayout;
descriptor: Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
flags: (0x0002) ACC_PRIVATE
private java.lang.String name;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private java.lang.String packageName;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private java.lang.String interfaceFullName;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private boolean hasObjectTypeGuard;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean hasObjectGuard;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean hasDynamicObjectGuard;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean hasShapeProperties;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean hasCreate;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean hasBuilder;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final java.util.List<java.lang.String> constructorProperties;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/String;>;
private final java.util.Map<java.lang.String, com.oracle.truffle.object.dsl.processor.model.PropertyBuilder> properties;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;>;
private java.util.List<javax.lang.model.element.VariableElement> implicitCasts;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Ljavax/lang/model/element/VariableElement;>;
private final com.oracle.truffle.dsl.processor.TruffleTypes types;
descriptor: Lcom/oracle/truffle/dsl/processor/TruffleTypes;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private javax.lang.model.type.TypeMirror dispatch;
descriptor: Ljavax/lang/model/type/TypeMirror;
flags: (0x0002) ACC_PRIVATE
public void <init>(com.oracle.truffle.object.dsl.processor.LayoutProcessor);
descriptor: (Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.constructorProperties:Ljava/util/List;
2: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.properties:Ljava/util/Map;
3: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.implicitCasts:Ljava/util/List;
4: aload 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;
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
5: aload 0
aload 1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 7 1 processor Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
MethodParameters:
Name Flags
processor
public void parse(javax.lang.model.element.TypeElement);
descriptor: (Ljavax/lang/model/element/TypeElement;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.TypeElement.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.INTERFACE:Ljavax/lang/model/element/ElementKind;
if_acmpeq 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout should only be applied to interfaces"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseName:(Ljavax/lang/model/element/TypeElement;)V
3: aload 1
invokeinterface javax.lang.model.element.TypeElement.getInterfaces:()Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifne 8
4: aload 1
invokeinterface javax.lang.model.element.TypeElement.getInterfaces:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmple 6
5: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout interfaces can have at most one super-interface"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
6: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.TypeElement.getInterfaces:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.type.DeclaredType
astore 2
start local 2 7: aload 0
aload 2
invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
checkcast javax.lang.model.element.TypeElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseSuperLayout:(Ljavax/lang/model/element/TypeElement;)V
end local 2 8: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.TypeElement.getAnnotationMirrors:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 19
StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement top java.util.Iterator
StackMap stack:
9: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.AnnotationMirror
astore 2
start local 2 10: aload 0
aload 2
invokeinterface javax.lang.model.element.AnnotationMirror.getAnnotationType:()Ljavax/lang/model/type/DeclaredType;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.Layout:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 19
11: aload 0
ldc Ljavax/lang/model/type/TypeMirror;
aload 2
ldc "objectTypeSuperclass"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
checkcast javax.lang.model.type.TypeMirror
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.objectTypeSuperclass:Ljavax/lang/model/type/TypeMirror;
12: ldc Ljava/lang/Boolean;
aload 2
ldc "implicitCastIntToLong"
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
ifeq 15
13: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.Layout_ImplicitCast:Ljavax/lang/model/type/DeclaredType;
ldc "IntToLong"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findVariableElement:(Ljavax/lang/model/type/DeclaredType;Ljava/lang/String;)Ljavax/lang/model/element/VariableElement;
astore 4
start local 4 14: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.implicitCasts:Ljava/util/List;
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 4 15: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement javax.lang.model.element.AnnotationMirror java.util.Iterator
StackMap stack:
ldc Ljava/lang/Boolean;
aload 2
ldc "implicitCastIntToDouble"
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
ifeq 18
16: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.Layout_ImplicitCast:Ljavax/lang/model/type/DeclaredType;
ldc "IntToDouble"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findVariableElement:(Ljavax/lang/model/type/DeclaredType;Ljava/lang/String;)Ljavax/lang/model/element/VariableElement;
astore 4
start local 4 17: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.implicitCasts:Ljava/util/List;
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 4 18: StackMap locals:
StackMap stack:
aload 0
ldc Ljavax/lang/model/type/TypeMirror;
aload 2
ldc "dispatch"
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
checkcast javax.lang.model.type.TypeMirror
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.dispatch:Ljavax/lang/model/type/TypeMirror;
end local 2 19: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
20: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
ifnull 22
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.implicitCasts:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifne 22
21: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout implicit casts need to be specified in the base layout"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
22: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.TypeElement.getEnclosedElements:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 30
StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement top java.util.Iterator
StackMap stack:
23: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.Element
astore 2
start local 2 24: aload 2
invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.FIELD:Ljavax/lang/model/element/ElementKind;
if_acmpne 30
25: aload 2
invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 26: aload 4
ldc "_IDENTIFIER"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 29
27: aload 0
aload 2
checkcast javax.lang.model.element.VariableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseIdentifier:(Ljavax/lang/model/element/VariableElement;)V
28: goto 30
29: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement javax.lang.model.element.Element java.util.Iterator java.lang.String
StackMap stack:
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 2
ldc "@Layout interface fields should only be identifier fields, ending with _IDENTIFIER"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
end local 4 end local 2 30: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
31: aload 1
invokeinterface javax.lang.model.element.TypeElement.getEnclosedElements:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 37
StackMap locals:
StackMap stack:
32: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.Element
astore 2
start local 2 33: aload 2
invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.METHOD:Ljavax/lang/model/element/ElementKind;
if_acmpne 37
34: aload 2
invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 35: aload 4
new java.lang.StringBuilder
dup
ldc "create"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "Shape"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 37
36: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseShapeConstructor:(Ljavax/lang/model/element/ExecutableElement;)V
end local 4 end local 2 37: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 32
38: aload 1
invokeinterface javax.lang.model.element.TypeElement.getEnclosedElements:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 65
StackMap locals:
StackMap stack:
39: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.Element
astore 2
start local 2 40: aload 2
invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.METHOD:Ljavax/lang/model/element/ElementKind;
if_acmpne 65
41: aload 2
invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 42: aload 4
new java.lang.StringBuilder
dup
ldc "create"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "Shape"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 65
43: aload 4
new java.lang.StringBuilder
dup
ldc "create"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 46
44: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseConstructor:(Ljavax/lang/model/element/ExecutableElement;)V
45: goto 65
StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement javax.lang.model.element.Element java.util.Iterator java.lang.String
StackMap stack:
46: aload 4
ldc "build"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 49
47: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseBuilder:(Ljavax/lang/model/element/ExecutableElement;)V
48: goto 65
StackMap locals:
StackMap stack:
49: aload 4
new java.lang.StringBuilder
dup
ldc "is"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 52
50: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseGuard:(Ljavax/lang/model/element/ExecutableElement;)V
51: goto 65
StackMap locals:
StackMap stack:
52: aload 4
ldc "getAndSet"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 55
53: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseGetAndSet:(Ljavax/lang/model/element/ExecutableElement;)V
54: goto 65
StackMap locals:
StackMap stack:
55: aload 4
ldc "compareAndSet"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 58
56: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseCompareAndSet:(Ljavax/lang/model/element/ExecutableElement;)V
57: goto 65
StackMap locals:
StackMap stack:
58: aload 4
ldc "get"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 61
59: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseGetter:(Ljavax/lang/model/element/ExecutableElement;)V
60: goto 65
StackMap locals:
StackMap stack:
61: aload 4
ldc "set"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 64
62: aload 0
aload 2
checkcast javax.lang.model.element.ExecutableElement
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseSetter:(Ljavax/lang/model/element/ExecutableElement;)V
63: goto 65
64: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 2
ldc "Unknown method prefix in @Layout interface - wouldn't know how to implement this method"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
end local 4 end local 2 65: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.TypeElement top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 39
66: aload 1
invokeinterface javax.lang.model.element.TypeElement.getEnclosedElements:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 70
StackMap locals:
StackMap stack:
67: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.Element
astore 2
start local 2 68: aload 2
invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.FIELD:Ljavax/lang/model/element/ElementKind;
if_acmpeq 70
aload 2
invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
getstatic javax.lang.model.element.ElementKind.METHOD:Ljavax/lang/model/element/ElementKind;
if_acmpeq 70
69: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 2
ldc "@Layout interfaces can only contain fields and methods"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
end local 2 70: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 67
71: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 72 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 72 1 layoutElement Ljavax/lang/model/element/TypeElement;
7 8 2 superInterface Ljavax/lang/model/type/DeclaredType;
10 19 2 annotationMirror Ljavax/lang/model/element/AnnotationMirror;
14 15 4 var Ljavax/lang/model/element/VariableElement;
17 18 4 var Ljavax/lang/model/element/VariableElement;
24 30 2 element Ljavax/lang/model/element/Element;
26 30 4 simpleName Ljava/lang/String;
33 37 2 element Ljavax/lang/model/element/Element;
35 37 4 simpleName Ljava/lang/String;
40 65 2 element Ljavax/lang/model/element/Element;
42 65 4 simpleName Ljava/lang/String;
68 70 2 element Ljavax/lang/model/element/Element;
MethodParameters:
Name Flags
layoutElement
private void parseName(javax.lang.model.element.TypeElement);
descriptor: (Ljavax/lang/model/element/TypeElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parsePackageName:(Ljavax/lang/model/element/TypeElement;)V
1: aload 0
aload 1
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getQualifiedName:(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.interfaceFullName:Ljava/lang/String;
2: aload 1
invokeinterface javax.lang.model.element.TypeElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 2
start local 2 3: aload 2
ldc "Layout"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 5
4: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout interfaces should have a name ending with -Layout"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
5: StackMap locals: java.lang.String
StackMap stack:
aload 0
aload 2
iconst_0
aload 2
invokevirtual java.lang.String.length:()I
ldc "Layout"
invokevirtual java.lang.String.length:()I
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.name:Ljava/lang/String;
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 7 1 layoutElement Ljavax/lang/model/element/TypeElement;
3 7 2 nameString Ljava/lang/String;
MethodParameters:
Name Flags
layoutElement
private void parseSuperLayout(javax.lang.model.element.TypeElement);
descriptor: (Ljavax/lang/model/element/TypeElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: new com.oracle.truffle.object.dsl.processor.LayoutParser
dup
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
invokespecial com.oracle.truffle.object.dsl.processor.LayoutParser.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;)V
astore 2
start local 2 1: aload 2
aload 1
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parse:(Ljavax/lang/model/element/TypeElement;)V
2: aload 0
aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.build:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 4 1 superTypeElement Ljavax/lang/model/element/TypeElement;
1 4 2 superParser Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
MethodParameters:
Name Flags
superTypeElement
private void parseIdentifier(javax.lang.model.element.VariableElement);
descriptor: (Ljavax/lang/model/element/VariableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 2
start local 2 1: aload 2
iconst_0
aload 2
invokevirtual java.lang.String.length:()I
ldc "_IDENTIFIER"
invokevirtual java.lang.String.length:()I
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.constantToIdentifier:(Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 2: aload 0
aload 3
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasIdentifier:(Z)V
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 4 1 fieldElement Ljavax/lang/model/element/VariableElement;
1 4 2 identifierName Ljava/lang/String;
2 4 3 propertyName Ljava/lang/String;
MethodParameters:
Name Flags
fieldElement
private void parseShapeConstructor(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
astore 2
start local 2 1: aload 2
invokeinterface java.util.List.isEmpty:()Z
ifne 3
2: aload 0
iconst_1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasShapeProperties:Z
3: StackMap locals: java.util.List
StackMap stack:
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
ifnull 7
4: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
astore 3
start local 3 5: aload 0
aload 1
aload 2
aload 3
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.checkSharedParameters:(Ljavax/lang/model/element/Element;Ljava/util/List;Ljava/util/List;)V
6: aload 2
aload 3
invokeinterface java.util.List.size:()I
aload 2
invokeinterface java.util.List.size:()I
invokeinterface java.util.List.subList:(II)Ljava/util/List;
astore 2
end local 3 7: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 15
StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.ExecutableElement java.util.List top java.util.Iterator
StackMap stack:
8: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 3
start local 3 9: aload 3
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 5
start local 5 10: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.constructorProperties:Ljava/util/List;
aload 5
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
11: aload 0
aload 5
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
astore 6
start local 6 12: aload 0
aload 3
aload 6
aload 3
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
13: aload 0
aload 6
aload 3
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseConstructorParameterAnnotations:(Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/element/Element;)V
14: aload 6
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setIsShapeProperty:(Z)V
end local 6 end local 5 end local 3 15: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
16: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 17 1 methodElement Ljavax/lang/model/element/ExecutableElement;
1 17 2 parameters Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;
5 7 3 superShapeProperties Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;
9 15 3 element Ljavax/lang/model/element/VariableElement;
10 15 5 parameterName Ljava/lang/String;
12 15 6 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
MethodParameters:
Name Flags
methodElement
private void parseConstructor(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=5, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasCreate:Z
1: aload 0
aload 1
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.checkCreateAndBuilder:(Ljavax/lang/model/element/ExecutableElement;)V
2: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
astore 2
start local 2 3: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasShapeProperties:Z
ifeq 17
4: aload 2
invokeinterface java.util.List.isEmpty:()Z
ifeq 6
5: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "If an @Layout has shape properties the constructor must have parameters"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
6: StackMap locals: java.util.List
StackMap stack:
aload 2
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 3
start local 3 7: aload 3
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 8: aload 4
ldc "factory"
invokestatic com.oracle.truffle.object.dsl.processor.LayoutParser.matches:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 12
9: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 3
ldc "If an @Layout has shape properties, the first parameter of the constructor must be called factory (was %s)"
iconst_1
anewarray java.lang.Object
dup
iconst_0
10: aload 3
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
aastore
11: invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
12: StackMap locals: javax.lang.model.element.VariableElement java.lang.String
StackMap stack:
aload 0
aload 3
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObjectFactory:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifne 16
13: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 3
ldc "If an @Layout has shape properties, the first parameter of the constructor must be of type DynamicObjectFactory (was %s)"
iconst_1
anewarray java.lang.Object
dup
iconst_0
14: aload 3
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
aastore
15: invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
16: StackMap locals:
StackMap stack:
aload 2
iconst_1
aload 2
invokeinterface java.util.List.size:()I
invokeinterface java.util.List.subList:(II)Ljava/util/List;
astore 2
end local 4 end local 3 17: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.addConstructorProperties:(Ljavax/lang/model/element/ExecutableElement;Ljava/util/List;)V
18: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 19 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 19 2 parameters Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;
7 17 3 firstParameter Ljavax/lang/model/element/VariableElement;
8 17 4 firstParameterName Ljava/lang/String;
MethodParameters:
Name Flags
methodElement
private void parseBuilder(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasBuilder:Z
1: aload 0
aload 1
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.checkCreateAndBuilder:(Ljavax/lang/model/element/ExecutableElement;)V
2: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
astore 2
start local 2 3: aload 0
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getReturnType:()Ljavax/lang/model/type/TypeMirror;
invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
ldc [Ljava/lang/Object;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifne 5
4: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "build() must have Object[] for return type"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
5: StackMap locals: java.util.List
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.addConstructorProperties:(Ljavax/lang/model/element/ExecutableElement;Ljava/util/List;)V
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 7 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 7 2 parameters Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;
MethodParameters:
Name Flags
methodElement
private void checkCreateAndBuilder(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasCreate:Z
ifeq 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasBuilder:Z
ifeq 3
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "Only one of create<Layout>() or build() may be specified."
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: return
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 4 1 methodElement Ljavax/lang/model/element/ExecutableElement;
MethodParameters:
Name Flags
methodElement
private void addConstructorProperties(javax.lang.model.element.ExecutableElement, java.util.List<? extends javax.lang.model.element.VariableElement>);
descriptor: (Ljavax/lang/model/element/ExecutableElement;Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 2
astore 3
start local 3 1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
ifnull 5
2: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
astore 4
start local 4 3: aload 0
aload 1
aload 2
aload 4
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.checkSharedParameters:(Ljavax/lang/model/element/Element;Ljava/util/List;Ljava/util/List;)V
4: aload 2
aload 4
invokeinterface java.util.List.size:()I
aload 2
invokeinterface java.util.List.size:()I
invokeinterface java.util.List.subList:(II)Ljava/util/List;
astore 3
end local 4 5: StackMap locals: java.util.List
StackMap stack:
aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 17
StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.ExecutableElement java.util.List java.util.List top java.util.Iterator
StackMap stack:
6: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 4
start local 4 7: aload 4
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 6
start local 6 8: aload 6
ldc "factory"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
9: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "Factory is a confusing name for a property"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
10: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.ExecutableElement java.util.List java.util.List javax.lang.model.element.VariableElement java.util.Iterator java.lang.String
StackMap stack:
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.constructorProperties:Ljava/util/List;
aload 6
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 13
11: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "The property %s is duplicated"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
12: goto 17
13: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.constructorProperties:Ljava/util/List;
aload 6
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
14: aload 0
aload 6
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
astore 7
start local 7 15: aload 0
aload 4
aload 7
aload 4
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
16: aload 0
aload 7
aload 4
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.parseConstructorParameterAnnotations:(Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/element/Element;)V
end local 7 end local 6 end local 4 17: StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser javax.lang.model.element.ExecutableElement java.util.List java.util.List top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
18: return
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/object/dsl/processor/LayoutParser;
0 19 1 methodElement Ljavax/lang/model/element/ExecutableElement;
0 19 2 parameters Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;
1 19 3 ownParameters Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;
3 5 4 superProperties Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;
7 17 4 element Ljavax/lang/model/element/VariableElement;
8 17 6 parameterName Ljava/lang/String;
15 17 7 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
Signature: (Ljavax/lang/model/element/ExecutableElement;Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;)V
MethodParameters:
Name Flags
methodElement
parameters
private void checkSharedParameters(javax.lang.model.element.Element, java.util.List<? extends javax.lang.model.element.VariableElement>, java.util.List<com.oracle.truffle.object.dsl.processor.model.PropertyModel>);
descriptor: (Ljavax/lang/model/element/Element;Ljava/util/List;Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokeinterface java.util.List.size:()I
aload 3
invokeinterface java.util.List.size:()I
if_icmpge 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
new java.lang.StringBuilder
dup
ldc "@Layout constructor cannot have less parameters than the super layout constructor "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 3: goto 18
4: StackMap locals: int
StackMap stack:
aload 2
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 5
start local 5 5: aload 5
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 6
start local 6 6: aload 3
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
astore 7
start local 7 7: aload 7
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasGeneratedName:()Z
ifeq 9
8: aload 7
aload 6
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.fixName:(Ljava/lang/String;)V
9: StackMap locals: javax.lang.model.element.VariableElement java.lang.String com.oracle.truffle.object.dsl.processor.model.PropertyModel
StackMap stack:
aload 6
aload 7
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 13
10: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout constructor parameter %d needs to have the same name as the super layout constructor (is %s, should be %s)"
iconst_3
anewarray java.lang.Object
dup
iconst_0
11: iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
aload 5
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
aastore
dup
iconst_2
aload 7
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
aastore
12: invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
13: StackMap locals:
StackMap stack:
aload 0
aload 5
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
aload 7
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifne 17
14: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout constructor parameter %d needs to have the same type as the super layout constructor (is %s, should be %s)"
iconst_3
anewarray java.lang.Object
dup
iconst_0
15: iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
aload 5
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
aastore
dup
iconst_2
aload 7
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
aastore
16: invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
end local 7 end local 6 end local 5 17: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
18: iload 4
aload 3
invokeinterface java.util.List.size:()I
if_icmplt 4
end local 4 19: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 20 1 element Ljavax/lang/model/element/Element;
0 20 2 parameters Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;
0 20 3 sharedProperties Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;
3 19 4 n I
5 17 5 parameter Ljavax/lang/model/element/VariableElement;
6 17 6 parameterName Ljava/lang/String;
7 17 7 superLayoutProperty Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
Signature: (Ljavax/lang/model/element/Element;Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;)V
MethodParameters:
Name Flags
element
parameters
sharedProperties
private void parsePackageName(javax.lang.model.element.TypeElement);
descriptor: (Ljavax/lang/model/element/TypeElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getQualifiedName:(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
ldc "\\."
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 2
start local 2 1: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 3
start local 3 2: iconst_0
istore 4
start local 4 3: goto 10
4: StackMap locals: java.lang.String[] java.lang.StringBuilder int
StackMap stack:
aload 2
iload 4
aaload
iconst_0
invokevirtual java.lang.String.charAt:(I)C
invokestatic java.lang.Character.isUpperCase:(C)Z
ifeq 6
5: goto 11
6: StackMap locals:
StackMap stack:
iload 4
ifle 8
7: aload 3
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
8: StackMap locals:
StackMap stack:
aload 3
aload 2
iload 4
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
9: iinc 4 1
StackMap locals:
StackMap stack:
10: iload 4
aload 2
arraylength
if_icmplt 4
end local 4 11: StackMap locals:
StackMap stack:
aload 0
aload 3
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.packageName:Ljava/lang/String;
12: 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/object/dsl/processor/LayoutParser;
0 13 1 layoutElement Ljavax/lang/model/element/TypeElement;
1 13 2 packageComponents [Ljava/lang/String;
2 13 3 packageBuilder Ljava/lang/StringBuilder;
3 11 4 n I
MethodParameters:
Name Flags
layoutElement
private void parseGuard(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmpeq 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout guard methods must have just one parameter"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 2
start local 2 3: aload 2
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
astore 3
start local 3 4: aload 2
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 5: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObject:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 9
6: aload 0
iconst_1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasDynamicObjectGuard:Z
7: ldc "object"
astore 5
start local 5 8: goto 19
end local 5 StackMap locals: javax.lang.model.element.VariableElement javax.lang.model.type.TypeMirror java.lang.String
StackMap stack:
9: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.ObjectType:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 13
10: aload 0
iconst_1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasObjectTypeGuard:Z
11: ldc "objectType"
astore 5
start local 5 12: goto 19
end local 5 StackMap locals:
StackMap stack:
13: aload 0
aload 3
invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
ldc Ljava/lang/Object;
invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 17
14: aload 0
iconst_1
putfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasObjectGuard:Z
15: ldc "object"
astore 5
start local 5 16: goto 19
end local 5 17: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout guard method with unknown parameter type %s - don't know how to guard on this"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 3
aastore
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
18: aconst_null
astore 5
start local 5 19: StackMap locals: java.lang.String
StackMap stack:
aload 5
ifnull 21
aload 4
aload 5
invokestatic com.oracle.truffle.object.dsl.processor.LayoutParser.matches:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 21
20: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout guard method should have a parameter named %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 5
aastore
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
21: StackMap locals:
StackMap stack:
return
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 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 22 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 22 2 parameter Ljavax/lang/model/element/VariableElement;
4 22 3 type Ljavax/lang/model/type/TypeMirror;
5 22 4 parameterName Ljava/lang/String;
8 9 5 expectedParameterName Ljava/lang/String;
12 13 5 expectedParameterName Ljava/lang/String;
16 17 5 expectedParameterName Ljava/lang/String;
19 22 5 expectedParameterName Ljava/lang/String;
MethodParameters:
Name Flags
methodElement
private void parseGetter(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=10, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmpeq 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout getter methods must have just one parameter"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 2
start local 2 3: aload 2
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
astore 3
start local 3 4: aload 2
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 5: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObject:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 10
6: iconst_0
istore 5
start local 5 7: iconst_0
istore 6
start local 6 8: ldc "object"
astore 7
start local 7 9: goto 24
end local 7 end local 6 end local 5 StackMap locals: javax.lang.model.element.VariableElement javax.lang.model.type.TypeMirror java.lang.String
StackMap stack:
10: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObjectFactory:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 15
11: iconst_1
istore 5
start local 5 12: iconst_0
istore 6
start local 6 13: ldc "factory"
astore 7
start local 7 14: goto 24
end local 7 end local 6 end local 5 StackMap locals:
StackMap stack:
15: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.ObjectType:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 20
16: iconst_0
istore 5
start local 5 17: iconst_1
istore 6
start local 6 18: ldc "objectType"
astore 7
start local 7 19: goto 24
end local 7 end local 6 end local 5 20: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 21: iconst_0
istore 6
start local 6 22: aconst_null
astore 7
start local 7 23: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout getter methods must have a parameter of type DynamicObject or, for shape properties, DynamicObjectFactory or ObjectType"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
24: StackMap locals: int int java.lang.String
StackMap stack:
aload 7
ifnull 26
aload 4
aload 7
invokestatic com.oracle.truffle.object.dsl.processor.LayoutParser.matches:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 26
25: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout getter method should have a parameter named %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 7
aastore
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
26: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "get"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.titleToCamel:(Ljava/lang/String;)Ljava/lang/String;
astore 8
start local 8 27: aload 0
aload 8
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
astore 9
start local 9 28: iload 5
ifeq 31
29: aload 9
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasShapeGetter:(Z)V
30: goto 35
StackMap locals: java.lang.String com.oracle.truffle.object.dsl.processor.model.PropertyBuilder
StackMap stack:
31: iload 6
ifeq 34
32: aload 9
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasObjectTypeGetter:(Z)V
33: goto 35
34: StackMap locals:
StackMap stack:
aload 9
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasGetter:(Z)V
35: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 9
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getReturnType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
36: 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 37 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 37 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 37 2 parameter Ljavax/lang/model/element/VariableElement;
4 37 3 parameterType Ljavax/lang/model/type/TypeMirror;
5 37 4 parameterName Ljava/lang/String;
7 10 5 isShapeGetter Z
12 15 5 isShapeGetter Z
17 20 5 isShapeGetter Z
21 37 5 isShapeGetter Z
8 10 6 isObjectTypeGetter Z
13 15 6 isObjectTypeGetter Z
18 20 6 isObjectTypeGetter Z
22 37 6 isObjectTypeGetter Z
9 10 7 expectedParameterName Ljava/lang/String;
14 15 7 expectedParameterName Ljava/lang/String;
19 20 7 expectedParameterName Ljava/lang/String;
23 37 7 expectedParameterName Ljava/lang/String;
27 37 8 propertyName Ljava/lang/String;
28 37 9 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
MethodParameters:
Name Flags
methodElement
private void parseSetter(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=12, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_2
if_icmpeq 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout guard methods must have two parameters"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 2
start local 2 3: aload 2
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
astore 3
start local 3 4: aload 2
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 4
start local 4 5: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObject:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 9
6: iconst_0
istore 5
start local 5 7: ldc "object"
astore 6
start local 6 8: goto 16
end local 6 end local 5 StackMap locals: javax.lang.model.element.VariableElement javax.lang.model.type.TypeMirror java.lang.String
StackMap stack:
9: aload 0
aload 3
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObjectFactory:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifeq 13
10: iconst_1
istore 5
start local 5 11: ldc "factory"
astore 6
start local 6 12: goto 16
end local 6 end local 5 13: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 14: aconst_null
astore 6
start local 6 15: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout setter methods must have a first parameter of type DynamicObject or, for shape properties, DynamicObjectFactory"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
16: StackMap locals: int java.lang.String
StackMap stack:
aload 6
ifnull 18
aload 4
aload 6
invokestatic com.oracle.truffle.object.dsl.processor.LayoutParser.matches:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 18
17: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout getter method should have a first parameter named %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 6
aastore
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
18: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 7
start local 7 19: aload 7
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
astore 8
start local 8 20: aload 8
ldc "value"
invokestatic com.oracle.truffle.object.dsl.processor.LayoutParser.matches:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 22
21: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout getter method should have a second parameter named value"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
22: StackMap locals: javax.lang.model.element.VariableElement java.lang.String
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "Unsafe"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
istore 9
start local 9 23: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "set"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.titleToCamel:(Ljava/lang/String;)Ljava/lang/String;
astore 10
start local 10 24: iload 9
ifeq 26
25: aload 10
iconst_0
aload 10
invokevirtual java.lang.String.length:()I
ldc "Unsafe"
invokevirtual java.lang.String.length:()I
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 10
26: StackMap locals: int java.lang.String
StackMap stack:
aload 0
aload 10
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
astore 11
start local 11 27: iload 5
ifeq 30
28: aload 11
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasShapeSetter:(Z)V
29: goto 34
30: StackMap locals: com.oracle.truffle.object.dsl.processor.model.PropertyBuilder
StackMap stack:
iload 9
ifeq 33
31: aload 11
iload 9
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasUnsafeSetter:(Z)V
32: goto 34
33: StackMap locals:
StackMap stack:
aload 11
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasSetter:(Z)V
34: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 11
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
35: return
end local 11 end local 10 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 36 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 36 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 36 2 parameter Ljavax/lang/model/element/VariableElement;
4 36 3 parameterType Ljavax/lang/model/type/TypeMirror;
5 36 4 parameterName Ljava/lang/String;
7 9 5 isShapeSetter Z
11 13 5 isShapeSetter Z
14 36 5 isShapeSetter Z
8 9 6 expectedParameterName Ljava/lang/String;
12 13 6 expectedParameterName Ljava/lang/String;
15 36 6 expectedParameterName Ljava/lang/String;
19 36 7 secondParameter Ljavax/lang/model/element/VariableElement;
20 36 8 secondParameterName Ljava/lang/String;
23 36 9 isUnsafeSetter Z
24 36 10 propertyName Ljava/lang/String;
27 36 11 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
MethodParameters:
Name Flags
methodElement
private void parseCompareAndSet(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_3
if_icmpeq 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout compare and set methods must have three parameters"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 2
start local 2 3: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 3
start local 3 4: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_2
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 4
start local 4 5: aload 0
aload 2
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObject:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifne 7
6: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout compare and set method should have a first parameter of type DynamicObject"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals: javax.lang.model.element.VariableElement javax.lang.model.element.VariableElement javax.lang.model.element.VariableElement
StackMap stack:
aload 2
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "object"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 9
8: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout compare and set method should have a first parameter named object"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
9: StackMap locals:
StackMap stack:
aload 3
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "expectedValue"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
10: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout compare and set method should have a second parameter named expectedValue"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
11: StackMap locals:
StackMap stack:
aload 4
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "value"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 13
12: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout compare and set method should have a third parameter named value"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
13: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "compareAndSet"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.titleToCamel:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 14: aload 0
aload 5
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
astore 6
start local 6 15: aload 6
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasCompareAndSet:(Z)V
16: aload 0
aload 1
aload 6
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
17: aload 0
aload 1
aload 6
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_2
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
18: return
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/object/dsl/processor/LayoutParser;
0 19 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 19 2 objectParameter Ljavax/lang/model/element/VariableElement;
4 19 3 currentValueParameter Ljavax/lang/model/element/VariableElement;
5 19 4 newValueParameter Ljavax/lang/model/element/VariableElement;
14 19 5 propertyName Ljava/lang/String;
15 19 6 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
MethodParameters:
Name Flags
methodElement
private void parseGetAndSet(javax.lang.model.element.ExecutableElement);
descriptor: (Ljavax/lang/model/element/ExecutableElement;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_2
if_icmpeq 2
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout get and set methods must have two parameters"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 2
start local 2 3: aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
astore 3
start local 3 4: aload 0
aload 2
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.DynamicObject:Ljavax/lang/model/type/DeclaredType;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifne 6
5: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout get and set method should have a first parameter of type DynamicObject"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
6: StackMap locals: javax.lang.model.element.VariableElement javax.lang.model.element.VariableElement
StackMap stack:
aload 2
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "object"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 8
7: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout get and set method should have a first parameter named object"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
8: StackMap locals:
StackMap stack:
aload 3
invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "value"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 10
9: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout get and set method should have a second parameter named value"
iconst_0
anewarray java.lang.Object
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
10: StackMap locals:
StackMap stack:
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
ldc "getAndSet"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.titleToCamel:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 11: aload 0
aload 4
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
astore 5
start local 5 12: aload 5
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setHasGetAndSet:(Z)V
13: aload 0
aload 1
aload 5
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast javax.lang.model.element.VariableElement
invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
14: aload 0
aload 1
aload 5
aload 1
invokeinterface javax.lang.model.element.ExecutableElement.getReturnType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.setPropertyType:(Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
15: return
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 16 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 16 1 methodElement Ljavax/lang/model/element/ExecutableElement;
3 16 2 objectParameter Ljavax/lang/model/element/VariableElement;
4 16 3 newValueParameter Ljavax/lang/model/element/VariableElement;
11 16 4 propertyName Ljava/lang/String;
12 16 5 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
MethodParameters:
Name Flags
methodElement
private void parseConstructorParameterAnnotations(com.oracle.truffle.object.dsl.processor.model.PropertyBuilder, javax.lang.model.element.Element);
descriptor: (Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/element/Element;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.Nullable: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;
ifnull 2
1: aload 1
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setNullable:(Z)V
2: StackMap locals:
StackMap stack:
aload 2
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
getfield com.oracle.truffle.dsl.processor.TruffleTypes.Volatile: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;
ifnull 4
3: aload 1
iconst_1
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setVolatile:(Z)V
4: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 5 1 property Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
0 5 2 element Ljavax/lang/model/element/Element;
MethodParameters:
Name Flags
property
element
private boolean isSameType(javax.lang.model.type.TypeMirror, javax.lang.model.type.TypeMirror);
descriptor: (Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.getProcessingEnv:()Ljavax/annotation/processing/ProcessingEnvironment;
invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
aload 1
aload 2
invokeinterface javax.lang.model.util.Types.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 1 1 a Ljavax/lang/model/type/TypeMirror;
0 1 2 b Ljavax/lang/model/type/TypeMirror;
MethodParameters:
Name Flags
a
b
public static boolean isGeneratedName(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.String.length:()I
iconst_3
if_icmple 1
aload 0
ldc "arg"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 1
aload 0
iconst_3
invokevirtual java.lang.String.charAt:(I)C
invokestatic java.lang.Character.isDigit:(C)Z
ifeq 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 name Ljava/lang/String;
MethodParameters:
Name Flags
name
private static boolean matches(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokestatic com.oracle.truffle.object.dsl.processor.LayoutParser.isGeneratedName:(Ljava/lang/String;)Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 parameterName Ljava/lang/String;
0 3 1 expected Ljava/lang/String;
MethodParameters:
Name Flags
parameterName
expected
private void setPropertyType(javax.lang.model.element.Element, com.oracle.truffle.object.dsl.processor.model.PropertyBuilder, javax.lang.model.type.TypeMirror);
descriptor: (Ljavax/lang/model/element/Element;Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;Ljavax/lang/model/type/TypeMirror;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.getType:()Ljavax/lang/model/type/TypeMirror;
ifnonnull 3
1: aload 2
aload 3
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.setType:(Ljavax/lang/model/type/TypeMirror;)V
2: goto 7
StackMap locals:
StackMap stack:
3: aload 0
aload 3
aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.getType:()Ljavax/lang/model/type/TypeMirror;
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
ifne 7
4: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.processor:Lcom/oracle/truffle/object/dsl/processor/LayoutProcessor;
aload 1
ldc "@Layout property types are inconsistent - was previously %s but now %s"
iconst_2
anewarray java.lang.Object
dup
iconst_0
5: aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.getType:()Ljavax/lang/model/type/TypeMirror;
aastore
dup
iconst_1
aload 3
aastore
6: invokevirtual com.oracle.truffle.object.dsl.processor.LayoutProcessor.reportError:(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 8 1 element Ljavax/lang/model/element/Element;
0 8 2 builder Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
0 8 3 type Ljavax/lang/model/type/TypeMirror;
MethodParameters:
Name Flags
element
builder
type
private com.oracle.truffle.object.dsl.processor.model.PropertyBuilder getProperty(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.properties:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.object.dsl.processor.model.PropertyBuilder
astore 2
start local 2 1: aload 2
ifnonnull 4
2: new com.oracle.truffle.object.dsl.processor.model.PropertyBuilder
dup
aload 1
invokespecial com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.<init>:(Ljava/lang/String;)V
astore 2
3: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.properties:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: StackMap locals: com.oracle.truffle.object.dsl.processor.model.PropertyBuilder
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
0 5 1 propertyName Ljava/lang/String;
1 5 2 builder Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
MethodParameters:
Name Flags
propertyName
public com.oracle.truffle.object.dsl.processor.model.LayoutModel build();
descriptor: ()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=14, locals=1, args_size=1
start local 0 0: new com.oracle.truffle.object.dsl.processor.model.LayoutModel
dup
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.objectTypeSuperclass:Ljavax/lang/model/type/TypeMirror;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.superLayout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.name:Ljava/lang/String;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.packageName:Ljava/lang/String;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasObjectTypeGuard:Z
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasObjectGuard:Z
1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasDynamicObjectGuard:Z
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.hasBuilder:Z
aload 0
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.buildProperties:()Ljava/util/List;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.interfaceFullName:Ljava/lang/String;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.implicitCasts:Ljava/util/List;
aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.dispatch:Ljavax/lang/model/type/TypeMirror;
2: invokespecial com.oracle.truffle.object.dsl.processor.model.LayoutModel.<init>:(Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;Ljava/lang/String;Ljava/lang/String;ZZZZLjava/util/Collection;Ljava/lang/String;Ljava/util/Collection;Ljavax/lang/model/type/TypeMirror;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
private java.util.List<com.oracle.truffle.object.dsl.processor.model.PropertyModel> buildProperties();
descriptor: ()Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
start local 1 1: aload 0
getfield com.oracle.truffle.object.dsl.processor.LayoutParser.constructorProperties:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutParser java.util.List top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 3: aload 1
aload 0
aload 2
invokevirtual com.oracle.truffle.object.dsl.processor.LayoutParser.getProperty:(Ljava/lang/String;)Lcom/oracle/truffle/object/dsl/processor/model/PropertyBuilder;
invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyBuilder.build:()Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/object/dsl/processor/LayoutParser;
1 6 1 models Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;
3 4 2 propertyName Ljava/lang/String;
Signature: ()Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;
}
SourceFile: "LayoutParser.java"