public final class com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
super_class: java.lang.Object
{
private final java.util.Collection<com.oracle.svm.hosted.meta.HostedMethod> methodCollection;
descriptor: Ljava/util/Collection;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Collection<Lcom/oracle/svm/hosted/meta/HostedMethod;>;
private final java.util.Set<java.lang.String> violations;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Ljava/lang/String;>;
public void <init>(java.util.Collection<com.oracle.svm.hosted.meta.HostedMethod>);
descriptor: (Ljava/util/Collection;)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
aload 1
putfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
2: aload 0
new java.util.TreeSet
dup
invokespecial java.util.TreeSet.<init>:()V
putfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
0 4 1 methodCollection Ljava/util/Collection<Lcom/oracle/svm/hosted/meta/HostedMethod;>;
Signature: (Ljava/util/Collection<Lcom/oracle/svm/hosted/meta/HostedMethod;>;)V
MethodParameters:
Name Flags
methodCollection
public void check();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleOverrides:()V
1: aload 0
invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleCallees:()V
2: aload 0
invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleCallers:()V
3: aload 0
invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleAllocations:()V
4: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
ifne 11
5: new java.lang.StringBuilder
dup
ldc "Found "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
invokeinterface java.util.Set.size:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " violations of @Uninterruptible usage:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
start local 1 6: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 9
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker java.lang.String top java.util.Iterator
StackMap stack:
7: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 8: new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
end local 2 9: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
10: ldc "%s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
athrow
end local 1 11: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
6 11 1 message Ljava/lang/String;
8 9 2 violation Ljava/lang/String;
private void checkUninterruptibleOverrides();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 16
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 1
start local 1 2: aload 1
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 3
start local 3 3: aload 3
ifnull 16
4: aload 1
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getImplementations:()[Lcom/oracle/svm/hosted/meta/HostedMethod;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 15
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible top int int com.oracle.svm.hosted.meta.HostedMethod[]
StackMap stack:
5: aload 7
iload 5
aaload
astore 4
start local 4 6: aload 4
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 8
start local 8 7: aload 8
ifnull 13
8: aload 3
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.callerMustBe:()Z
aload 8
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.callerMustBe:()Z
if_icmpeq 10
9: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
new java.lang.StringBuilder
dup
ldc "callerMustBe: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " != "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
10: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible com.oracle.svm.hosted.meta.HostedMethod int int com.oracle.svm.hosted.meta.HostedMethod[] com.oracle.svm.core.annotate.Uninterruptible
StackMap stack:
aload 3
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
aload 8
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
if_icmpeq 14
11: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
new java.lang.StringBuilder
dup
ldc "calleeMustBe: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " != "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
12: goto 14
13: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
new java.lang.StringBuilder
dup
ldc "method "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " is annotated but "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
ldc "%H.%n(%p) is not"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 8 end local 4 14: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible top int int com.oracle.svm.hosted.meta.HostedMethod[]
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
15: iload 5
iload 6
if_icmplt 5
end local 3 end local 1 16: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
17: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
2 16 1 method Lcom/oracle/svm/hosted/meta/HostedMethod;
3 16 3 methodAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
6 14 4 impl Lcom/oracle/svm/hosted/meta/HostedMethod;
7 14 8 implAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
private void checkUninterruptibleCallees();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=1
start local 0 0: getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 2
1: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "/* DOT */ digraph uninterruptible {"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 25
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
3: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 1
start local 1 4: aload 1
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 3
start local 3 5: aload 1
getfield com.oracle.svm.hosted.meta.HostedMethod.compilationInfo:Lcom/oracle/svm/hosted/code/CompilationInfo;
invokevirtual com.oracle.svm.hosted.code.CompilationInfo.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 6: aload 3
ifnull 25
7: aload 3
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
ifeq 18
8: aload 4
ifnull 25
9: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 6
goto 16
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
10: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.Invoke
astore 5
start local 5 11: aload 5
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 7
start local 7 12: getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 14
13: aload 1
aload 7
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.printDotGraphEdge:(Lcom/oracle/svm/hosted/meta/HostedMethod;Lcom/oracle/svm/hosted/meta/HostedMethod;)V
14: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.Invoke java.util.Iterator com.oracle.svm.hosted.meta.HostedMethod
StackMap stack:
aload 7
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isNotInterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifne 16
15: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
new java.lang.StringBuilder
dup
ldc "Unannotated callee: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " called by annotated caller "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 7 end local 5 16: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
17: goto 25
18: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph
StackMap stack:
aload 4
ifnull 25
19: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 6
goto 24
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
20: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.Invoke
astore 5
start local 5 21: aload 5
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 7
start local 7 22: getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 24
23: aload 1
aload 7
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.printDotGraphEdge:(Lcom/oracle/svm/hosted/meta/HostedMethod;Lcom/oracle/svm/hosted/meta/HostedMethod;)V
end local 7 end local 5 24: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 20
end local 4 end local 3 end local 1 25: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
26: getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 28
27: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "/* DOT */ }"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
28: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
4 25 1 caller Lcom/oracle/svm/hosted/meta/HostedMethod;
5 25 3 callerAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
6 25 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
11 16 5 invoke Lorg/graalvm/compiler/nodes/Invoke;
12 16 7 callee Lcom/oracle/svm/hosted/meta/HostedMethod;
21 24 5 invoke Lorg/graalvm/compiler/nodes/Invoke;
22 24 7 callee Lcom/oracle/svm/hosted/meta/HostedMethod;
private void checkUninterruptibleCallers();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 11
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 1
start local 1 2: aload 1
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 3
start local 3 3: aload 1
getfield com.oracle.svm.hosted.meta.HostedMethod.compilationInfo:Lcom/oracle/svm/hosted/code/CompilationInfo;
invokevirtual com.oracle.svm.hosted.code.CompilationInfo.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 4: aload 3
ifnonnull 11
aload 4
ifnull 11
5: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 6
goto 10
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
6: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.Invoke
astore 5
start local 5 7: aload 5
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 7
start local 7 8: aload 7
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isCallerMustBe:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifeq 10
9: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
new java.lang.StringBuilder
dup
ldc "Unannotated caller: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " calls annotated callee "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 7
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 7 end local 5 10: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 4 end local 3 end local 1 11: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
12: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
2 11 1 caller Lcom/oracle/svm/hosted/meta/HostedMethod;
3 11 3 callerAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
4 11 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
7 10 5 invoke Lorg/graalvm/compiler/nodes/Invoke;
8 10 7 callee Lcom/oracle/svm/hosted/meta/HostedMethod;
private void checkUninterruptibleAllocations();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 10
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.svm.hosted.meta.HostedMethod
astore 1
start local 1 2: aload 1
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 3
start local 3 3: aload 1
getfield com.oracle.svm.hosted.meta.HostedMethod.compilationInfo:Lcom/oracle/svm/hosted/code/CompilationInfo;
invokevirtual com.oracle.svm.hosted.code.CompilationInfo.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 4: aload 3
ifnull 10
aload 4
ifnull 10
5: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 6
goto 9
StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
6: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 5
start local 5 7: aload 5
instanceof org.graalvm.compiler.nodes.java.AbstractNewObjectNode
ifeq 9
8: aload 0
getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
new java.lang.StringBuilder
dup
ldc "Annotated method: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "%H.%n(%p)"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " allocates."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 5 9: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 4 end local 3 end local 1 10: StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
11: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
2 10 1 method Lcom/oracle/svm/hosted/meta/HostedMethod;
3 10 3 methodAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
4 10 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
7 9 5 node Lorg/graalvm/compiler/graph/Node;
private static boolean isNotInterruptible(com.oracle.svm.hosted.meta.HostedMethod);
descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isUninterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifne 1
aload 0
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isNoTransitionCFunction:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 method Lcom/oracle/svm/hosted/meta/HostedMethod;
MethodParameters:
Name Flags
method
private static boolean isUninterruptible(com.oracle.svm.hosted.meta.HostedMethod);
descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
ifnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 method Lcom/oracle/svm/hosted/meta/HostedMethod;
MethodParameters:
Name Flags
method
private static boolean isCallerMustBe(com.oracle.svm.hosted.meta.HostedMethod);
descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.callerMustBe:()Z
ifeq 2
iconst_1
ireturn
StackMap locals: com.oracle.svm.core.annotate.Uninterruptible
StackMap stack:
2: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 method Lcom/oracle/svm/hosted/meta/HostedMethod;
1 3 1 uninterruptibleAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
MethodParameters:
Name Flags
method
private static boolean isCalleeMustBe(com.oracle.svm.hosted.meta.HostedMethod);
descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast com.oracle.svm.core.annotate.Uninterruptible
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
ifeq 2
iconst_1
ireturn
StackMap locals: com.oracle.svm.core.annotate.Uninterruptible
StackMap stack:
2: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 method Lcom/oracle/svm/hosted/meta/HostedMethod;
1 3 1 uninterruptibleAnnotation Lcom/oracle/svm/core/annotate/Uninterruptible;
MethodParameters:
Name Flags
method
private static boolean isNoTransitionCFunction(com.oracle.svm.hosted.meta.HostedMethod);
descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
ldc Lorg/graalvm/nativeimage/c/function/CFunction;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast org.graalvm.nativeimage.c.function.CFunction
astore 1
start local 1 1: aload 0
ldc Lorg/graalvm/nativeimage/c/function/InvokeCFunctionPointer;
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast org.graalvm.nativeimage.c.function.InvokeCFunctionPointer
astore 2
start local 2 2: aload 1
ifnull 3
aload 1
invokeinterface org.graalvm.nativeimage.c.function.CFunction.transition:()Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
getstatic org.graalvm.nativeimage.c.function.CFunction$Transition.NO_TRANSITION:Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
if_acmpeq 5
3: StackMap locals: org.graalvm.nativeimage.c.function.CFunction org.graalvm.nativeimage.c.function.InvokeCFunctionPointer
StackMap stack:
aload 2
ifnull 4
aload 2
invokeinterface org.graalvm.nativeimage.c.function.InvokeCFunctionPointer.transition:()Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
getstatic org.graalvm.nativeimage.c.function.CFunction$Transition.NO_TRANSITION:Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
if_acmpeq 5
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 method Lcom/oracle/svm/hosted/meta/HostedMethod;
1 6 1 cfunctionAnnotation Lorg/graalvm/nativeimage/c/function/CFunction;
2 6 2 invokeCFunctionPointerAnnotation Lorg/graalvm/nativeimage/c/function/InvokeCFunctionPointer;
MethodParameters:
Name Flags
method
private static void printDotGraphEdge(com.oracle.svm.hosted.meta.HostedMethod, com.oracle.svm.hosted.meta.HostedMethod);
descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;Lcom/oracle/svm/hosted/meta/HostedMethod;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: ldc " [color=black]"
astore 2
start local 2 1: ldc " [color=black]"
astore 3
start local 3 2: aload 0
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isUninterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifeq 6
3: ldc " [color=blue]"
astore 2
4: aload 0
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isCalleeMustBe:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifne 6
5: ldc " [color=orange]"
astore 2
6: StackMap locals: java.lang.String java.lang.String
StackMap stack:
aload 1
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isUninterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifeq 11
7: ldc " [color=blue]"
astore 3
8: aload 1
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isCalleeMustBe:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifne 12
9: ldc " [color=purple]"
astore 3
10: goto 12
11: StackMap locals:
StackMap stack:
ldc " [color=red]"
astore 3
12: StackMap locals:
StackMap stack:
aload 1
invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isNoTransitionCFunction:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
ifeq 14
13: ldc " [color=green]"
astore 3
14: StackMap locals:
StackMap stack:
getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "/* DOT */ "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
ldc "<%h.%n>"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
15: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "/* DOT */ "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "<%h.%n>"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
16: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "/* DOT */ "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
ldc "<%h.%n>"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " -> "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
ldc "<%h.%n>"
invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
17: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 caller Lcom/oracle/svm/hosted/meta/HostedMethod;
0 18 1 callee Lcom/oracle/svm/hosted/meta/HostedMethod;
1 18 2 callerColor Ljava/lang/String;
2 18 3 calleeColor Ljava/lang/String;
MethodParameters:
Name Flags
caller
callee
}
SourceFile: "UninterruptibleAnnotationChecker.java"
NestMembers:
com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options
InnerClasses:
public UserException = com.oracle.svm.core.util.UserError$UserException of com.oracle.svm.core.util.UserError
public Options = com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options of com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
public final Transition = org.graalvm.nativeimage.c.function.CFunction$Transition of org.graalvm.nativeimage.c.function.CFunction