Skip to content

Commit 432cb37

Browse files
committed
Ensure LinkAtBuildTimeSupport is already available after afterRegistration
1 parent 48fbb77 commit 432cb37

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

Diff for: substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/LinkAtBuildTimeFeature.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.Collections;
3232
import java.util.HashMap;
3333
import java.util.HashSet;
34+
import java.util.List;
3435
import java.util.Map;
3536
import java.util.Set;
3637
import java.util.regex.Pattern;
@@ -50,6 +51,7 @@
5051
import com.oracle.svm.core.option.OptionUtils;
5152
import com.oracle.svm.core.option.SubstrateOptionsParser;
5253
import com.oracle.svm.core.util.UserError;
54+
import com.oracle.svm.hosted.jdk.ClassLoaderSupportFeatureJDK11OrLater;
5355

5456
@AutomaticFeature
5557
public final class LinkAtBuildTimeFeature implements Feature {
@@ -73,12 +75,12 @@ static final class Options {
7375
private Map<URI, Module> uriModuleMap;
7476

7577
@Override
76-
public void afterRegistration(AfterRegistrationAccess access) {
77-
ImageSingletons.add(LinkAtBuildTimeSupport.class, new LinkAtBuildTimeSupport(this));
78+
public List<Class<? extends Feature>> getRequiredFeatures() {
79+
return Collections.singletonList(ClassLoaderSupportFeatureJDK11OrLater.class);
7880
}
7981

8082
@Override
81-
public void beforeAnalysis(BeforeAnalysisAccess access) {
83+
public void afterRegistration(AfterRegistrationAccess access) {
8284
classLoaderSupport = ImageSingletons.lookup(ClassLoaderSupport.class);
8385

8486
var loader = ((FeatureImpl.BeforeAnalysisAccessImpl) access).getImageClassLoader();
@@ -95,6 +97,8 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
9597
requireCompletePackageOrClass.put("jdk.internal.reflect", null);
9698

9799
Options.LinkAtBuildTime.getValue().getValuesWithOrigins().forEach(this::extractOptionValue);
100+
101+
ImageSingletons.add(LinkAtBuildTimeSupport.class, new LinkAtBuildTimeSupport(this));
98102
}
99103

100104
private void extractOptionValue(Pair<String, OptionOrigin> valueOrigin) {

Diff for: substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/ClassLoaderSupportImplJDK11OrLater.java renamed to substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/ClassLoaderSupportFeatureJDK11OrLater.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import com.oracle.svm.hosted.FeatureImpl;
5353
import com.oracle.svm.util.ModuleSupport;
5454

55-
public final class ClassLoaderSupportImplJDK11OrLater extends ClassLoaderSupportImpl {
55+
final class ClassLoaderSupportImplJDK11OrLater extends ClassLoaderSupportImpl {
5656

5757
private final NativeImageClassLoaderSupportJDK11OrLater classLoaderSupport;
5858
private final Map<String, Set<Module>> packageToModules;
@@ -165,7 +165,7 @@ private void addToPackageNameModules(Module moduleName, String packageName) {
165165
}
166166

167167
@AutomaticFeature
168-
class ClassLoaderSupportFeatureJDK11OrLater implements Feature {
168+
public class ClassLoaderSupportFeatureJDK11OrLater implements Feature {
169169
@Override
170170
public void afterRegistration(AfterRegistrationAccess a) {
171171
FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a;

0 commit comments

Comments
 (0)