Skip to content

Commit d727a0f

Browse files
committed
Move reflection code to com.oracle.svm.{core,hosted}.reflect.
1 parent 8361841 commit d727a0f

File tree

47 files changed

+168
-245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+168
-245
lines changed

substratevm/mx.substratevm/suite.py

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@
677677
"resources",
678678
],
679679
"dependencies": [
680-
"com.oracle.svm.reflect",
680+
"com.oracle.svm.core",
681681
"mx:JUNIT_TOOL",
682682
],
683683
"checkstyle": "com.oracle.svm.core",
@@ -753,38 +753,11 @@
753753
"testProject": True,
754754
},
755755

756-
"com.oracle.svm.reflect": {
757-
"subDir": "src",
758-
"sourceDirs": ["src"],
759-
"dependencies": [
760-
"com.oracle.svm.hosted",
761-
],
762-
"requiresConcealed" : {
763-
"java.base" : [
764-
"sun.invoke.util",
765-
"sun.reflect.annotation",
766-
"sun.reflect.generics.repository",
767-
"jdk.internal.reflect",
768-
"sun.reflect.generics.scope"
769-
],
770-
"jdk.internal.vm.ci" : [
771-
"jdk.vm.ci.code",
772-
],
773-
},
774-
"checkstyle": "com.oracle.svm.core",
775-
"workingSets": "SVM",
776-
"annotationProcessors": [
777-
"compiler:GRAAL_PROCESSOR",
778-
],
779-
"javaCompliance": "11+",
780-
"spotbugs": "false",
781-
},
782-
783756
"com.oracle.svm.methodhandles": {
784757
"subDir": "src",
785758
"sourceDirs": ["src"],
786759
"dependencies": [
787-
"com.oracle.svm.reflect",
760+
"com.oracle.svm.hosted",
788761
],
789762
"requiresConcealed" : {
790763
"java.base" : [
@@ -1014,8 +987,6 @@
1014987
"subDir": "src",
1015988
"sourceDirs": ["src"],
1016989
"dependencies": [
1017-
"com.oracle.svm.core",
1018-
"com.oracle.svm.reflect",
1019990
"com.oracle.svm.graal",
1020991
"compiler:GRAAL"
1021992
],
@@ -1142,7 +1113,6 @@
11421113
"com.oracle.svm.core.windows",
11431114
"com.oracle.svm.core.genscavenge",
11441115
"com.oracle.svm.core.containers",
1145-
"com.oracle.svm.reflect",
11461116
"com.oracle.svm.methodhandles"
11471117
],
11481118
"manifestEntries" : {
@@ -1170,7 +1140,7 @@
11701140
"com.oracle.svm.core.graal.nodes to jdk.internal.vm.compiler",
11711141
"com.oracle.svm.core.graal.snippets to jdk.internal.vm.compiler",
11721142
"com.oracle.svm.hosted.fieldfolding to jdk.internal.vm.compiler",
1173-
"com.oracle.svm.reflect.hosted to jdk.internal.vm.compiler",
1143+
"com.oracle.svm.hosted.reflect to jdk.internal.vm.compiler",
11741144
],
11751145
"requires": [
11761146
"java.management",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.reflect.proxy;
25+
package com.oracle.svm.core.reflect.proxy;
2626

2727
import java.lang.reflect.InvocationHandler;
2828
import java.util.Arrays;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* or visit www.oracle.com if you need additional information or have any
2424
* questions.
2525
*/
26-
package com.oracle.svm.reflect.serialize;
26+
package com.oracle.svm.core.reflect.serialize;
2727

2828
public interface SerializationRegistry {
2929

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* or visit www.oracle.com if you need additional information or have any
2424
* questions.
2525
*/
26-
package com.oracle.svm.reflect.serialize;
26+
package com.oracle.svm.core.reflect.serialize;
2727

2828
import java.io.Serializable;
2929
import java.lang.invoke.SerializedLambda;

substratevm/src/com.oracle.svm.reflect/src/com/oracle/svm/reflect/proxy/hosted/package-info.java renamed to substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/reflect/target/EncodedReflectionMetadataSupplier.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2022, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -22,9 +22,24 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25+
package com.oracle.svm.core.reflect.target;
2526

26-
@Platforms(Platform.HOSTED_ONLY.class)
27-
package com.oracle.svm.reflect.proxy.hosted;
27+
import java.lang.reflect.AccessibleObject;
28+
import java.lang.reflect.Executable;
29+
import java.lang.reflect.Method;
2830

2931
import org.graalvm.nativeimage.Platform;
3032
import org.graalvm.nativeimage.Platforms;
33+
34+
@Platforms(Platform.HOSTED_ONLY.class)
35+
public interface EncodedReflectionMetadataSupplier {
36+
byte[] getAnnotationsEncoding(AccessibleObject object);
37+
38+
byte[] getParameterAnnotationsEncoding(Executable object);
39+
40+
byte[] getAnnotationDefaultEncoding(Method object);
41+
42+
byte[] getTypeAnnotationsEncoding(AccessibleObject object);
43+
44+
byte[] getReflectParametersEncoding(Executable object);
45+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.reflect.hosted;
25+
package com.oracle.svm.core.reflect.target;
2626

2727
import java.lang.reflect.Executable;
2828

@@ -47,6 +47,6 @@ public RecomputeFieldValue.ValueAvailability valueAvailability() {
4747

4848
@Override
4949
public Object compute(MetaAccessProvider metaAccess, ResolvedJavaField original, ResolvedJavaField annotated, Object receiver) {
50-
return ImageSingletons.lookup(ReflectionFeature.class).getOrCreateAccessor((Executable) receiver);
50+
return ImageSingletons.lookup(ReflectionSubstitutionSupport.class).getOrCreateAccessor((Executable) receiver);
5151
}
5252
}
Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.reflect.hosted;
25+
package com.oracle.svm.core.reflect.target;
2626

2727
import java.lang.reflect.Field;
2828

29+
import org.graalvm.nativeimage.ImageSingletons;
30+
2931
import com.oracle.svm.core.annotate.RecomputeFieldValue;
3032
import com.oracle.svm.core.annotate.RecomputeFieldValue.CustomFieldValueComputer;
31-
import com.oracle.svm.core.util.VMError;
32-
import com.oracle.svm.hosted.meta.HostedField;
33-
import com.oracle.svm.hosted.meta.HostedMetaAccess;
3433

3534
import jdk.vm.ci.meta.MetaAccessProvider;
3635
import jdk.vm.ci.meta.ResolvedJavaField;
@@ -44,21 +43,7 @@ public RecomputeFieldValue.ValueAvailability valueAvailability() {
4443

4544
@Override
4645
public Object compute(MetaAccessProvider metaAccess, ResolvedJavaField original, ResolvedJavaField annotated, Object receiver) {
47-
VMError.guarantee(metaAccess instanceof HostedMetaAccess, "Field offset computation must be done during compilation.");
48-
49-
/*
50-
* We have to use `optionalLookupJavaField` as fields are omitted when there is no
51-
* reflective access in an image.
52-
*/
53-
HostedField hostedField = ((HostedMetaAccess) metaAccess).optionalLookupJavaField((Field) receiver);
54-
if (hostedField != null && hostedField.wrapped.isUnsafeAccessed()) {
55-
int location = hostedField.getLocation();
56-
VMError.guarantee(location > 0, "Incorrect field location: " + location + " for " + hostedField.format("%H.%n"));
57-
return location;
58-
} else {
59-
/* A value of -1 signals that the field was not marked as unsafe accessed. */
60-
return -1;
61-
}
46+
return ImageSingletons.lookup(ReflectionSubstitutionSupport.class).getFieldOffset((Field) receiver);
6247
}
6348

6449
@Override
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.reflect.target;
25+
package com.oracle.svm.core.reflect.target;
2626

2727
import com.oracle.svm.core.SubstrateUtil;
2828
import com.oracle.svm.core.util.VMError;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.reflect.hosted;
25+
package com.oracle.svm.core.reflect.target;
2626

2727
import com.oracle.svm.core.annotate.RecomputeFieldValue;
2828

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.reflect.target;
25+
package com.oracle.svm.core.reflect.target;
2626

2727
import java.lang.reflect.Array;
2828
import java.lang.reflect.Constructor;
@@ -47,13 +47,12 @@
4747
import com.oracle.svm.core.reflect.ReflectionMetadataDecoder;
4848
import com.oracle.svm.core.reflect.Target_java_lang_reflect_RecordComponent;
4949
import com.oracle.svm.core.util.ByteArrayReader;
50-
import com.oracle.svm.reflect.hosted.ReflectionMetadataEncoderImpl;
5150

5251
/**
5352
* This class performs the parsing of reflection metadata at runtime. The encoding formats are
5453
* specified as comments above each parsing method.
5554
*
56-
* See {@link ReflectionMetadataEncoderImpl} for details about the emission of the metadata.
55+
* See {@code ReflectionMetadataEncoderImpl} for details about the emission of the metadata.
5756
*/
5857
public class ReflectionMetadataDecoderImpl implements ReflectionMetadataDecoder {
5958
public static final int NO_METHOD_METADATA = -1;

0 commit comments

Comments
 (0)