Skip to content

Commit d4646cb

Browse files
committed
[GR-70564] Fix native-image-configure to properly register types from JNI sections as JNI accessed
PullRequest: graal/22330
2 parents 84c96ca + 29b780f commit d4646cb

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

substratevm/src/com.oracle.svm.configure/src/com/oracle/svm/configure/LegacyReflectionConfigurationParser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ protected void parseClass(EconomicMap<String, Object> data) {
9797
C queryCondition = isType ? conditionResolver.alwaysTrue() : condition;
9898
T clazz = result.get();
9999
delegate.registerType(conditionResult.get(), clazz);
100+
if (jniParser) {
101+
delegate.registerAsJniAccessed(condition, clazz);
102+
}
100103

101104
registerIfNotDefault(data, false, clazz, "allDeclaredConstructors", () -> delegate.registerDeclaredConstructors(condition, false, jniParser, clazz));
102105
registerIfNotDefault(data, false, clazz, "allPublicConstructors", () -> delegate.registerPublicConstructors(condition, false, jniParser, clazz));

substratevm/src/com.oracle.svm.configure/src/com/oracle/svm/configure/ReflectionMetadataParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ protected void parseClass(EconomicMap<String, Object> data) {
106106
if (!jniParser) {
107107
registerIfNotDefault(data, false, clazz, "serializable", () -> delegate.registerAsSerializable(condition, clazz));
108108
registerIfNotDefault(data, false, clazz, "jniAccessible", () -> delegate.registerAsJniAccessed(condition, clazz));
109+
} else {
110+
delegate.registerAsJniAccessed(condition, clazz);
109111
}
110112

111113
registerIfNotDefault(data, false, clazz, "allDeclaredConstructors", () -> delegate.registerDeclaredConstructors(condition, false, typeJniAccessible, clazz));

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/config/JNIRegistryAdapter.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,6 @@ public void registerAsSerializable(AccessCondition condition, Class<?> clazz) {
140140
VMError.shouldNotReachHere("serializable cannot be set on JNI registrations");
141141
}
142142

143-
@Override
144-
public void registerAsJniAccessed(AccessCondition condition, Class<?> clazz) {
145-
VMError.shouldNotReachHere("jniAccessible cannot be set on JNI registrations");
146-
}
147-
148143
private static void ensureJniAccessible(boolean jniAccessible) {
149144
VMError.guarantee(jniAccessible, "JNIRegistryAdapter can only be used for JNI queries");
150145
}

0 commit comments

Comments
 (0)