Skip to content

Commit bc9c66d

Browse files
committed
[GR-71224] Move JVMCI reachability API to com.oracle.svm.util
PullRequest: graal/22559
2 parents 4c737d8 + f4d6ba8 commit bc9c66d

File tree

16 files changed

+178
-58
lines changed

16 files changed

+178
-58
lines changed

substratevm/mx.substratevm/suite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2305,7 +2305,7 @@
23052305
"org.graalvm.collections",
23062306
],
23072307
"exports" : [
2308-
"""com.oracle.svm.util to org.graalvm.nativeimage.pointsto,
2308+
"""com.oracle.svm.util* to org.graalvm.nativeimage.pointsto,
23092309
org.graalvm.nativeimage.builder,
23102310
org.graalvm.nativeimage.configure,
23112311
org.graalvm.nativeimage.librarysupport,
Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,60 +24,49 @@
2424
*/
2525
package com.oracle.svm.hosted.dynamicaccess;
2626

27-
import java.lang.reflect.Executable;
28-
import java.lang.reflect.Field;
29-
3027
import org.graalvm.nativeimage.dynamicaccess.AccessCondition;
3128

3229
import com.oracle.svm.hosted.JNIAccessImpl;
3330
import com.oracle.svm.util.OriginalClassProvider;
3431
import com.oracle.svm.util.OriginalFieldProvider;
3532
import com.oracle.svm.util.OriginalMethodProvider;
33+
import com.oracle.svm.util.dynamicaccess.JVMCIJNIAccess;
3634

3735
import jdk.vm.ci.meta.ResolvedJavaField;
3836
import jdk.vm.ci.meta.ResolvedJavaMethod;
3937
import jdk.vm.ci.meta.ResolvedJavaType;
4038

41-
/**
42-
* Mirror of {@link org.graalvm.nativeimage.dynamicaccess.JNIAccess} using JVMCI types.
43-
*/
44-
public final class JVMCIJNIAccess {
39+
public final class JVMCIJNIAccessImpl implements JVMCIJNIAccess {
4540

4641
private final JNIAccessImpl jniInstance;
4742
private static JVMCIJNIAccess instance;
4843

49-
private JVMCIJNIAccess() {
44+
private JVMCIJNIAccessImpl() {
5045
jniInstance = JNIAccessImpl.singleton();
5146
}
5247

5348
public static JVMCIJNIAccess singleton() {
5449
if (instance == null) {
55-
instance = new JVMCIJNIAccess();
50+
instance = new JVMCIJNIAccessImpl();
5651
}
5752
return instance;
5853
}
5954

60-
/**
61-
* @see org.graalvm.nativeimage.dynamicaccess.JNIAccess#register(AccessCondition, Class...)
62-
*/
55+
@Override
6356
public void register(AccessCondition condition, ResolvedJavaType... types) {
6457
for (ResolvedJavaType type : types) {
6558
jniInstance.register(condition, OriginalClassProvider.getJavaClass(type));
6659
}
6760
}
6861

69-
/**
70-
* @see org.graalvm.nativeimage.dynamicaccess.JNIAccess#register(AccessCondition, Executable...)
71-
*/
62+
@Override
7263
public void register(AccessCondition condition, ResolvedJavaMethod... methods) {
7364
for (ResolvedJavaMethod method : methods) {
7465
jniInstance.register(condition, OriginalMethodProvider.getJavaMethod(method));
7566
}
7667
}
7768

78-
/**
79-
* @see org.graalvm.nativeimage.dynamicaccess.JNIAccess#register(AccessCondition, Field...)
80-
*/
69+
@Override
8170
public void register(AccessCondition condition, ResolvedJavaField... fields) {
8271
for (ResolvedJavaField field : fields) {
8372
jniInstance.register(condition, OriginalFieldProvider.getJavaField(field));
Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,80 +24,65 @@
2424
*/
2525
package com.oracle.svm.hosted.dynamicaccess;
2626

27-
import java.lang.reflect.Executable;
28-
import java.lang.reflect.Field;
2927
import java.util.ArrayList;
3028
import java.util.List;
3129

3230
import org.graalvm.nativeimage.dynamicaccess.AccessCondition;
33-
import org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess;
3431

3532
import com.oracle.svm.hosted.ReflectiveAccessImpl;
3633
import com.oracle.svm.util.OriginalClassProvider;
3734
import com.oracle.svm.util.OriginalFieldProvider;
3835
import com.oracle.svm.util.OriginalMethodProvider;
36+
import com.oracle.svm.util.dynamicaccess.JVMCIReflectiveAccess;
3937

4038
import jdk.vm.ci.meta.ResolvedJavaField;
4139
import jdk.vm.ci.meta.ResolvedJavaMethod;
4240
import jdk.vm.ci.meta.ResolvedJavaType;
4341

44-
/**
45-
* Mirror of {@link ReflectiveAccess} using JVMCI types.
46-
*/
47-
public final class JVMCIReflectiveAccess {
42+
public final class JVMCIReflectiveAccessImpl implements JVMCIReflectiveAccess {
4843
private final ReflectiveAccessImpl rdaInstance;
4944
private static JVMCIReflectiveAccess instance;
5045

51-
private JVMCIReflectiveAccess() {
46+
private JVMCIReflectiveAccessImpl() {
5247
rdaInstance = ReflectiveAccessImpl.singleton();
5348
}
5449

5550
public static JVMCIReflectiveAccess singleton() {
5651
if (instance == null) {
57-
instance = new JVMCIReflectiveAccess();
52+
instance = new JVMCIReflectiveAccessImpl();
5853
}
5954
return instance;
6055
}
6156

62-
/**
63-
* @see ReflectiveAccess#register(AccessCondition, Class...)
64-
*/
57+
@Override
6558
public void register(AccessCondition condition, ResolvedJavaType... types) {
6659
for (ResolvedJavaType type : types) {
6760
rdaInstance.register(condition, OriginalClassProvider.getJavaClass(type));
6861
}
6962
}
7063

71-
/**
72-
* @see ReflectiveAccess#register(AccessCondition, Executable...)
73-
*/
64+
@Override
7465
public void register(AccessCondition condition, ResolvedJavaMethod... methods) {
7566
for (ResolvedJavaMethod method : methods) {
7667
rdaInstance.register(condition, OriginalMethodProvider.getJavaMethod(method));
7768
}
7869
}
7970

80-
/**
81-
* @see ReflectiveAccess#register(AccessCondition, Field...)
82-
*/
71+
@Override
8372
public void register(AccessCondition condition, ResolvedJavaField... fields) {
8473
for (ResolvedJavaField field : fields) {
8574
rdaInstance.register(condition, OriginalFieldProvider.getJavaField(field));
8675
}
8776
}
8877

89-
/**
90-
* @see ReflectiveAccess#registerForSerialization(AccessCondition, Class...)
91-
*/
78+
@Override
9279
public void registerForSerialization(AccessCondition condition, ResolvedJavaType... types) {
9380
for (ResolvedJavaType type : types) {
9481
rdaInstance.registerForSerialization(condition, OriginalClassProvider.getJavaClass(type));
9582
}
9683
}
9784

98-
/**
99-
* @see ReflectiveAccess#registerProxy(AccessCondition, Class...)
100-
*/
85+
@Override
10186
public Class<?> registerProxy(AccessCondition condition, ResolvedJavaType... interfaces) {
10287
List<Class<?>> reflectionInterfaces = new ArrayList<>();
10388
for (ResolvedJavaType intf : interfaces) {
@@ -106,9 +91,7 @@ public Class<?> registerProxy(AccessCondition condition, ResolvedJavaType... int
10691
return rdaInstance.registerProxy(condition, reflectionInterfaces.toArray(Class[]::new));
10792
}
10893

109-
/**
110-
* @see ReflectiveAccess#registerForUnsafeAllocation(AccessCondition, Class...)
111-
*/
94+
@Override
11295
public void registerForUnsafeAllocation(AccessCondition condition, ResolvedJavaType... types) {
11396
for (ResolvedJavaType type : types) {
11497
rdaInstance.registerForUnsafeAllocation(condition, OriginalClassProvider.getJavaClass(type));

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JmxClientFeature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
import com.oracle.svm.core.jdk.JNIRegistrationUtil;
3434
import com.oracle.svm.core.util.VMError;
3535
import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl;
36-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeJNIAccess;
37-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeReflection;
3836
import com.oracle.svm.util.JVMCIReflectionUtil;
37+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeJNIAccess;
38+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeReflection;
3939

4040
@AutomaticallyRegisteredFeature
4141
public class JmxClientFeature extends JNIRegistrationUtil implements InternalFeature {

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JmxCommonFeature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3838
import com.oracle.svm.core.feature.InternalFeature;
3939
import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl;
40-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeJNIAccess;
41-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeReflection;
4240
import com.oracle.svm.hosted.reflect.proxy.ProxyRegistry;
4341
import com.oracle.svm.util.JVMCIReflectionUtil;
42+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeJNIAccess;
43+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeReflection;
4444

4545
import jdk.vm.ci.meta.ResolvedJavaMethod;
4646
import jdk.vm.ci.meta.ResolvedJavaType;

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JmxServerFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@
4646
import com.oracle.svm.core.jdk.management.ManagementAgentStartupHook;
4747
import com.oracle.svm.core.jdk.management.ManagementSupport;
4848
import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl;
49-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeReflection;
5049
import com.oracle.svm.hosted.reflect.proxy.ProxyRegistry;
5150
import com.oracle.svm.util.JVMCIReflectionUtil;
51+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeReflection;
5252

5353
import jdk.vm.ci.meta.ResolvedJavaType;
5454

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/snippets/SubstrateGraphBuilderPlugins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@
9898
import com.oracle.svm.hosted.ReachabilityCallbackNode;
9999
import com.oracle.svm.hosted.SharedArenaSupport;
100100
import com.oracle.svm.hosted.code.SubstrateCompilationDirectives;
101-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeReflection;
102101
import com.oracle.svm.hosted.dynamicaccessinference.DynamicAccessInferenceLog;
103102
import com.oracle.svm.hosted.dynamicaccessinference.StrictDynamicAccessInferenceFeature;
104103
import com.oracle.svm.hosted.nodes.DeoptProxyNode;
@@ -108,6 +107,7 @@
108107
import com.oracle.svm.util.JVMCIReflectionUtil;
109108
import com.oracle.svm.util.OriginalClassProvider;
110109
import com.oracle.svm.util.ReflectionUtil;
110+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeReflection;
111111

112112
import jdk.graal.compiler.core.common.CompressEncoding;
113113
import jdk.graal.compiler.core.common.LibGraalSupport;

substratevm/src/com.oracle.svm.polyglot/src/com/oracle/svm/polyglot/scala/ScalaFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
import com.oracle.svm.core.feature.InternalFeature;
3636
import com.oracle.svm.core.util.UserError;
3737
import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl;
38-
import com.oracle.svm.hosted.dynamicaccess.JVMCIRuntimeReflection;
3938
import com.oracle.svm.util.JVMCIReflectionUtil;
4039
import com.oracle.svm.util.ModuleSupport;
40+
import com.oracle.svm.util.dynamicaccess.JVMCIRuntimeReflection;
4141

4242
import jdk.graal.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
4343
import jdk.graal.compiler.phases.util.Providers;

substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,27 @@ public static ResolvedJavaType getResolvedReturnType(ResolvedJavaMethod m) {
251251
}
252252
throw new GraalError("Method does not have a resolved return type: %s", m.format("%H.%n(%p)"));
253253
}
254+
255+
/**
256+
* Gets the type name for a {@link ResolvedJavaType}. This is the same as calling
257+
* {@link Class#getTypeName()} on the underlying class.
258+
* <p>
259+
* Implementation derived from {@link Class#getTypeName()}.
260+
*/
261+
public static String getTypeName(ResolvedJavaType type) {
262+
if (type.isArray()) {
263+
try {
264+
ResolvedJavaType cl = type;
265+
int dimensions = 0;
266+
do {
267+
dimensions++;
268+
cl = cl.getComponentType();
269+
} while (cl.isArray());
270+
return cl.getName().concat("[]".repeat(dimensions));
271+
} catch (Throwable e) {
272+
/* FALLTHRU */
273+
}
274+
}
275+
return type.toClassName();
276+
}
254277
}
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.hosted.dynamicaccess;
25+
package com.oracle.svm.util.dynamicaccess;
2626

2727
import org.graalvm.nativeimage.dynamicaccess.AccessCondition;
2828

0 commit comments

Comments
 (0)