Skip to content

Commit 89bb920

Browse files
committed
Use version specific ClassLoaderSupportImpl classes instead of overlaying class ClassLoaderSupportFeature
1 parent 730d026 commit 89bb920

File tree

4 files changed

+40
-31
lines changed

4 files changed

+40
-31
lines changed

substratevm/src/com.oracle.svm.hosted.jdk11/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public class NativeImageClassLoaderSupport extends AbstractNativeImageClassLoade
5959
private final List<Path> buildmp;
6060

6161
private final ClassLoader classLoader;
62-
final ModuleLayer moduleLayerForImageBuild;
62+
public final ModuleLayer moduleLayerForImageBuild;
6363

6464
NativeImageClassLoaderSupport(ClassLoader defaultSystemClassLoader, String[] classpath, String[] modulePath) {
6565
super(defaultSystemClassLoader, classpath);
@@ -244,7 +244,7 @@ Optional<String> getMainClassFromModule(Object module) {
244244
}
245245

246246
@Override
247-
ClassLoader getClassLoader() {
247+
public ClassLoader getClassLoader() {
248248
return classLoader;
249249
}
250250

substratevm/src/com.oracle.svm.hosted.jdk11/src/com/oracle/svm/hosted/ClassLoaderSupportFeature.java renamed to substratevm/src/com.oracle.svm.hosted.jdk11/src/com/oracle/svm/hosted/jdk11/ClassLoaderSupportImplJDK11OrLater.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* questions.
2424
*/
2525

26-
package com.oracle.svm.hosted;
26+
package com.oracle.svm.hosted.jdk11;
2727

2828
import java.util.ArrayDeque;
2929
import java.util.ArrayList;
@@ -45,26 +45,18 @@
4545

4646
import com.oracle.svm.core.ClassLoaderSupport;
4747
import com.oracle.svm.core.annotate.AutomaticFeature;
48-
import com.oracle.svm.core.util.VMError;
48+
import com.oracle.svm.hosted.FeatureImpl;
49+
import com.oracle.svm.hosted.NativeImageClassLoaderSupport;
50+
import com.oracle.svm.hosted.NativeImageSystemClassLoader;
4951

5052
import jdk.internal.module.Modules;
5153

52-
@AutomaticFeature
53-
public class ClassLoaderSupportFeature implements Feature {
54-
@Override
55-
public void afterRegistration(AfterRegistrationAccess a) {
56-
VMError.guarantee(JavaVersionUtil.JAVA_SPEC > 8);
57-
FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a;
58-
ImageSingletons.add(ClassLoaderSupport.class, new ClassLoaderSupportImpl11(access.getImageClassLoader().classLoaderSupport));
59-
}
60-
}
61-
62-
final class ClassLoaderSupportImpl11 extends ClassLoaderSupport {
54+
public final class ClassLoaderSupportImplJDK11OrLater extends ClassLoaderSupport {
6355

6456
private final NativeImageClassLoaderSupport classLoaderSupport;
6557
private final Map<String, Set<Module>> packageToModules;
6658

67-
ClassLoaderSupportImpl11(NativeImageClassLoaderSupport classLoaderSupport) {
59+
ClassLoaderSupportImplJDK11OrLater(NativeImageClassLoaderSupport classLoaderSupport) {
6860
this.classLoaderSupport = classLoaderSupport;
6961
packageToModules = new HashMap<>();
7062
buildPackageToModulesMap(classLoaderSupport);
@@ -102,7 +94,7 @@ public List<ResourceBundle> getResourceBundle(String bundleSpec, Locale locale)
10294
}
10395
ArrayList<ResourceBundle> resourceBundles = new ArrayList<>();
10496
for (Module module : modules) {
105-
Module exportTargetModule = ClassLoaderSupportImpl8.class.getModule();
97+
Module exportTargetModule = ClassLoaderSupportImplJDK11OrLater.class.getModule();
10698
if (!module.isExported(packageName, exportTargetModule)) {
10799
Modules.addOpens(module, packageName, exportTargetModule);
108100
}
@@ -172,3 +164,17 @@ private void addToPackageNameModules(Module moduleName, String packageName) {
172164
}
173165

174166
}
167+
168+
@AutomaticFeature
169+
class ClassLoaderSupportFeatureJDK11OrLater implements Feature {
170+
@Override
171+
public boolean isInConfiguration(IsInConfigurationAccess access) {
172+
return JavaVersionUtil.JAVA_SPEC >= 11;
173+
}
174+
175+
@Override
176+
public void afterRegistration(AfterRegistrationAccess a) {
177+
FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a;
178+
ImageSingletons.add(ClassLoaderSupport.class, new ClassLoaderSupportImplJDK11OrLater(access.getImageClassLoader().classLoaderSupport));
179+
}
180+
}
Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,12 @@
3636

3737
import com.oracle.svm.core.ClassLoaderSupport;
3838
import com.oracle.svm.core.annotate.AutomaticFeature;
39-
import com.oracle.svm.core.util.VMError;
4039

41-
@AutomaticFeature
42-
public class ClassLoaderSupportFeature implements Feature {
43-
@Override
44-
public void afterRegistration(AfterRegistrationAccess a) {
45-
VMError.guarantee(JavaVersionUtil.JAVA_SPEC <= 8);
46-
FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a;
47-
ImageSingletons.add(ClassLoaderSupport.class, new ClassLoaderSupportImpl8(access.getImageClassLoader().classLoaderSupport));
48-
}
49-
}
50-
51-
final class ClassLoaderSupportImpl8 extends ClassLoaderSupport {
40+
public final class ClassLoaderSupportImpl extends ClassLoaderSupport {
5241

5342
private final ClassLoader imageClassLoader;
5443

55-
ClassLoaderSupportImpl8(NativeImageClassLoaderSupport classLoaderSupport) {
44+
ClassLoaderSupportImpl(NativeImageClassLoaderSupport classLoaderSupport) {
5645
this.imageClassLoader = classLoaderSupport.getClassLoader();
5746
}
5847

@@ -66,3 +55,17 @@ public List<ResourceBundle> getResourceBundle(String bundleName, Locale locale)
6655
return Collections.singletonList(ResourceBundle.getBundle(bundleName, locale, imageClassLoader));
6756
}
6857
}
58+
59+
@AutomaticFeature
60+
class ClassLoaderSupportFeature implements Feature {
61+
@Override
62+
public boolean isInConfiguration(IsInConfigurationAccess access) {
63+
return JavaVersionUtil.JAVA_SPEC == 8;
64+
}
65+
66+
@Override
67+
public void afterRegistration(AfterRegistrationAccess a) {
68+
FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a;
69+
ImageSingletons.add(ClassLoaderSupport.class, new ClassLoaderSupportImpl(access.getImageClassLoader().classLoaderSupport));
70+
}
71+
}

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ImageClassLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public final class ImageClassLoader {
6969
}
7070

7171
public final Platform platform;
72-
final NativeImageClassLoaderSupport classLoaderSupport;
72+
public final NativeImageClassLoaderSupport classLoaderSupport;
7373

7474
private final EconomicSet<Class<?>> applicationClasses = EconomicSet.create();
7575
private final EconomicSet<Class<?>> hostedOnlyClasses = EconomicSet.create();

0 commit comments

Comments
 (0)