public class com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor extends com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor
super_class: com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor
{
private static final int BASIC_LEVEL;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int INFO_LEVEL;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int DEBUG_LEVEL;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private final com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor annotationSubstitutions;
descriptor: Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Map<jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.hosted.substitute.ComputedValueField> fieldSubstitutions;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;
private final java.util.List<jdk.vm.ci.meta.ResolvedJavaType> suppressWarnings;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljdk/vm/ci/meta/ResolvedJavaType;>;
private static jdk.vm.ci.meta.ResolvedJavaType resolvedUnsafeClass;
descriptor: Ljdk/vm/ci/meta/ResolvedJavaType;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private jdk.vm.ci.meta.ResolvedJavaMethod unsafeObjectFieldOffsetFieldMethod;
descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
flags: (0x0002) ACC_PRIVATE
private jdk.vm.ci.meta.ResolvedJavaMethod unsafeObjectFieldOffsetClassStringMethod;
descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
flags: (0x0002) ACC_PRIVATE
private jdk.vm.ci.meta.ResolvedJavaMethod unsafeArrayBaseOffsetMethod;
descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
flags: (0x0002) ACC_PRIVATE
private jdk.vm.ci.meta.ResolvedJavaMethod unsafeArrayIndexScaleMethod;
descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
flags: (0x0002) ACC_PRIVATE
private jdk.vm.ci.meta.ResolvedJavaMethod integerNumberOfLeadingZerosMethod;
descriptor: Ljdk/vm/ci/meta/ResolvedJavaMethod;
flags: (0x0002) ACC_PRIVATE
private java.util.HashSet<jdk.vm.ci.meta.ResolvedJavaMethod> neverInlineSet;
descriptor: Ljava/util/HashSet;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/HashSet<Ljdk/vm/ci/meta/ResolvedJavaMethod;>;
private java.util.HashSet<jdk.vm.ci.meta.ResolvedJavaMethod> noCheckedExceptionsSet;
descriptor: Ljava/util/HashSet;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/HashSet<Ljdk/vm/ci/meta/ResolvedJavaMethod;>;
private org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins plugins;
descriptor: Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection;
descriptor: Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
flags: (0x0002) ACC_PRIVATE
private static volatile int[] $SWITCH_TABLE$com$oracle$svm$core$annotate$RecomputeFieldValue$Kind;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor, org.graalvm.compiler.api.replacements.SnippetReflectionProvider);
descriptor: (Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor.<init>:()V
1: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
2: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.noCheckedExceptionsSet:Ljava/util/HashSet;
3: aload 0
aload 2
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
4: aload 0
aload 1
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
5: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.fieldSubstitutions:Ljava/util/Map;
6: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.suppressWarnings:Ljava/util/List;
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 8 1 annotationSubstitutions Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
0 8 2 snippetReflection Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
MethodParameters:
Name Flags
annotationSubstitutions
snippetReflection
public void init(com.oracle.svm.hosted.ImageClassLoader, jdk.vm.ci.meta.MetaAccessProvider, com.oracle.svm.hosted.SVMHost);
descriptor: (Lcom/oracle/svm/hosted/ImageClassLoader;Ljdk/vm/ci/meta/MetaAccessProvider;Lcom/oracle/svm/hosted/SVMHost;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=19, args_size=4
start local 0 start local 1 start local 2 start local 3 0: ldc Ljava/lang/reflect/Field;
ldc "setAccessible"
iconst_1
anewarray java.lang.Class
dup
iconst_0
getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 9
start local 9 1: aload 2
aload 9
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 7
start local 7 2: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 7
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
3: ldc Ljava/lang/reflect/Field;
ldc "get"
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Object;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 10
start local 10 4: aload 2
aload 10
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 8
start local 8 5: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 8
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
6: getstatic org.graalvm.compiler.serviceprovider.JavaVersionUtil.JAVA_SPEC:I
bipush 8
if_icmple 12
7: aload 1
ldc "java.lang.invoke.VarHandles"
invokevirtual com.oracle.svm.hosted.ImageClassLoader.findClassOrFail:(Ljava/lang/String;)Ljava/lang/Class;
invokevirtual java.lang.Class.getDeclaredMethods:()[Ljava/lang/reflect/Method;
dup
astore 14
arraylength
istore 13
iconst_0
istore 12
goto 11
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.SVMHost top top top jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod java.lang.reflect.Method java.lang.reflect.Method top int int java.lang.reflect.Method[]
StackMap stack:
8: aload 14
iload 12
aaload
astore 11
start local 11 9: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 2
aload 11
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
end local 11 10: iinc 12 1
StackMap locals:
StackMap stack:
11: iload 12
iload 13
if_icmplt 8
12: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.SVMHost top top top jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod java.lang.reflect.Method java.lang.reflect.Method
StackMap stack:
getstatic org.graalvm.compiler.serviceprovider.JavaVersionUtil.JAVA_SPEC:I
bipush 8
if_icmpgt 15
13: ldc "sun.misc.Unsafe"
invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
astore 11
start local 11 14: goto 19
end local 11 15: StackMap locals:
StackMap stack:
ldc "jdk.internal.misc.Unsafe"
invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
astore 11
start local 11 16: goto 19
end local 11 StackMap locals:
StackMap stack: java.lang.ClassNotFoundException
17: astore 12
start local 12 18: aload 12
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 12 start local 11 19: StackMap locals: java.lang.Class
StackMap stack:
aload 2
aload 11
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
putstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.resolvedUnsafeClass:Ljdk/vm/ci/meta/ResolvedJavaType;
20: aload 11
ldc "objectFieldOffset"
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/reflect/Field;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 12
start local 12 21: aload 0
aload 2
aload 12
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetFieldMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
22: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.noCheckedExceptionsSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetFieldMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
23: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetFieldMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
24: getstatic org.graalvm.compiler.serviceprovider.JavaVersionUtil.JAVA_SPEC:I
bipush 11
if_icmplt 29
25: aload 11
ldc "objectFieldOffset"
iconst_2
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
dup
iconst_1
ldc Ljava/lang/String;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 13
start local 13 26: aload 0
aload 2
aload 13
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetClassStringMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
27: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.noCheckedExceptionsSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetClassStringMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
28: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetClassStringMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
end local 13 29: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 11
ldc "arrayBaseOffset"
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 13
start local 13 30: aload 0
aload 2
aload 13
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayBaseOffsetMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
31: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.noCheckedExceptionsSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayBaseOffsetMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
32: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayBaseOffsetMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
33: aload 11
ldc "arrayIndexScale"
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 14
start local 14 34: aload 0
aload 2
aload 14
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayIndexScaleMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
35: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.noCheckedExceptionsSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayIndexScaleMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
36: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayIndexScaleMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
37: ldc Ljava/lang/Integer;
ldc "numberOfLeadingZeros"
iconst_1
anewarray java.lang.Class
dup
iconst_0
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 15
start local 15 38: aload 0
aload 2
aload 15
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.integerNumberOfLeadingZerosMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
39: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.integerNumberOfLeadingZerosMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
40: ldc Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
ldc "newUpdater"
iconst_2
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
dup
iconst_1
ldc Ljava/lang/String;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 16
start local 16 41: aload 2
aload 16
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 4
start local 4 42: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 4
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
43: ldc Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;
ldc "newUpdater"
iconst_2
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
dup
iconst_1
ldc Ljava/lang/String;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 17
start local 17 44: aload 2
aload 17
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 5
start local 5 45: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 5
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
46: ldc Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
ldc "newUpdater"
iconst_3
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
dup
iconst_1
ldc Ljava/lang/Class;
aastore
dup
iconst_2
ldc Ljava/lang/String;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 18
start local 18 47: aload 2
aload 18
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 6
start local 6 48: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
aload 6
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 49: goto 52
end local 8 end local 7 end local 6 end local 5 end local 4 StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.SVMHost
StackMap stack: java.lang.NoSuchMethodException
50: astore 9
start local 9 51: aload 9
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 9 start local 4 start local 5 start local 6 start local 7 start local 8 52: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod
StackMap stack:
new com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$StaticInitializerInlineInvokePlugin
dup
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.neverInlineSet:Ljava/util/HashSet;
invokespecial com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$StaticInitializerInlineInvokePlugin.<init>:(Ljava/util/HashSet;)V
astore 9
start local 9 53: aload 0
new org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins
dup
new org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins
dup
invokespecial org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.<init>:()V
invokespecial org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins.<init>:(Lorg/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins;)V
putfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.plugins:Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
54: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.plugins:Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
aload 9
invokevirtual org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins.appendInlineInvokePlugin:(Lorg/graalvm/compiler/nodes/graphbuilderconf/InlineInvokePlugin;)V
55: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.plugins:Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
new com.oracle.svm.hosted.phases.NoClassInitializationPlugin
dup
invokespecial com.oracle.svm.hosted.phases.NoClassInitializationPlugin.<init>:()V
invokevirtual org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins.setClassInitializationPlugin:(Lorg/graalvm/compiler/nodes/graphbuilderconf/ClassInitializationPlugin;)V
56: aload 1
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.plugins:Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
invokevirtual org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins.getInvocationPlugins:()Lorg/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins;
aload 3
iconst_0
iconst_0
invokestatic com.oracle.svm.hosted.snippets.ReflectionPlugins.registerInvocationPlugins:(Lcom/oracle/svm/hosted/ImageClassLoader;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;Lorg/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins;Lcom/oracle/svm/hosted/SVMHost;ZZ)V
57: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.suppressWarnings:Ljava/util/List;
aload 2
ldc "sun.security.provider.ByteArrayAccess"
invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
58: goto 61
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$StaticInitializerInlineInvokePlugin
StackMap stack: java.lang.ClassNotFoundException
59: astore 10
start local 10 60: aload 10
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 10 61: StackMap locals:
StackMap stack:
return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 62 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 62 1 loader Lcom/oracle/svm/hosted/ImageClassLoader;
0 62 2 originalMetaAccess Ljdk/vm/ci/meta/MetaAccessProvider;
0 62 3 hostVM Lcom/oracle/svm/hosted/SVMHost;
42 50 4 atomicIntegerFieldUpdaterNewUpdaterMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
52 62 4 atomicIntegerFieldUpdaterNewUpdaterMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
45 50 5 atomicLongFieldUpdaterNewUpdaterMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
52 62 5 atomicLongFieldUpdaterNewUpdaterMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
48 50 6 atomicReferenceFieldUpdaterNewUpdaterMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
52 62 6 atomicReferenceFieldUpdaterNewUpdaterMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
2 50 7 fieldSetAccessibleMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
52 62 7 fieldSetAccessibleMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
5 50 8 fieldGetMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
52 62 8 fieldGetMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
1 49 9 fieldSetAccessible Ljava/lang/reflect/Method;
4 49 10 fieldGet Ljava/lang/reflect/Method;
9 10 11 method Ljava/lang/reflect/Method;
14 15 11 unsafeClass Ljava/lang/Class<*>;
16 17 11 unsafeClass Ljava/lang/Class<*>;
19 49 11 unsafeClass Ljava/lang/Class<*>;
18 19 12 cnfe Ljava/lang/ClassNotFoundException;
21 49 12 unsafeObjectFieldOffset Ljava/lang/reflect/Method;
26 29 13 unsafeObjectClassStringOffset Ljava/lang/reflect/Method;
30 49 13 unsafeArrayBaseOffset Ljava/lang/reflect/Method;
34 49 14 unsafeArrayIndexScale Ljava/lang/reflect/Method;
38 49 15 integerNumberOfLeadingZeros Ljava/lang/reflect/Method;
41 49 16 atomicIntegerFieldUpdaterNewUpdater Ljava/lang/reflect/Method;
44 49 17 atomicLongFieldUpdaterNewUpdater Ljava/lang/reflect/Method;
47 49 18 atomicReferenceFieldUpdaterNewUpdater Ljava/lang/reflect/Method;
51 52 9 e Ljava/lang/NoSuchMethodException;
53 62 9 inlineInvokePlugin Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$StaticInitializerInlineInvokePlugin;
60 61 10 e Ljava/lang/ClassNotFoundException;
Exception table:
from to target type
12 16 17 Class java.lang.ClassNotFoundException
0 49 50 Class java.lang.NoSuchMethodException
57 58 59 Class java.lang.ClassNotFoundException
MethodParameters:
Name Flags
loader
originalMetaAccess
hostVM
void processComputedValueFields(com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl);
descriptor: (Lcom/oracle/svm/hosted/FeatureImpl$DuringAnalysisAccessImpl;)V
flags: (0x0000)
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.fieldSubstitutions:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 9
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.vm.ci.meta.ResolvedJavaField
astore 2
start local 2 2: aload 2
instanceof com.oracle.svm.hosted.substitute.ComputedValue
ifeq 9
3: aload 2
checkcast com.oracle.svm.hosted.substitute.ComputedValue
astore 4
start local 4 4: invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$SWITCH_TABLE$com$oracle$svm$core$annotate$RecomputeFieldValue$Kind:()[I
aload 4
invokeinterface com.oracle.svm.hosted.substitute.ComputedValue.getRecomputeValueKind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iaload
tableswitch { // 5 - 5
5: 5
default: 9
}
5: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl jdk.vm.ci.meta.ResolvedJavaField java.util.Iterator com.oracle.svm.hosted.substitute.ComputedValue
StackMap stack:
aload 4
invokeinterface com.oracle.svm.hosted.substitute.ComputedValue.getTargetField:()Ljava/lang/reflect/Field;
astore 5
start local 5 6: aload 1
invokevirtual com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl.getMetaAccess:()Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;
aload 5
invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
invokevirtual com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaType:(Ljava/lang/Class;)Lcom/oracle/graal/pointsto/meta/AnalysisType;
invokevirtual com.oracle.graal.pointsto.meta.AnalysisType.registerAsReachable:()V
7: aload 1
aload 1
invokevirtual com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl.getMetaAccess:()Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;
aload 5
invokevirtual com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaField:(Ljava/lang/reflect/Field;)Lcom/oracle/graal/pointsto/meta/AnalysisField;
invokevirtual com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl.registerAsUnsafeAccessed:(Lcom/oracle/graal/pointsto/meta/AnalysisField;)Z
ifeq 9
8: aload 1
invokevirtual com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl.requireAnalysisIteration:()V
end local 5 end local 4 end local 2 9: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 11 1 access Lcom/oracle/svm/hosted/FeatureImpl$DuringAnalysisAccessImpl;
2 9 2 field Ljdk/vm/ci/meta/ResolvedJavaField;
4 9 4 cvField Lcom/oracle/svm/hosted/substitute/ComputedValue;
6 9 5 targetField Ljava/lang/reflect/Field;
MethodParameters:
Name Flags
access
private void addSubstitutionField(jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.hosted.substitute.ComputedValueField);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/hosted/substitute/ComputedValueField;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$assertionsDisabled:Z
ifne 1
aload 2
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$assertionsDisabled:Z
ifne 2
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.fieldSubstitutions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.fieldSubstitutions:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 4 1 original Ljdk/vm/ci/meta/ResolvedJavaField;
0 4 2 substitution Lcom/oracle/svm/hosted/substitute/ComputedValueField;
MethodParameters:
Name Flags
original
substitution
public jdk.vm.ci.meta.ResolvedJavaField lookup(jdk.vm.ci.meta.ResolvedJavaField);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;)Ljdk/vm/ci/meta/ResolvedJavaField;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.fieldSubstitutions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 2
1: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.fieldSubstitutions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.ResolvedJavaField
areturn
2: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 3 1 field Ljdk/vm/ci/meta/ResolvedJavaField;
MethodParameters:
Name Flags
field
public void computeSubstitutions(com.oracle.svm.hosted.SVMHost, jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.options.OptionValues);
descriptor: (Lcom/oracle/svm/hosted/SVMHost;Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/options/OptionValues;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual com.oracle.svm.hosted.SVMHost.getClassInitializationSupport:()Lcom/oracle/svm/hosted/classinitialization/ClassInitializationSupport;
aload 2
invokeinterface com.oracle.svm.hosted.classinitialization.ClassInitializationSupport.shouldInitializeAtRuntime:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifeq 4
3: return
4: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
aload 2
invokevirtual com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.findSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljava/util/Optional;
invokevirtual java.util.Optional.isPresent:()Z
ifeq 7
5: aload 2
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportSkippedSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaType;)V
6: return
7: StackMap locals:
StackMap stack:
aload 2
invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getClassInitializer:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 4
start local 4 8: aload 4
ifnull 36
aload 4
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.hasBytecodes:()Z
ifeq 36
9: new org.graalvm.compiler.debug.DebugContext$Builder
dup
aload 3
invokespecial org.graalvm.compiler.debug.DebugContext$Builder.<init>:(Lorg/graalvm/compiler/options/OptionValues;)V
invokevirtual org.graalvm.compiler.debug.DebugContext$Builder.build:()Lorg/graalvm/compiler/debug/DebugContext;
astore 5
start local 5 10: aconst_null
astore 6
aconst_null
astore 7
11: aload 5
ldc "Field offset computation"
aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
astore 8
start local 8 12: aload 0
aload 4
aload 3
aload 5
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.getStaticInitializerGraph:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/debug/DebugContext;)Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 9
start local 9 13: aload 9
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 11
goto 27
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.options.OptionValues jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
14: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.Invoke
astore 10
start local 10 15: aload 10
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
instanceof org.graalvm.compiler.nodes.java.MethodCallTargetNode
ifeq 27
16: aload 10
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetFieldMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isInvokeTo:(Lorg/graalvm/compiler/nodes/Invoke;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
ifeq 19
17: aload 0
aload 2
aload 10
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processUnsafeObjectFieldOffsetFieldInvoke:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;)V
18: goto 27
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.options.OptionValues jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.Invoke java.util.Iterator
StackMap stack:
19: aload 10
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeObjectFieldOffsetClassStringMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isInvokeTo:(Lorg/graalvm/compiler/nodes/Invoke;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
ifeq 22
20: aload 0
aload 2
aload 10
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processUnsafeObjectFieldOffsetClassStringInvoke:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;)V
21: goto 27
StackMap locals:
StackMap stack:
22: aload 10
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayBaseOffsetMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isInvokeTo:(Lorg/graalvm/compiler/nodes/Invoke;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
ifeq 25
23: aload 0
aload 2
aload 10
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processUnsafeArrayBaseOffsetInvoke:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;)V
24: goto 27
StackMap locals:
StackMap stack:
25: aload 10
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.unsafeArrayIndexScaleMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isInvokeTo:(Lorg/graalvm/compiler/nodes/Invoke;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
ifeq 27
26: aload 0
aload 2
aload 10
aload 9
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processUnsafeArrayIndexScaleInvoke:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
end local 10 27: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.options.OptionValues jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
end local 9 28: aload 8
ifnull 36
aload 8
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
goto 36
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.options.OptionValues jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope
StackMap stack: java.lang.Throwable
29: astore 6
aload 8
ifnull 30
aload 8
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
end local 8 StackMap locals:
StackMap stack:
30: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
31: astore 7
aload 6
ifnonnull 32
aload 7
astore 6
goto 33
StackMap locals:
StackMap stack:
32: aload 6
aload 7
if_acmpeq 33
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
33: aload 6
athrow
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor com.oracle.svm.hosted.SVMHost jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.options.OptionValues jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.debug.DebugContext
StackMap stack: java.lang.Throwable
34: astore 6
start local 6 35: aload 5
aload 6
invokevirtual org.graalvm.compiler.debug.DebugContext.handle:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 6 end local 5 36: 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 37 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 37 1 hostVM Lcom/oracle/svm/hosted/SVMHost;
0 37 2 hostType Ljdk/vm/ci/meta/ResolvedJavaType;
0 37 3 options Lorg/graalvm/compiler/options/OptionValues;
8 37 4 clinit Ljdk/vm/ci/meta/ResolvedJavaMethod;
10 36 5 debug Lorg/graalvm/compiler/debug/DebugContext;
12 30 8 s Lorg/graalvm/compiler/debug/DebugContext$Scope;
13 28 9 clinitGraph Lorg/graalvm/compiler/nodes/StructuredGraph;
15 27 10 invoke Lorg/graalvm/compiler/nodes/Invoke;
35 36 6 e Ljava/lang/Throwable;
Exception table:
from to target type
12 28 29 any
11 31 31 any
10 34 34 Class java.lang.Throwable
MethodParameters:
Name Flags
hostVM
hostType
options
private void processUnsafeObjectFieldOffsetFieldInvoke(jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.Invoke);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=8, args_size=3
start local 0 start local 1 start local 2 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 3
start local 3 1: aconst_null
astore 4
start local 4 2: aconst_null
astore 5
start local 5 3: aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.arguments:()Lorg/graalvm/compiler/graph/NodeInputList;
iconst_1
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 6
start local 6 4: aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 12
5: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
ldc Ljava/lang/reflect/Field;
aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
checkcast java.lang.reflect.Field
astore 7
start local 7 6: aload 7
ifnonnull 9
7: aload 3
ldc "The argument of Unsafe.objectFieldOffset() is a null constant."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: goto 13
9: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.nodes.Invoke java.util.List java.lang.Class java.lang.String org.graalvm.compiler.nodes.ValueNode java.lang.reflect.Field
StackMap stack:
aload 7
invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
astore 4
10: aload 7
invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
astore 5
end local 7 11: goto 13
12: StackMap locals:
StackMap stack:
aload 3
ldc "The argument of Unsafe.objectFieldOffset(Field) is not a constant field."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
13: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
aload 3
aload 4
aload 5
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processUnsafeObjectFieldOffsetInvoke:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/util/List;Ljava/lang/Class;Ljava/lang/String;)V
14: 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 15 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 15 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 15 2 unsafeObjectFieldOffsetInvoke Lorg/graalvm/compiler/nodes/Invoke;
1 15 3 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
2 15 4 targetFieldHolder Ljava/lang/Class<*>;
3 15 5 targetFieldName Ljava/lang/String;
4 15 6 fieldArgument Lorg/graalvm/compiler/nodes/ValueNode;
6 11 7 field Ljava/lang/reflect/Field;
MethodParameters:
Name Flags
type
unsafeObjectFieldOffsetInvoke
private void processUnsafeObjectFieldOffsetClassStringInvoke(jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.Invoke);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 3
start local 3 1: aconst_null
astore 4
start local 4 2: aconst_null
astore 5
start local 5 3: aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.arguments:()Lorg/graalvm/compiler/graph/NodeInputList;
iconst_1
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 6
start local 6 4: aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 11
5: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
ldc Ljava/lang/Class;
aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
checkcast java.lang.Class
astore 7
start local 7 6: aload 7
ifnonnull 9
7: aload 3
ldc "The Class argument of Unsafe.objectFieldOffset(Class, String) is a null constant."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: goto 12
9: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.nodes.Invoke java.util.List java.lang.Class java.lang.String org.graalvm.compiler.nodes.ValueNode java.lang.Class
StackMap stack:
aload 7
astore 4
end local 7 10: goto 12
11: StackMap locals:
StackMap stack:
aload 3
ldc "The Class argument of Unsafe.objectFieldOffset(Class, String) is not a constant class."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
12: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.arguments:()Lorg/graalvm/compiler/graph/NodeInputList;
iconst_2
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 7
start local 7 13: aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 20
14: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
ldc Ljava/lang/String;
aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
checkcast java.lang.String
astore 8
start local 8 15: aload 8
ifnonnull 18
16: aload 3
ldc "The String argument of Unsafe.objectFieldOffset(Class, String) is a null String."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
17: goto 21
18: StackMap locals: org.graalvm.compiler.nodes.ValueNode java.lang.String
StackMap stack:
aload 8
astore 5
end local 8 19: goto 21
20: StackMap locals:
StackMap stack:
aload 3
ldc "The name argument of Unsafe.objectFieldOffset(Class, String) is not a constant String."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
21: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
aload 3
aload 4
aload 5
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processUnsafeObjectFieldOffsetInvoke:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/util/List;Ljava/lang/Class;Ljava/lang/String;)V
22: return
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 23 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 23 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 23 2 unsafeObjectFieldOffsetInvoke Lorg/graalvm/compiler/nodes/Invoke;
1 23 3 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
2 23 4 targetFieldHolder Ljava/lang/Class<*>;
3 23 5 targetFieldName Ljava/lang/String;
4 23 6 classArgument Lorg/graalvm/compiler/nodes/ValueNode;
6 10 7 clazz Ljava/lang/Class<*>;
13 23 7 nameArgument Lorg/graalvm/compiler/nodes/ValueNode;
15 19 8 fieldName Ljava/lang/String;
MethodParameters:
Name Flags
type
unsafeObjectFieldOffsetInvoke
private void processUnsafeObjectFieldOffsetInvoke(jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.Invoke, java.util.List<java.lang.String>, java.lang.Class<?>, java.lang.String);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/util/List;Ljava/lang/Class;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=11, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 3
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.extractValueStoreField:(Lorg/graalvm/compiler/nodes/ValueNode;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
astore 6
start local 6 1: aload 6
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.valueStoreField:Ljdk/vm/ci/meta/ResolvedJavaField;
ifnonnull 3
aload 6
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.illegalUseFound:Z
ifne 3
2: return
3: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult
StackMap stack:
aload 6
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.valueStoreField:Ljdk/vm/ci/meta/ResolvedJavaField;
astore 7
start local 7 4: aload 4
ifnull 11
aload 5
ifnull 11
aload 7
ifnull 11
5: aload 4
astore 8
start local 8 6: aload 5
astore 9
start local 9 7: aload 7
aload 8
aload 9
invokedynamic get(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/function/Supplier;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
com/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor.lambda$0(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;Ljava/lang/String;)Lcom/oracle/svm/hosted/substitute/ComputedValueField; (6)
()Lcom/oracle/svm/hosted/substitute/ComputedValueField;
astore 10
start local 10 8: aload 0
aload 7
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 10
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.tryAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/function/Supplier;)Z
ifeq 12
9: getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 7
new java.lang.StringBuilder
dup
aload 4
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportSuccessfulAutomaticRecomputation:(Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/String;)V
end local 10 end local 9 end local 8 10: goto 12
11: StackMap locals: jdk.vm.ci.meta.ResolvedJavaField
StackMap stack:
aload 0
aload 1
aload 7
aload 2
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 3
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportUnsuccessfulAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Lorg/graalvm/compiler/nodes/Invoke;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)V
12: StackMap locals:
StackMap stack:
return
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 13 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 13 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 13 2 unsafeObjectFieldOffsetInvoke Lorg/graalvm/compiler/nodes/Invoke;
0 13 3 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
0 13 4 targetFieldHolder Ljava/lang/Class<*>;
0 13 5 targetFieldName Ljava/lang/String;
1 13 6 result Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
4 13 7 offsetField Ljdk/vm/ci/meta/ResolvedJavaField;
6 10 8 finalTargetFieldHolder Ljava/lang/Class<*>;
7 10 9 finalTargetFieldName Ljava/lang/String;
8 10 10 supplier Ljava/util/function/Supplier<Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;
Signature: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/Class<*>;Ljava/lang/String;)V
MethodParameters:
Name Flags
type
unsafeObjectFieldOffsetInvoke
unsuccessfulReasons
targetFieldHolder
targetFieldName
private void processUnsafeArrayBaseOffsetInvoke(jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.Invoke);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=11, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.svm.hosted.c.GraalAccess.getOriginalSnippetReflection:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
astore 3
start local 3 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 4
start local 4 2: aconst_null
astore 5
start local 5 3: aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.arguments:()Lorg/graalvm/compiler/graph/NodeInputList;
iconst_1
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 6
start local 6 4: aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.isJavaConstant:()Z
ifeq 7
5: aload 3
ldc Ljava/lang/Class;
aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
checkcast java.lang.Class
astore 5
6: goto 8
7: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.nodes.Invoke org.graalvm.compiler.api.replacements.SnippetReflectionProvider java.util.List java.lang.Class org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 4
ldc "The argument of the call to Unsafe.arrayBaseOffset() is not a constant."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayBaseOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 4
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.extractValueStoreField:(Lorg/graalvm/compiler/nodes/ValueNode;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
astore 7
start local 7 9: aload 7
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.valueStoreField:Ljdk/vm/ci/meta/ResolvedJavaField;
astore 8
start local 8 10: aload 5
ifnull 16
aload 8
ifnull 16
11: aload 5
astore 9
start local 9 12: aload 8
aload 9
invokedynamic get(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Ljava/util/function/Supplier;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
com/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor.lambda$1(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Lcom/oracle/svm/hosted/substitute/ComputedValueField; (6)
()Lcom/oracle/svm/hosted/substitute/ComputedValueField;
astore 10
start local 10 13: aload 0
aload 8
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayBaseOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 10
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.tryAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/function/Supplier;)Z
ifeq 18
14: getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayBaseOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 8
aload 5
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportSuccessfulAutomaticRecomputation:(Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/String;)V
end local 10 end local 9 15: goto 18
16: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult jdk.vm.ci.meta.ResolvedJavaField
StackMap stack:
aload 7
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.illegalUseFound:Z
ifeq 18
17: aload 0
aload 1
aload 8
aload 2
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayBaseOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 4
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportUnsuccessfulAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Lorg/graalvm/compiler/nodes/Invoke;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)V
18: StackMap locals:
StackMap stack:
return
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 19 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 19 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 19 2 unsafeArrayBaseOffsetInvoke Lorg/graalvm/compiler/nodes/Invoke;
1 19 3 snippetReflectionProvider Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
2 19 4 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
3 19 5 arrayClass Ljava/lang/Class<*>;
4 19 6 arrayClassArgument Lorg/graalvm/compiler/nodes/ValueNode;
9 19 7 result Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
10 19 8 offsetField Ljdk/vm/ci/meta/ResolvedJavaField;
12 15 9 finalArrayClass Ljava/lang/Class<*>;
13 15 10 supplier Ljava/util/function/Supplier<Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;
MethodParameters:
Name Flags
type
unsafeArrayBaseOffsetInvoke
private void processUnsafeArrayIndexScaleInvoke(jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.Invoke, org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic com.oracle.svm.hosted.c.GraalAccess.getOriginalSnippetReflection:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
astore 4
start local 4 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 5
start local 5 2: aconst_null
astore 6
start local 6 3: aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.arguments:()Lorg/graalvm/compiler/graph/NodeInputList;
iconst_1
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 7
start local 7 4: aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.isJavaConstant:()Z
ifeq 7
5: aload 4
ldc Ljava/lang/Class;
aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
checkcast java.lang.Class
astore 6
6: goto 8
7: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.nodes.Invoke org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.api.replacements.SnippetReflectionProvider java.util.List java.lang.Class org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 5
ldc "The argument of the call to Unsafe.arrayIndexScale() is not a constant."
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 5
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.extractValueStoreField:(Lorg/graalvm/compiler/nodes/ValueNode;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
astore 8
start local 8 9: aload 8
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.valueStoreField:Ljdk/vm/ci/meta/ResolvedJavaField;
astore 9
start local 9 10: iconst_0
istore 10
start local 10 11: iconst_0
istore 11
start local 11 12: aload 6
ifnull 22
13: aload 9
ifnull 21
14: aload 6
astore 12
start local 12 15: aload 9
aload 12
invokedynamic get(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Ljava/util/function/Supplier;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
com/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor.lambda$2(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Lcom/oracle/svm/hosted/substitute/ComputedValueField; (6)
()Lcom/oracle/svm/hosted/substitute/ComputedValueField;
astore 13
start local 13 16: aload 0
aload 9
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 13
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.tryAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/function/Supplier;)Z
ifeq 22
17: getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 9
aload 6
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportSuccessfulAutomaticRecomputation:(Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/String;)V
18: iconst_1
istore 10
19: aload 0
aload 1
aload 9
aload 6
aload 3
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processArrayIndexShiftFromField:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;Lorg/graalvm/compiler/nodes/StructuredGraph;)Z
istore 11
end local 13 end local 12 20: goto 22
21: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType org.graalvm.compiler.nodes.Invoke org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.api.replacements.SnippetReflectionProvider java.util.List java.lang.Class org.graalvm.compiler.nodes.ValueNode com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult jdk.vm.ci.meta.ResolvedJavaField int int
StackMap stack:
aload 0
aload 1
aload 2
aload 6
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processArrayIndexShiftFromLocal:(Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/lang/Class;)Z
istore 11
22: StackMap locals:
StackMap stack:
iload 10
ifne 25
iload 11
ifne 25
23: aload 8
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.illegalUseFound:Z
ifeq 25
24: aload 0
aload 1
aload 9
aload 2
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 5
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportUnsuccessfulAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Lorg/graalvm/compiler/nodes/Invoke;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)V
25: StackMap locals:
StackMap stack:
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 26 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 26 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 26 2 unsafeArrayIndexScale Lorg/graalvm/compiler/nodes/Invoke;
0 26 3 clinitGraph Lorg/graalvm/compiler/nodes/StructuredGraph;
1 26 4 snippetReflectionProvider Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
2 26 5 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
3 26 6 arrayClass Ljava/lang/Class<*>;
4 26 7 arrayClassArgument Lorg/graalvm/compiler/nodes/ValueNode;
9 26 8 result Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
10 26 9 indexScaleField Ljdk/vm/ci/meta/ResolvedJavaField;
11 26 10 indexScaleComputed Z
12 26 11 indexShiftComputed Z
15 20 12 finalArrayClass Ljava/lang/Class<*>;
16 20 13 supplier Ljava/util/function/Supplier<Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;
MethodParameters:
Name Flags
type
unsafeArrayIndexScale
clinitGraph
private boolean processArrayIndexShiftFromField(jdk.vm.ci.meta.ResolvedJavaType, jdk.vm.ci.meta.ResolvedJavaField, java.lang.Class<?>, org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;Lorg/graalvm/compiler/nodes/StructuredGraph;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
ldc Lorg/graalvm/compiler/nodes/java/LoadFieldNode;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 6
goto 5
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType jdk.vm.ci.meta.ResolvedJavaField java.lang.Class org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
1: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.java.LoadFieldNode
astore 5
start local 5 2: aload 5
invokevirtual org.graalvm.compiler.nodes.java.LoadFieldNode.field:()Ljdk/vm/ci/meta/ResolvedJavaField;
aload 2
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 5
3: aload 0
aload 1
aload 3
aload 5
iconst_1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processArrayIndexShift:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljava/lang/Class;Lorg/graalvm/compiler/nodes/ValueNode;Z)Z
ifeq 5
4: iconst_1
ireturn
end local 5 5: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
6: iconst_0
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 7 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 7 2 indexScaleField Ljdk/vm/ci/meta/ResolvedJavaField;
0 7 3 arrayClass Ljava/lang/Class<*>;
0 7 4 clinitGraph Lorg/graalvm/compiler/nodes/StructuredGraph;
2 5 5 load Lorg/graalvm/compiler/nodes/java/LoadFieldNode;
Signature: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class<*>;Lorg/graalvm/compiler/nodes/StructuredGraph;)Z
MethodParameters:
Name Flags
type
indexScaleField
arrayClass
clinitGraph
private boolean processArrayIndexShiftFromLocal(jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.Invoke, java.lang.Class<?>);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/lang/Class;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 3
aload 2
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
iconst_0
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.processArrayIndexShift:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljava/lang/Class;Lorg/graalvm/compiler/nodes/ValueNode;Z)Z
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 1 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 1 2 unsafeArrayIndexScale Lorg/graalvm/compiler/nodes/Invoke;
0 1 3 arrayClass Ljava/lang/Class<*>;
Signature: (Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/Invoke;Ljava/lang/Class<*>;)Z
MethodParameters:
Name Flags
type
unsafeArrayIndexScale
arrayClass
private boolean processArrayIndexShift(jdk.vm.ci.meta.ResolvedJavaType, java.lang.Class<?>, org.graalvm.compiler.nodes.ValueNode, );
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljava/lang/Class;Lorg/graalvm/compiler/nodes/ValueNode;Z)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=15, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
ldc Lorg/graalvm/compiler/nodes/java/MethodCallTargetNode;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
astore 5
start local 5 1: aload 5
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 7
goto 28
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType java.lang.Class org.graalvm.compiler.nodes.ValueNode int org.graalvm.compiler.graph.iterators.NodeIterable top java.util.Iterator
StackMap stack:
2: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.java.MethodCallTargetNode
astore 6
start local 6 3: aload 6
invokevirtual org.graalvm.compiler.nodes.java.MethodCallTargetNode.invoke:()Lorg/graalvm/compiler/nodes/Invoke;
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.integerNumberOfLeadingZerosMethod:Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isInvokeTo:(Lorg/graalvm/compiler/nodes/Invoke;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
ifeq 28
4: aconst_null
astore 8
start local 8 5: aconst_null
astore 9
start local 9 6: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 10
start local 10 7: aload 6
invokevirtual org.graalvm.compiler.nodes.java.MethodCallTargetNode.invoke:()Lorg/graalvm/compiler/nodes/Invoke;
astore 11
start local 11 8: aload 11
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual org.graalvm.compiler.nodes.FixedNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
ldc Lorg/graalvm/compiler/nodes/calc/SubNode;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
astore 12
start local 12 9: aload 12
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmpne 17
10: aload 12
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.calc.SubNode
astore 13
start local 13 11: aload 13
aload 11
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.subNodeComputesLog2:(Lorg/graalvm/compiler/nodes/calc/SubNode;Lorg/graalvm/compiler/nodes/Invoke;)Z
ifeq 15
12: aload 13
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 10
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.extractValueStoreField:(Lorg/graalvm/compiler/nodes/ValueNode;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
astore 8
13: aload 8
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.valueStoreField:Ljdk/vm/ci/meta/ResolvedJavaField;
astore 9
14: goto 18
15: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType java.lang.Class org.graalvm.compiler.nodes.ValueNode int org.graalvm.compiler.graph.iterators.NodeIterable org.graalvm.compiler.nodes.java.MethodCallTargetNode java.util.Iterator com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult jdk.vm.ci.meta.ResolvedJavaField java.util.List org.graalvm.compiler.nodes.Invoke org.graalvm.compiler.graph.iterators.NodeIterable org.graalvm.compiler.nodes.calc.SubNode
StackMap stack:
aload 10
new java.lang.StringBuilder
dup
ldc "The index array scale value provided by "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is not used to calculate the array index shift."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 13 16: goto 18
17: StackMap locals:
StackMap stack:
aload 10
new java.lang.StringBuilder
dup
ldc "The call to "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual org.graalvm.compiler.nodes.java.MethodCallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
ldc "%H.%n(%p)"
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " has multiple uses."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
18: StackMap locals:
StackMap stack:
aload 9
ifnull 24
19: aload 9
astore 13
start local 13 20: aload 13
aload 2
invokedynamic get(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Ljava/util/function/Supplier;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
com/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor.lambda$3(Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Lcom/oracle/svm/hosted/substitute/ComputedValueField; (6)
()Lcom/oracle/svm/hosted/substitute/ComputedValueField;
astore 14
start local 14 21: aload 0
aload 9
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 14
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.tryAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/function/Supplier;)Z
ifeq 28
22: getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 9
aload 2
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportSuccessfulAutomaticRecomputation:(Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/String;)V
23: iconst_1
ireturn
end local 14 end local 13 24: StackMap locals:
StackMap stack:
iload 4
ifne 28
25: aload 8
ifnull 26
aload 8
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.illegalUseFound:Z
ifne 27
StackMap locals:
StackMap stack:
26: aload 10
invokeinterface java.util.List.isEmpty:()Z
ifne 28
27: StackMap locals:
StackMap stack:
aload 0
aload 1
aconst_null
aload 11
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 10
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportUnsuccessfulAutomaticRecomputation:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Lorg/graalvm/compiler/nodes/Invoke;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)V
end local 12 end local 11 end local 10 end local 9 end local 8 end local 6 28: StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaType java.lang.Class org.graalvm.compiler.nodes.ValueNode int org.graalvm.compiler.graph.iterators.NodeIterable top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
29: iconst_0
ireturn
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 30 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 30 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 30 2 arrayClass Ljava/lang/Class<*>;
0 30 3 indexScaleValue Lorg/graalvm/compiler/nodes/ValueNode;
0 30 4 silentFailure Z
1 30 5 loadMethodCallTargetUsages Lorg/graalvm/compiler/graph/iterators/NodeIterable<Lorg/graalvm/compiler/nodes/java/MethodCallTargetNode;>;
3 28 6 methodCallTarget Lorg/graalvm/compiler/nodes/java/MethodCallTargetNode;
5 28 8 result Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
6 28 9 indexShiftField Ljdk/vm/ci/meta/ResolvedJavaField;
7 28 10 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
8 28 11 numberOfLeadingZerosInvoke Lorg/graalvm/compiler/nodes/Invoke;
9 28 12 numberOfLeadingZerosInvokeSubUsages Lorg/graalvm/compiler/graph/iterators/NodeIterable<Lorg/graalvm/compiler/nodes/calc/SubNode;>;
11 16 13 subNode Lorg/graalvm/compiler/nodes/calc/SubNode;
20 24 13 finalIndexShiftField Ljdk/vm/ci/meta/ResolvedJavaField;
21 24 14 supplier Ljava/util/function/Supplier<Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;
Signature: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljava/lang/Class<*>;Lorg/graalvm/compiler/nodes/ValueNode;Z)Z
MethodParameters:
Name Flags
type
arrayClass
indexScaleValue
silentFailure
private static boolean subNodeComputesLog2(org.graalvm.compiler.nodes.calc.SubNode, org.graalvm.compiler.nodes.Invoke);
descriptor: (Lorg/graalvm/compiler/nodes/calc/SubNode;Lorg/graalvm/compiler/nodes/Invoke;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.SubNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 2
start local 2 1: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.SubNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 3
start local 3 2: aload 2
invokevirtual org.graalvm.compiler.nodes.ValueNode.isJavaConstant:()Z
ifeq 7
aload 2
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
if_acmpne 7
3: aload 2
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
checkcast jdk.vm.ci.meta.PrimitiveConstant
astore 4
start local 4 4: aload 4
invokevirtual jdk.vm.ci.meta.PrimitiveConstant.asInt:()I
bipush 31
if_icmpne 7
5: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$assertionsDisabled:Z
ifne 6
aload 3
aload 1
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode jdk.vm.ci.meta.PrimitiveConstant
StackMap stack:
iconst_1
ireturn
end local 4 7: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.ValueNode.isJavaConstant:()Z
ifeq 12
aload 3
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
if_acmpne 12
8: aload 3
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
checkcast jdk.vm.ci.meta.PrimitiveConstant
astore 4
start local 4 9: aload 4
invokevirtual jdk.vm.ci.meta.PrimitiveConstant.asInt:()I
bipush 31
if_icmpne 12
10: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$assertionsDisabled:Z
ifne 11
aload 2
aload 1
invokeinterface org.graalvm.compiler.nodes.Invoke.asNode:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals: jdk.vm.ci.meta.PrimitiveConstant
StackMap stack:
iconst_1
ireturn
end local 4 12: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 subNode Lorg/graalvm/compiler/nodes/calc/SubNode;
0 13 1 numberOfLeadingZerosInvokeNode Lorg/graalvm/compiler/nodes/Invoke;
1 13 2 xValueNode Lorg/graalvm/compiler/nodes/ValueNode;
2 13 3 yValueNode Lorg/graalvm/compiler/nodes/ValueNode;
4 7 4 xValueConstant Ljdk/vm/ci/meta/PrimitiveConstant;
9 12 4 yValueConstant Ljdk/vm/ci/meta/PrimitiveConstant;
MethodParameters:
Name Flags
subNode
numberOfLeadingZerosInvokeNode
private static com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult extractValueStoreField(org.graalvm.compiler.nodes.ValueNode, com.oracle.svm.core.annotate.RecomputeFieldValue$Kind, java.util.List<java.lang.String>);
descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: iconst_0
istore 4
start local 4 2: aload 0
invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 6
goto 24
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int top java.util.Iterator
StackMap stack:
3: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 5
start local 5 4: aload 5
instanceof org.graalvm.compiler.nodes.java.StoreFieldNode
ifeq 7
aload 3
ifnonnull 7
5: aload 5
checkcast org.graalvm.compiler.nodes.java.StoreFieldNode
invokevirtual org.graalvm.compiler.nodes.java.StoreFieldNode.field:()Ljdk/vm/ci/meta/ResolvedJavaField;
astore 3
6: goto 24
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
7: aload 5
instanceof org.graalvm.compiler.nodes.calc.SignExtendNode
ifeq 20
aload 3
ifnonnull 20
8: aload 5
checkcast org.graalvm.compiler.nodes.calc.SignExtendNode
astore 7
start local 7 9: aload 7
invokevirtual org.graalvm.compiler.nodes.calc.SignExtendNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 9
goto 18
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.calc.SignExtendNode top java.util.Iterator
StackMap stack:
10: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 8
start local 8 11: aload 8
instanceof org.graalvm.compiler.nodes.java.StoreFieldNode
ifeq 14
aload 3
ifnonnull 14
12: aload 8
checkcast org.graalvm.compiler.nodes.java.StoreFieldNode
invokevirtual org.graalvm.compiler.nodes.java.StoreFieldNode.field:()Ljdk/vm/ci/meta/ResolvedJavaField;
astore 3
13: goto 18
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.calc.SignExtendNode org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
14: aload 8
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isAllowedUnsafeValueSink:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 16
15: goto 18
16: StackMap locals:
StackMap stack:
iconst_1
istore 4
17: goto 25
end local 8 18: StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.calc.SignExtendNode top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
end local 7 19: goto 24
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
20: aload 5
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isAllowedUnsafeValueSink:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 22
21: goto 24
22: StackMap locals:
StackMap stack:
iconst_1
istore 4
23: goto 25
end local 5 24: StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
25: StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int
StackMap stack:
aload 3
ifnull 37
iload 4
ifne 37
26: aload 3
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.isStatic:()Z
ifeq 28
aload 3
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.isFinal:()Z
ifeq 28
27: aload 3
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.foundField:(Ljdk/vm/ci/meta/ResolvedJavaField;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
areturn
28: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "The field "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ", where the value produced by the "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.kindAsString:(Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
29: ldc " computation is stored, is not"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.isStatic:()Z
ifne 30
ldc " static"
goto 31
StackMap locals:
StackMap stack: java.lang.StringBuilder
30: ldc ""
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int
StackMap stack: java.lang.StringBuilder java.lang.String
31: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.isFinal:()Z
ifne 32
ldc " final"
goto 33
StackMap locals:
StackMap stack: java.lang.StringBuilder
32: ldc ""
StackMap locals: org.graalvm.compiler.nodes.ValueNode com.oracle.svm.core.annotate.RecomputeFieldValue$Kind java.util.List jdk.vm.ci.meta.ResolvedJavaField int
StackMap stack: java.lang.StringBuilder java.lang.String
33: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
34: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
start local 5 35: aload 2
aload 5
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
36: invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.foundIllegalUse:()Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
areturn
end local 5 37: StackMap locals:
StackMap stack:
iload 4
ifeq 54
38: aload 0
instanceof org.graalvm.compiler.nodes.Invoke
ifeq 43
39: aload 0
checkcast org.graalvm.compiler.nodes.Invoke
astore 7
start local 7 40: new java.lang.StringBuilder
dup
ldc "call to "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
ldc "%H.%n(%p)"
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.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;
astore 5
start local 5 41: ldc "call"
astore 6
end local 7 start local 6 42: goto 48
end local 6 end local 5 StackMap locals:
StackMap stack:
43: aload 0
instanceof org.graalvm.compiler.nodes.calc.SubNode
ifeq 47
44: new java.lang.StringBuilder
dup
ldc "subtraction operation "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
start local 5 45: ldc "subtraction"
astore 6
start local 6 46: goto 48
end local 6 end local 5 47: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
start local 5 start local 6 48: StackMap locals: java.lang.String java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Could not determine the field where the value produced by the "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
49: ldc " for the "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.kindAsString:(Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " computation is stored. The "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
50: ldc " is not directly followed by a field store or by a sign extend node followed directly by a field store. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
51: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 7
start local 7 52: aload 2
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
53: invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.foundIllegalUse:()Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
areturn
end local 7 end local 6 end local 5 54: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult.didNotFindIllegalUse:()Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 55 0 valueNode Lorg/graalvm/compiler/nodes/ValueNode;
0 55 1 substitutionKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
0 55 2 unsuccessfulReasons Ljava/util/List<Ljava/lang/String;>;
1 55 3 offsetField Ljdk/vm/ci/meta/ResolvedJavaField;
2 55 4 illegalUseFound Z
4 24 5 valueNodeUsage Lorg/graalvm/compiler/graph/Node;
9 19 7 signExtendNode Lorg/graalvm/compiler/nodes/calc/SignExtendNode;
11 18 8 signExtendNodeUsage Lorg/graalvm/compiler/graph/Node;
35 37 5 message Ljava/lang/String;
41 43 5 producer Ljava/lang/String;
45 47 5 producer Ljava/lang/String;
48 54 5 producer Ljava/lang/String;
42 43 6 operation Ljava/lang/String;
46 47 6 operation Ljava/lang/String;
48 54 6 operation Ljava/lang/String;
40 42 7 invokeNode Lorg/graalvm/compiler/nodes/Invoke;
52 54 7 message Ljava/lang/String;
Signature: (Lorg/graalvm/compiler/nodes/ValueNode;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List<Ljava/lang/String;>;)Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor$SearchResult;
MethodParameters:
Name Flags
valueNode
substitutionKind
unsuccessfulReasons
private static boolean isAllowedUnsafeValueSink(org.graalvm.compiler.graph.Node);
descriptor: (Lorg/graalvm/compiler/graph/Node;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
instanceof org.graalvm.compiler.nodes.FrameState
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
instanceof org.graalvm.compiler.nodes.java.MethodCallTargetNode
ifeq 7
3: aload 0
checkcast org.graalvm.compiler.nodes.java.MethodCallTargetNode
astore 1
start local 1 4: aload 1
invokevirtual org.graalvm.compiler.nodes.java.MethodCallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 2
start local 2 5: aload 2
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.resolvedUnsafeClass:Ljdk/vm/ci/meta/ResolvedJavaType;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 7
6: iconst_1
ireturn
end local 2 end local 1 7: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 valueNodeUsage Lorg/graalvm/compiler/graph/Node;
4 7 1 methodCallTarget Lorg/graalvm/compiler/nodes/java/MethodCallTargetNode;
5 7 2 targetMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
MethodParameters:
Name Flags
valueNodeUsage
private boolean tryAutomaticRecomputation(jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.core.annotate.RecomputeFieldValue$Kind, java.util.function.Supplier<com.oracle.svm.hosted.substitute.ComputedValueField>);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/function/Supplier;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
aload 1
invokevirtual com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.isDeleted:(Ljdk/vm/ci/meta/ResolvedJavaField;)Z
ifeq 4
1: new java.lang.StringBuilder
dup
ldc "The field "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " is marked as deleted. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 2: aload 1
aload 2
aload 4
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportConflictingSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/String;)V
3: iconst_0
ireturn
end local 4 4: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
aload 1
invokevirtual com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.findSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaField;)Ljava/util/Optional;
astore 4
start local 4 5: aload 4
invokevirtual java.util.Optional.isPresent:()Z
ifeq 24
6: aload 4
invokevirtual java.util.Optional.get:()Ljava/lang/Object;
checkcast jdk.vm.ci.meta.ResolvedJavaField
astore 5
start local 5 7: aload 5
instanceof com.oracle.svm.hosted.substitute.ComputedValueField
ifeq 21
8: aload 5
checkcast com.oracle.svm.hosted.substitute.ComputedValueField
astore 6
start local 6 9: aload 6
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getRecomputeValueKind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 2
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.equals:(Ljava/lang/Object;)Z
ifeq 12
10: aload 5
aload 6
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportUnnecessarySubstitution:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/hosted/substitute/ComputedValueField;)V
11: iconst_0
ireturn
12: StackMap locals: java.util.Optional jdk.vm.ci.meta.ResolvedJavaField com.oracle.svm.hosted.substitute.ComputedValueField
StackMap stack:
aload 6
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getRecomputeValueKind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.None:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.equals:(Ljava/lang/Object;)Z
ifeq 16
13: aload 0
aload 6
aload 3
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast com.oracle.svm.hosted.substitute.ComputedValueField
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.addSubstitutionField:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/hosted/substitute/ComputedValueField;)V
14: aload 5
aload 2
aload 6
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getAnnotated:()Ljdk/vm/ci/meta/ResolvedJavaField;
aload 6
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getRecomputeValueKind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportOvewrittenSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;)V
15: iconst_1
ireturn
16: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Detected RecomputeFieldValue."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getRecomputeValueKind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
17: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getAnnotated:()Ljdk/vm/ci/meta/ResolvedJavaField;
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution field. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 7
start local 7 19: aload 5
aload 2
aload 7
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportConflictingSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/String;)V
20: iconst_0
ireturn
end local 7 end local 6 21: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Detected "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution field. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
start local 6 22: aload 5
aload 2
aload 6
invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.reportConflictingSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/String;)V
23: iconst_0
ireturn
end local 6 end local 5 24: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 3
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast com.oracle.svm.hosted.substitute.ComputedValueField
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.addSubstitutionField:(Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/hosted/substitute/ComputedValueField;)V
25: iconst_1
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 26 1 field Ljdk/vm/ci/meta/ResolvedJavaField;
0 26 2 kind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
0 26 3 substitutionSupplier Ljava/util/function/Supplier<Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;
2 4 4 conflictingSubstitution Ljava/lang/String;
5 26 4 annotationSubstitution Ljava/util/Optional<Ljdk/vm/ci/meta/ResolvedJavaField;>;
7 24 5 substitutionField Ljdk/vm/ci/meta/ResolvedJavaField;
9 21 6 computedSubstitutionField Lcom/oracle/svm/hosted/substitute/ComputedValueField;
19 21 7 conflictingSubstitution Ljava/lang/String;
22 24 6 conflictingSubstitution Ljava/lang/String;
Signature: (Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/function/Supplier<Lcom/oracle/svm/hosted/substitute/ComputedValueField;>;)Z
MethodParameters:
Name Flags
field
kind
substitutionSupplier
private static void reportSkippedSubstitution(jdk.vm.ci.meta.ResolvedJavaType);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_3
if_icmplt 5
1: new java.lang.StringBuilder
dup
ldc "Warning: Skipped automatic unsafe substitutions analysis for type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: ldc ". The entire type is substituted, therefore its class initializer is eliminated."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
3: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
start local 1 4: getstatic java.lang.System.out:Ljava/io/PrintStream;
aload 1
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 1 5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 type Ljdk/vm/ci/meta/ResolvedJavaType;
4 5 1 msg Ljava/lang/String;
MethodParameters:
Name Flags
type
private static void reportUnnecessarySubstitution(jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.hosted.substitute.ComputedValueField);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/hosted/substitute/ComputedValueField;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_1
if_icmplt 9
1: aload 1
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getRecomputeValueKind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
astore 2
start local 2 2: new java.lang.StringBuilder
dup
ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 3: aload 1
invokevirtual com.oracle.svm.hosted.substitute.ComputedValueField.getAnnotated:()Ljdk/vm/ci/meta/ResolvedJavaField;
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 4: aload 0
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 5: new java.lang.StringBuilder
dup
ldc "Warning: Detected unnecessary "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
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
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution field for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ". "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
start local 6 6: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "The annotated field can be removed. This "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " computation can be detected automatically. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
7: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Use option -H:+"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getName:()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;
iconst_2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " to print all automatically detected substitutions. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
8: getstatic java.lang.System.out:Ljava/io/PrintStream;
aload 6
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 6 end local 5 end local 4 end local 3 end local 2 9: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 offsetField Ljdk/vm/ci/meta/ResolvedJavaField;
0 10 1 computedSubstitutionField Lcom/oracle/svm/hosted/substitute/ComputedValueField;
2 9 2 kind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
3 9 3 kindStr Ljava/lang/String;
4 9 4 annotatedFieldStr Ljava/lang/String;
5 9 5 offsetFieldStr Ljava/lang/String;
6 9 6 msg Ljava/lang/String;
MethodParameters:
Name Flags
offsetField
computedSubstitutionField
private static void reportSuccessfulAutomaticRecomputation(com.oracle.svm.core.annotate.RecomputeFieldValue$Kind, jdk.vm.ci.meta.ResolvedJavaField, java.lang.String);
descriptor: (Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/String;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_2
if_icmplt 5
1: new java.lang.StringBuilder
dup
ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 2: aload 1
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 3: new java.lang.StringBuilder
dup
ldc "Info:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution automatically registered for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ", target element "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
start local 5 4: getstatic java.lang.System.out:Ljava/io/PrintStream;
aload 5
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 5 end local 4 end local 3 5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 substitutionKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
0 6 1 substitutedField Ljdk/vm/ci/meta/ResolvedJavaField;
0 6 2 target Ljava/lang/String;
2 5 3 substitutionKindStr Ljava/lang/String;
3 5 4 substitutedFieldStr Ljava/lang/String;
4 5 5 msg Ljava/lang/String;
MethodParameters:
Name Flags
substitutionKind
substitutedField
target
private static void reportOvewrittenSubstitution(jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.core.annotate.RecomputeFieldValue$Kind, jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.core.annotate.RecomputeFieldValue$Kind);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_2
if_icmplt 8
1: new java.lang.StringBuilder
dup
ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 2: new java.lang.StringBuilder
dup
ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
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;
astore 5
start local 5 3: aload 0
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
astore 6
start local 6 4: aload 2
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
astore 7
start local 7 5: new java.lang.StringBuilder
dup
ldc "Info: The "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution was overwritten. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 8
start local 8 6: new java.lang.StringBuilder
dup
aload 8
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "A "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " was automatically registered."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 8
7: getstatic java.lang.System.out:Ljava/io/PrintStream;
aload 8
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 8 end local 7 end local 6 end local 5 end local 4 8: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 offsetField Ljdk/vm/ci/meta/ResolvedJavaField;
0 9 1 newKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
0 9 2 overwrittenField Ljdk/vm/ci/meta/ResolvedJavaField;
0 9 3 overwrittenKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
2 8 4 newKindStr Ljava/lang/String;
3 8 5 overwrittenKindStr Ljava/lang/String;
4 8 6 offsetFieldStr Ljava/lang/String;
5 8 7 overwrittenFieldStr Ljava/lang/String;
6 8 8 msg Ljava/lang/String;
MethodParameters:
Name Flags
offsetField
newKind
overwrittenField
overwrittenKind
private static void reportConflictingSubstitution(jdk.vm.ci.meta.ResolvedJavaField, com.oracle.svm.core.annotate.RecomputeFieldValue$Kind, java.lang.String);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/String;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_1
if_icmplt 7
1: aload 0
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 2: new java.lang.StringBuilder
dup
ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 3: new java.lang.StringBuilder
dup
ldc "Warning: The "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " substitution for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " could not be recomputed automatically because a conflicting substitution was detected. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
start local 5 4: new java.lang.StringBuilder
dup
aload 5
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Conflicting substitution: "
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 5
5: new java.lang.StringBuilder
dup
aload 5
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Add a "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " manual substitution for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ". "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
6: getstatic java.lang.System.out:Ljava/io/PrintStream;
aload 5
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 5 end local 4 end local 3 7: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 field Ljdk/vm/ci/meta/ResolvedJavaField;
0 8 1 substitutionKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
0 8 2 conflictingSubstitution Ljava/lang/String;
2 7 3 fieldStr Ljava/lang/String;
3 7 4 substitutionKindStr Ljava/lang/String;
4 7 5 msg Ljava/lang/String;
MethodParameters:
Name Flags
field
substitutionKind
conflictingSubstitution
private void reportUnsuccessfulAutomaticRecomputation(jdk.vm.ci.meta.ResolvedJavaType, jdk.vm.ci.meta.ResolvedJavaField, org.graalvm.compiler.nodes.Invoke, com.oracle.svm.core.annotate.RecomputeFieldValue$Kind, java.util.List<java.lang.String>);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Lorg/graalvm/compiler/nodes/Invoke;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: ldc ""
astore 6
start local 6 1: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_1
if_icmplt 15
2: aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.suppressWarningsFor:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifeq 3
getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_3
if_icmplt 15
3: StackMap locals: java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 7
start local 7 4: aload 3
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
ldc "%H.%n(%p)"
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.format:(Ljava/lang/String;)Ljava/lang/String;
astore 8
start local 8 5: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " automatic substitution failed. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
6: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "The automatic substitution registration was attempted because "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
7: aload 4
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
if_acmpne 10
8: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "an "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " computation followed by a call to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
9: goto 11
10: StackMap locals: java.lang.String java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "a call to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
11: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "was detected in the static initializer of "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokeinterface jdk.vm.ci.meta.ResolvedJavaType.toJavaName:()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;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
12: aload 2
ifnull 14
13: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Add a "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " manual substitution for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
ldc "%H.%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaField.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;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
14: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Detailed failure reason(s): "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
ldc ", "
invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
end local 8 end local 7 15: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options.UnsafeAutomaticSubstitutionsLogLevel:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iconst_3
if_icmplt 27
16: aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.suppressWarningsFor:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifeq 27
17: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "(This warning is suppressed by default because this type "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
18: aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.warningsAreWhiteListed:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifeq 21
19: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "is manually added to a white list"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
20: goto 26
StackMap locals:
StackMap stack:
21: aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isAliased:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifeq 24
22: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "is aliased"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
23: goto 26
24: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.findSubstitutionType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
astore 7
start local 7 25: new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "is substituted by "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 7
invokeinterface jdk.vm.ci.meta.ResolvedJavaType.toJavaName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
end local 7 26: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 6
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
27: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.lang.String.isEmpty:()Z
ifne 29
28: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Warning: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
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
29: StackMap locals:
StackMap stack:
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 30 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 30 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
0 30 2 computedField Ljdk/vm/ci/meta/ResolvedJavaField;
0 30 3 invoke Lorg/graalvm/compiler/nodes/Invoke;
0 30 4 substitutionKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
0 30 5 reasons Ljava/util/List<Ljava/lang/String;>;
1 30 6 msg Ljava/lang/String;
4 15 7 substitutionKindStr Ljava/lang/String;
5 15 8 invokeStr Ljava/lang/String;
25 26 7 substitutionType Ljdk/vm/ci/meta/ResolvedJavaType;
Signature: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaField;Lorg/graalvm/compiler/nodes/Invoke;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/util/List<Ljava/lang/String;>;)V
MethodParameters:
Name Flags
type
computedField
invoke
substitutionKind
reasons
private static java.lang.String kindAsString(com.oracle.svm.core.annotate.RecomputeFieldValue$Kind);
descriptor: (Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: invokestatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$SWITCH_TABLE$com$oracle$svm$core$annotate$RecomputeFieldValue$Kind:()[I
aload 0
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iaload
tableswitch { // 5 - 8
5: 1
6: 2
7: 3
8: 4
default: 5
}
1: StackMap locals:
StackMap stack:
ldc "field offset"
areturn
2: StackMap locals:
StackMap stack:
ldc "array base offset"
areturn
3: StackMap locals:
StackMap stack:
ldc "array index scale"
areturn
4: StackMap locals:
StackMap stack:
ldc "array index shift"
areturn
5: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Unexpected substitution kind: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 substitutionKind Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
MethodParameters:
Name Flags
substitutionKind
private boolean suppressWarningsFor(jdk.vm.ci.meta.ResolvedJavaType);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.warningsAreWhiteListed:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifne 1
aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.isAliased:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ifne 1
aload 0
aload 1
invokevirtual com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.findSubstitutionType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
ifnonnull 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 2 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
MethodParameters:
Name Flags
type
private boolean warningsAreWhiteListed(jdk.vm.ci.meta.ResolvedJavaType);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.suppressWarnings:Ljava/util/List;
aload 1
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 1 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
MethodParameters:
Name Flags
type
private jdk.vm.ci.meta.ResolvedJavaType findSubstitutionType(jdk.vm.ci.meta.ResolvedJavaType);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
aload 1
invokevirtual com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.findSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljava/util/Optional;
astore 2
start local 2 1: aload 2
aconst_null
invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.ResolvedJavaType
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 2 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
1 2 2 substTypeOptional Ljava/util/Optional<Ljdk/vm/ci/meta/ResolvedJavaType;>;
MethodParameters:
Name Flags
type
private boolean isAliased(jdk.vm.ci.meta.ResolvedJavaType);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.annotationSubstitutions:Lcom/oracle/svm/hosted/substitute/AnnotationSubstitutionProcessor;
aload 1
invokevirtual com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.isAliased:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 1 1 type Ljdk/vm/ci/meta/ResolvedJavaType;
MethodParameters:
Name Flags
type
private org.graalvm.compiler.nodes.StructuredGraph getStaticInitializerGraph(jdk.vm.ci.meta.ResolvedJavaMethod, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.debug.DebugContext);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/debug/DebugContext;)Lorg/graalvm/compiler/nodes/StructuredGraph;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$assertionsDisabled:Z
ifne 1
aload 1
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.hasBytecodes:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
new org.graalvm.compiler.nodes.StructuredGraph$Builder
dup
aload 2
aload 3
invokespecial org.graalvm.compiler.nodes.StructuredGraph$Builder.<init>:(Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/debug/DebugContext;)V
aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph$Builder.method:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)Lorg/graalvm/compiler/nodes/StructuredGraph$Builder;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph$Builder.build:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 2: new org.graalvm.compiler.phases.tiers.HighTierContext
dup
invokestatic com.oracle.svm.hosted.c.GraalAccess.getOriginalProviders:()Lorg/graalvm/compiler/phases/util/Providers;
aconst_null
getstatic org.graalvm.compiler.phases.OptimisticOptimizations.NONE:Lorg/graalvm/compiler/phases/OptimisticOptimizations;
invokespecial org.graalvm.compiler.phases.tiers.HighTierContext.<init>:(Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/phases/PhaseSuite;Lorg/graalvm/compiler/phases/OptimisticOptimizations;)V
astore 5
start local 5 3: aload 4
getstatic org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.FIXED_DEOPTS:Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.setGuardsStage:(Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;)V
4: new com.oracle.svm.hosted.classinitialization.ClassInitializerGraphBuilderPhase
dup
aload 5
aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.plugins:Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
invokestatic org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.getDefault:(Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;)Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration;
iconst_1
invokevirtual org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.withEagerResolving:(Z)Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration;
5: aload 5
invokevirtual org.graalvm.compiler.phases.tiers.HighTierContext.getOptimisticOptimizations:()Lorg/graalvm/compiler/phases/OptimisticOptimizations;
6: invokespecial com.oracle.svm.hosted.classinitialization.ClassInitializerGraphBuilderPhase.<init>:(Lorg/graalvm/compiler/nodes/spi/CoreProviders;Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration;Lorg/graalvm/compiler/phases/OptimisticOptimizations;)V
astore 6
start local 6 7: aload 6
aload 4
aload 5
invokevirtual org.graalvm.compiler.java.GraphBuilderPhase$Instance.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
8: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
ldc Lorg/graalvm/compiler/nodes/InvokeWithExceptionNode;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 8
goto 12
StackMap locals: com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.options.OptionValues org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.phases.tiers.HighTierContext org.graalvm.compiler.java.GraphBuilderPhase$Instance top java.util.Iterator
StackMap stack:
9: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.InvokeWithExceptionNode
astore 7
start local 7 10: aload 0
getfield com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.noCheckedExceptionsSet:Ljava/util/HashSet;
aload 7
invokevirtual org.graalvm.compiler.nodes.InvokeWithExceptionNode.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
invokevirtual java.util.HashSet.contains:(Ljava/lang/Object;)Z
ifeq 12
11: aload 7
invokevirtual org.graalvm.compiler.nodes.InvokeWithExceptionNode.replaceWithInvoke:()Lorg/graalvm/compiler/nodes/InvokeNode;
pop
end local 7 12: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
13: invokestatic org.graalvm.compiler.phases.common.CanonicalizerPhase.createWithoutReadCanonicalization:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
aload 4
aload 5
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
14: aload 4
areturn
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 15 0 this Lcom/oracle/svm/hosted/substitute/UnsafeAutomaticSubstitutionProcessor;
0 15 1 clinit Ljdk/vm/ci/meta/ResolvedJavaMethod;
0 15 2 options Lorg/graalvm/compiler/options/OptionValues;
0 15 3 debug Lorg/graalvm/compiler/debug/DebugContext;
2 15 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 15 5 context Lorg/graalvm/compiler/phases/tiers/HighTierContext;
7 15 6 builderPhase Lorg/graalvm/compiler/java/GraphBuilderPhase$Instance;
10 12 7 invoke Lorg/graalvm/compiler/nodes/InvokeWithExceptionNode;
MethodParameters:
Name Flags
clinit
options
debug
private static boolean isInvokeTo(org.graalvm.compiler.nodes.Invoke, jdk.vm.ci.meta.ResolvedJavaMethod);
descriptor: (Lorg/graalvm/compiler/nodes/Invoke;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
astore 2
start local 2 3: aload 1
aload 2
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 invoke Lorg/graalvm/compiler/nodes/Invoke;
0 4 1 method Ljdk/vm/ci/meta/ResolvedJavaMethod;
3 4 2 targetMethod Ljdk/vm/ci/meta/ResolvedJavaMethod;
MethodParameters:
Name Flags
invoke
method
static int[] $SWITCH_TABLE$com$oracle$svm$core$annotate$RecomputeFieldValue$Kind();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$SWITCH_TABLE$com$oracle$svm$core$annotate$RecomputeFieldValue$Kind:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.values:()[Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
arraylength
newarray 10
astore 0
2: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayBaseOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 6
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 7
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 8
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.AtomicFieldUpdaterOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 9
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.Custom:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 12
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iconst_5
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FromAlias:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iconst_4
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.Manual:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 11
iastore
24: goto 26
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
25: pop
StackMap locals:
StackMap stack:
26: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.NewInstance:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iconst_3
iastore
27: goto 29
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
28: pop
StackMap locals:
StackMap stack:
29: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.None:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iconst_1
iastore
30: goto 32
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
31: pop
StackMap locals:
StackMap stack:
32: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.Reset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
iconst_2
iastore
33: goto 35
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
34: pop
StackMap locals:
StackMap stack:
35: aload 0
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.TranslateFieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
invokevirtual com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ordinal:()I
bipush 10
iastore
36: goto 38
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
37: pop
StackMap locals:
StackMap stack:
38: aload 0
dup
putstatic com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor.$SWITCH_TABLE$com$oracle$svm$core$annotate$RecomputeFieldValue$Kind:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
17 18 19 Class java.lang.NoSuchFieldError
20 21 22 Class java.lang.NoSuchFieldError
23 24 25 Class java.lang.NoSuchFieldError
26 27 28 Class java.lang.NoSuchFieldError
29 30 31 Class java.lang.NoSuchFieldError
32 33 34 Class java.lang.NoSuchFieldError
35 36 37 Class java.lang.NoSuchFieldError
private static com.oracle.svm.hosted.substitute.ComputedValueField lambda$0(jdk.vm.ci.meta.ResolvedJavaField, java.lang.Class, java.lang.String);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;Ljava/lang/String;)Lcom/oracle/svm/hosted/substitute/ComputedValueField;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=8, locals=3, args_size=3
0: new com.oracle.svm.hosted.substitute.ComputedValueField
dup
aload 0
aconst_null
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.FieldOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 1
aload 2
iconst_0
invokespecial com.oracle.svm.hosted.substitute.ComputedValueField.<init>:(Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/Class;Ljava/lang/String;Z)V
areturn
LocalVariableTable:
Start End Slot Name Signature
private static com.oracle.svm.hosted.substitute.ComputedValueField lambda$1(jdk.vm.ci.meta.ResolvedJavaField, java.lang.Class);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Lcom/oracle/svm/hosted/substitute/ComputedValueField;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=8, locals=2, args_size=2
0: new com.oracle.svm.hosted.substitute.ComputedValueField
dup
aload 0
aconst_null
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayBaseOffset:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 1
aconst_null
iconst_1
invokespecial com.oracle.svm.hosted.substitute.ComputedValueField.<init>:(Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/Class;Ljava/lang/String;Z)V
areturn
LocalVariableTable:
Start End Slot Name Signature
private static com.oracle.svm.hosted.substitute.ComputedValueField lambda$2(jdk.vm.ci.meta.ResolvedJavaField, java.lang.Class);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Lcom/oracle/svm/hosted/substitute/ComputedValueField;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=8, locals=2, args_size=2
0: new com.oracle.svm.hosted.substitute.ComputedValueField
dup
aload 0
aconst_null
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexScale:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 1
aconst_null
iconst_1
invokespecial com.oracle.svm.hosted.substitute.ComputedValueField.<init>:(Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/Class;Ljava/lang/String;Z)V
areturn
LocalVariableTable:
Start End Slot Name Signature
private static com.oracle.svm.hosted.substitute.ComputedValueField lambda$3(jdk.vm.ci.meta.ResolvedJavaField, java.lang.Class);
descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Ljava/lang/Class;)Lcom/oracle/svm/hosted/substitute/ComputedValueField;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=8, locals=2, args_size=2
0: new com.oracle.svm.hosted.substitute.ComputedValueField
dup
aload 0
aconst_null
getstatic com.oracle.svm.core.annotate.RecomputeFieldValue$Kind.ArrayIndexShift:Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
aload 1
aconst_null
iconst_1
invokespecial com.oracle.svm.hosted.substitute.ComputedValueField.<init>:(Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/ResolvedJavaField;Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;Ljava/lang/Class;Ljava/lang/String;Z)V
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "UnsafeAutomaticSubstitutionProcessor.java"
NestMembers:
com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$StaticInitializerInlineInvokePlugin
InnerClasses:
public final Kind = com.oracle.svm.core.annotate.RecomputeFieldValue$Kind of com.oracle.svm.core.annotate.RecomputeFieldValue
public DuringAnalysisAccessImpl = com.oracle.svm.hosted.FeatureImpl$DuringAnalysisAccessImpl of com.oracle.svm.hosted.FeatureImpl
Options = com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$Options of com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor
final SearchResult = com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$SearchResult of com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor
StaticInitializerInlineInvokePlugin = com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor$StaticInitializerInlineInvokePlugin of com.oracle.svm.hosted.substitute.UnsafeAutomaticSubstitutionProcessor
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public Builder = org.graalvm.compiler.debug.DebugContext$Builder of org.graalvm.compiler.debug.DebugContext
public abstract Scope = org.graalvm.compiler.debug.DebugContext$Scope of org.graalvm.compiler.debug.DebugContext
public Instance = org.graalvm.compiler.java.GraphBuilderPhase$Instance of org.graalvm.compiler.java.GraphBuilderPhase
public Builder = org.graalvm.compiler.nodes.StructuredGraph$Builder of org.graalvm.compiler.nodes.StructuredGraph
public final GuardsStage = org.graalvm.compiler.nodes.StructuredGraph$GuardsStage of org.graalvm.compiler.nodes.StructuredGraph
public Plugins = org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins of org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration