public class org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods extends org.graalvm.compiler.phases.VerifyPhase<org.graalvm.compiler.phases.tiers.PhaseContext>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods
super_class: org.graalvm.compiler.phases.VerifyPhase
{
java.lang.Class<? extends java.lang.annotation.Annotation> callerSensitiveClass;
descriptor: Ljava/lang/Class;
flags: (0x0000)
Signature: Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
java.lang.Class<?> reflectionClass;
descriptor: Ljava/lang/Class;
flags: (0x0000)
Signature: Ljava/lang/Class<*>;
public boolean checkContract();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/core/test/VerifyCallerSensitiveMethods;
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
invokespecial org.graalvm.compiler.phases.VerifyPhase.<init>:()V
1: invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
astore 1
start local 1 2: getstatic org.graalvm.compiler.serviceprovider.JavaVersionUtil.Java8OrEarlier:Z
ifeq 6
3: aload 0
aload 1
ldc "sun.reflect.Reflection"
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
putfield org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.reflectionClass:Ljava/lang/Class;
4: aload 0
aload 1
ldc "sun.reflect.ConstantPool"
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
putfield org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.callerSensitiveClass:Ljava/lang/Class;
5: goto 11
6: StackMap locals: org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods java.lang.ClassLoader
StackMap stack:
aload 0
aload 1
ldc "jdk.internal.reflect.Reflection"
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
putfield org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.reflectionClass:Ljava/lang/Class;
7: aload 0
aload 1
ldc "jdk.internal.reflect.ConstantPool"
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
putfield org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.callerSensitiveClass:Ljava/lang/Class;
end local 1 8: goto 11
StackMap locals: org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods
StackMap stack: java.lang.ClassNotFoundException
9: astore 1
start local 1 10: new java.lang.AssertionError
dup
aload 1
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 1 11: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/graalvm/compiler/core/test/VerifyCallerSensitiveMethods;
2 8 1 classLoader Ljava/lang/ClassLoader;
10 11 1 e Ljava/lang/ClassNotFoundException;
Exception table:
from to target type
1 8 9 Class java.lang.ClassNotFoundException
protected void verify(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.phases.tiers.PhaseContext);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=8, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokevirtual org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.callsReflectionGetCallerClass:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;)Lorg/graalvm/compiler/nodes/Invoke;
astore 3
start local 3 1: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.method:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
aload 0
getfield org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.callerSensitiveClass:Ljava/lang/Class;
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
astore 4
start local 4 2: aload 3
ifnull 6
3: aload 4
ifnonnull 8
4: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.method:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
aload 3
invokeinterface org.graalvm.compiler.nodes.Invoke.bci:()I
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.asStackTraceElement:(I)Ljava/lang/StackTraceElement;
astore 5
start local 5 5: new org.graalvm.compiler.phases.VerifyPhase$VerificationError
dup
ldc "%s: method that calls Reflection.getCallerClass() must be annotated with @CallerSensitive"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 5
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial org.graalvm.compiler.phases.VerifyPhase$VerificationError.<init>:(Ljava/lang/String;)V
athrow
end local 5 6: StackMap locals: org.graalvm.compiler.nodes.Invoke java.lang.annotation.Annotation
StackMap stack:
aload 4
ifnull 8
7: new org.graalvm.compiler.phases.VerifyPhase$VerificationError
dup
ldc "%s: method annotated with @CallerSensitive does not call Reflection.getCallerClass()"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.method:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
ldc "%H.%n(%p)"
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.format:(Ljava/lang/String;)Ljava/lang/String;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial org.graalvm.compiler.phases.VerifyPhase$VerificationError.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/core/test/VerifyCallerSensitiveMethods;
0 9 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 9 2 context Lorg/graalvm/compiler/phases/tiers/PhaseContext;
1 9 3 invoke Lorg/graalvm/compiler/nodes/Invoke;
2 9 4 annotation Ljava/lang/annotation/Annotation;
5 6 5 e Ljava/lang/StackTraceElement;
MethodParameters:
Name Flags
graph
context
private org.graalvm.compiler.nodes.Invoke callsReflectionGetCallerClass(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.phases.tiers.PhaseContext);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;)Lorg/graalvm/compiler/nodes/Invoke;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual org.graalvm.compiler.phases.tiers.PhaseContext.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
aload 0
getfield org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.reflectionClass:Ljava/lang/Class;
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
astore 3
start local 3 1: aload 1
getstatic org.graalvm.compiler.nodes.java.MethodCallTargetNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:(Lorg/graalvm/compiler/graph/NodeClass;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 5
goto 7
StackMap locals: org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.phases.tiers.PhaseContext jdk.vm.ci.meta.ResolvedJavaType top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.java.MethodCallTargetNode
astore 4
start local 4 3: aload 4
invokevirtual org.graalvm.compiler.nodes.java.MethodCallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 6
start local 6 4: aload 6
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
aload 3
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 7
5: aload 6
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getName:()Ljava/lang/String;
ldc "getCallerClass"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
6: aload 4
invokevirtual org.graalvm.compiler.nodes.java.MethodCallTargetNode.invoke:()Lorg/graalvm/compiler/nodes/Invoke;
areturn
end local 6 end local 4 7: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
8: aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/core/test/VerifyCallerSensitiveMethods;
0 9 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 9 2 context Lorg/graalvm/compiler/phases/tiers/PhaseContext;
1 9 3 reflectionType Ljdk/vm/ci/meta/ResolvedJavaType;
3 7 4 t Lorg/graalvm/compiler/nodes/java/MethodCallTargetNode;
4 7 6 callee Ljdk/vm/ci/meta/ResolvedJavaMethod;
MethodParameters:
Name Flags
graph
context
protected void verify(org.graalvm.compiler.nodes.StructuredGraph, java.lang.Object);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
aload 2
checkcast org.graalvm.compiler.phases.tiers.PhaseContext
invokevirtual org.graalvm.compiler.core.test.VerifyCallerSensitiveMethods.verify:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Lorg/graalvm/compiler/phases/VerifyPhase<Lorg/graalvm/compiler/phases/tiers/PhaseContext;>;
SourceFile: "VerifyCallerSensitiveMethods.java"
InnerClasses:
public VerificationError = org.graalvm.compiler.phases.VerifyPhase$VerificationError of org.graalvm.compiler.phases.VerifyPhase