Skip to content

Commit 62e516d

Browse files
committed
svm: move JVMCI dynamicaccess API from svm.hosted to svm.util
1 parent 7bc1551 commit 62e516d

File tree

10 files changed

+136
-51
lines changed

10 files changed

+136
-51
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,

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIJNIAccess.java renamed to substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIJNIAccessImpl.java

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));

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIReflectiveAccess.java renamed to substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIReflectiveAccessImpl.java

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/dynamicaccess/JVMCIAccessCondition.java renamed to substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/dynamicaccess/JVMCIAccessCondition.java

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright (c) 2025, 2025, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* This code is free software; you can redistribute it and/or modify it
6+
* under the terms of the GNU General Public License version 2 only, as
7+
* published by the Free Software Foundation. Oracle designates this
8+
* particular file as subject to the "Classpath" exception as provided
9+
* by Oracle in the LICENSE file that accompanied this code.
10+
*
11+
* This code is distributed in the hope that it will be useful, but WITHOUT
12+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+
* version 2 for more details (a copy is included in the LICENSE file that
15+
* accompanied this code).
16+
*
17+
* You should have received a copy of the GNU General Public License version
18+
* 2 along with this work; if not, write to the Free Software Foundation,
19+
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+
*
21+
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+
* or visit www.oracle.com if you need additional information or have any
23+
* questions.
24+
*/
25+
package com.oracle.svm.util.dynamicaccess;
26+
27+
import org.graalvm.nativeimage.dynamicaccess.AccessCondition;
28+
29+
import jdk.vm.ci.meta.ResolvedJavaField;
30+
import jdk.vm.ci.meta.ResolvedJavaMethod;
31+
import jdk.vm.ci.meta.ResolvedJavaType;
32+
33+
public interface JVMCIJNIAccess {
34+
void register(AccessCondition condition, ResolvedJavaType... types);
35+
36+
void register(AccessCondition condition, ResolvedJavaMethod... methods);
37+
38+
void register(AccessCondition condition, ResolvedJavaField... fields);
39+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright (c) 2025, 2025, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* This code is free software; you can redistribute it and/or modify it
6+
* under the terms of the GNU General Public License version 2 only, as
7+
* published by the Free Software Foundation. Oracle designates this
8+
* particular file as subject to the "Classpath" exception as provided
9+
* by Oracle in the LICENSE file that accompanied this code.
10+
*
11+
* This code is distributed in the hope that it will be useful, but WITHOUT
12+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+
* version 2 for more details (a copy is included in the LICENSE file that
15+
* accompanied this code).
16+
*
17+
* You should have received a copy of the GNU General Public License version
18+
* 2 along with this work; if not, write to the Free Software Foundation,
19+
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+
*
21+
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+
* or visit www.oracle.com if you need additional information or have any
23+
* questions.
24+
*/
25+
package com.oracle.svm.util.dynamicaccess;
26+
27+
import org.graalvm.nativeimage.dynamicaccess.AccessCondition;
28+
29+
import jdk.vm.ci.meta.ResolvedJavaField;
30+
import jdk.vm.ci.meta.ResolvedJavaMethod;
31+
import jdk.vm.ci.meta.ResolvedJavaType;
32+
33+
/**
34+
* Mirror of org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess using JVMCI types.
35+
*/
36+
public interface JVMCIReflectiveAccess {
37+
/**
38+
* See org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess#register(AccessCondition,
39+
* Class...).
40+
*/
41+
void register(AccessCondition condition, ResolvedJavaType... types);
42+
43+
/**
44+
* See org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess#register(AccessCondition,
45+
* Executable...).
46+
*/
47+
void register(AccessCondition condition, ResolvedJavaMethod... methods);
48+
49+
/**
50+
* See org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess#register(AccessCondition,
51+
* Field...).
52+
*/
53+
void register(AccessCondition condition, ResolvedJavaField... fields);
54+
55+
/**
56+
* See
57+
* org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess#registerForSerialization(AccessCondition,
58+
* Class...).
59+
*/
60+
void registerForSerialization(AccessCondition condition, ResolvedJavaType... types);
61+
62+
/**
63+
* See org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess#registerProxy(AccessCondition,
64+
* Class...).
65+
*/
66+
Class<?> registerProxy(AccessCondition condition, ResolvedJavaType... interfaces);
67+
68+
/**
69+
* See
70+
* org.graalvm.nativeimage.dynamicaccess.ReflectiveAccess#registerForUnsafeAllocation(AccessCondition,
71+
* Class...).
72+
*/
73+
void registerForUnsafeAllocation(AccessCondition condition, ResolvedJavaType... types);
74+
}

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIRuntimeJNIAccess.java renamed to substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/dynamicaccess/JVMCIRuntimeJNIAccess.java

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 java.lang.reflect.Executable;
2828
import java.lang.reflect.Field;

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIRuntimeProxyCreation.java renamed to substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/dynamicaccess/JVMCIRuntimeProxyCreation.java

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 java.util.Arrays;
2828

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIRuntimeReflection.java renamed to substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/dynamicaccess/JVMCIRuntimeReflection.java

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 java.lang.reflect.Executable;
2828
import java.lang.reflect.Field;

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/dynamicaccess/JVMCIRuntimeSerialization.java renamed to substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/dynamicaccess/JVMCIRuntimeSerialization.java

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 java.util.Arrays;
2828

0 commit comments

Comments
 (0)