Skip to content

Commit 714e550

Browse files
[GR-55689] Make native image independent of the host's loop data provider.
PullRequest: graal/18362
2 parents 5f17890 + 60200d4 commit 714e550

File tree

8 files changed

+22
-20
lines changed

8 files changed

+22
-20
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/GraalConfiguration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import java.util.List;
2929
import java.util.ListIterator;
3030

31+
import jdk.graal.compiler.nodes.loop.LoopsDataProviderImpl;
32+
import jdk.graal.compiler.nodes.spi.LoopsDataProvider;
3133
import org.graalvm.collections.EconomicMap;
3234
import org.graalvm.nativeimage.ImageSingletons;
3335

@@ -164,4 +166,8 @@ public void removeDeoptTargetOptimizations(@SuppressWarnings("unused") Suites su
164166
public ListIterator<BasePhase<? super HighTierContext>> createHostedInliners(@SuppressWarnings("unused") PhaseSuite<HighTierContext> highTier) {
165167
return null;
166168
}
169+
170+
public LoopsDataProvider createLoopsDataProvider() {
171+
return new LoopsDataProviderImpl();
172+
}
167173
}

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/meta/RuntimeConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939
import jdk.vm.ci.meta.ResolvedJavaMethod;
4040

4141
/**
42-
* Configuration used by Graal at runtime to compile and install code in the same runtime.
42+
* Configuration used by Graal at runtime to compile and install code in the same runtime. A
43+
* {@code RuntimeConfiguration} is also used at build-time to carry the configuration of the AOT
44+
* compiler.
4345
*/
4446
public final class RuntimeConfiguration {
4547

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/hosted/runtimecompilation/RuntimeCompilationFeature.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
import com.oracle.graal.pointsto.meta.PointsToAnalysisMethod;
6262
import com.oracle.graal.pointsto.phases.InlineBeforeAnalysisPolicy;
6363
import com.oracle.graal.pointsto.util.AnalysisError;
64-
import com.oracle.graal.pointsto.util.GraalAccess;
6564
import com.oracle.graal.pointsto.util.ParallelExecutionException;
6665
import com.oracle.svm.common.meta.MultiMethod;
6766
import com.oracle.svm.core.ParsingReason;
@@ -378,12 +377,11 @@ public void duringSetup(DuringSetupAccess c) {
378377
private void installRuntimeConfig(BeforeAnalysisAccessImpl config) {
379378
Function<Providers, SubstrateBackend> backendProvider = TruffleRuntimeCompilationSupport.getRuntimeBackendProvider();
380379
ClassInitializationSupport classInitializationSupport = config.getHostVM().getClassInitializationSupport();
381-
Providers originalProviders = GraalAccess.getOriginalProviders();
382380
SubstratePlatformConfigurationProvider platformConfig = new SubstratePlatformConfigurationProvider(
383381
ImageSingletons.lookup(BarrierSetProvider.class).createBarrierSet(config.getMetaAccess()));
384382
RuntimeConfiguration runtimeConfig = ImageSingletons.lookup(SubstrateGraalCompilerSetup.class)
385383
.createRuntimeConfigurationBuilder(RuntimeOptionValues.singleton(), config.getHostVM(), config.getUniverse(), config.getMetaAccess(),
386-
backendProvider, classInitializationSupport, originalProviders.getLoopsDataProvider(), platformConfig,
384+
backendProvider, classInitializationSupport, platformConfig,
387385
config.getBigBang().getSnippetReflectionProvider())
388386
.build();
389387

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/hosted/runtimecompilation/SubstrateGraalCompilerSetup.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import com.oracle.svm.hosted.code.SharedRuntimeConfigurationBuilder;
4242

4343
import jdk.graal.compiler.api.replacements.SnippetReflectionProvider;
44-
import jdk.graal.compiler.nodes.spi.LoopsDataProvider;
4544
import jdk.graal.compiler.options.OptionValues;
4645
import jdk.graal.compiler.phases.util.Providers;
4746
import jdk.graal.compiler.word.WordTypes;
@@ -68,9 +67,9 @@ public SubstrateProviders getSubstrateProviders(AnalysisMetaAccess aMetaAccess,
6867
}
6968

7069
public SharedRuntimeConfigurationBuilder createRuntimeConfigurationBuilder(OptionValues options, SVMHost hostVM, AnalysisUniverse aUniverse, UniverseMetaAccess metaAccess,
71-
Function<Providers, SubstrateBackend> backendProvider, ClassInitializationSupport classInitializationSupport, LoopsDataProvider loopsDataProvider,
72-
SubstratePlatformConfigurationProvider platformConfig, SnippetReflectionProvider snippetReflection) {
70+
Function<Providers, SubstrateBackend> backendProvider, ClassInitializationSupport classInitializationSupport, SubstratePlatformConfigurationProvider platformConfig,
71+
SnippetReflectionProvider snippetReflection) {
7372
return new SubstrateRuntimeConfigurationBuilder(options, hostVM, aUniverse, metaAccess, backendProvider, classInitializationSupport,
74-
loopsDataProvider, platformConfig, snippetReflection);
73+
platformConfig, snippetReflection);
7574
}
7675
}

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateRuntimeConfigurationBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ public class SubstrateRuntimeConfigurationBuilder extends SharedRuntimeConfigura
6767
private final AnalysisUniverse aUniverse;
6868

6969
public SubstrateRuntimeConfigurationBuilder(OptionValues options, SVMHost hostVM, AnalysisUniverse aUniverse, UniverseMetaAccess metaAccess,
70-
Function<Providers, SubstrateBackend> backendProvider, ClassInitializationSupport classInitializationSupport, LoopsDataProvider loopsDataProvider,
71-
SubstratePlatformConfigurationProvider platformConfig, SnippetReflectionProvider snippetReflection) {
72-
super(options, hostVM, metaAccess, backendProvider, classInitializationSupport, loopsDataProvider, platformConfig, snippetReflection);
70+
Function<Providers, SubstrateBackend> backendProvider, ClassInitializationSupport classInitializationSupport, SubstratePlatformConfigurationProvider platformConfig,
71+
SnippetReflectionProvider snippetReflection) {
72+
super(options, hostVM, metaAccess, backendProvider, classInitializationSupport, platformConfig, snippetReflection);
7373
this.aUniverse = aUniverse;
7474
}
7575

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ protected void doRun(Map<Method, CEntryPointData> entryPoints, JavaMainSupport j
610610
ClassInitializationSupport classInitializationSupport = bb.getHostVM().getClassInitializationSupport();
611611
SubstratePlatformConfigurationProvider platformConfig = getPlatformConfig(hMetaAccess);
612612
runtimeConfiguration = new HostedRuntimeConfigurationBuilder(options, bb.getHostVM(), hUniverse, hMetaAccess,
613-
bb.getProviders(MultiMethod.ORIGINAL_METHOD), classInitializationSupport, GraalAccess.getOriginalProviders().getLoopsDataProvider(), platformConfig,
613+
bb.getProviders(MultiMethod.ORIGINAL_METHOD), classInitializationSupport, platformConfig,
614614
bb.getSnippetReflectionProvider()).build();
615615

616616
registerGraphBuilderPlugins(featureHandler, runtimeConfiguration, (HostedProviders) runtimeConfiguration.getProviders(), bb.getMetaAccess(), aUniverse,

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/code/HostedRuntimeConfigurationBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ public class HostedRuntimeConfigurationBuilder extends SharedRuntimeConfiguratio
6161
private final HostedProviders analysisProviders;
6262

6363
public HostedRuntimeConfigurationBuilder(OptionValues options, SVMHost hostVM, HostedUniverse universe, HostedMetaAccess metaAccess,
64-
HostedProviders analysisProviders, ClassInitializationSupport classInitializationSupport, LoopsDataProvider originalLoopsDataProvider,
65-
SubstratePlatformConfigurationProvider platformConfig, SnippetReflectionProvider snippetReflection) {
66-
super(options, hostVM, metaAccess, SubstrateBackendFactory.get()::newBackend, classInitializationSupport, originalLoopsDataProvider, platformConfig, snippetReflection);
64+
HostedProviders analysisProviders, ClassInitializationSupport classInitializationSupport, SubstratePlatformConfigurationProvider platformConfig,
65+
SnippetReflectionProvider snippetReflection) {
66+
super(options, hostVM, metaAccess, SubstrateBackendFactory.get()::newBackend, classInitializationSupport, platformConfig, snippetReflection);
6767
this.universe = universe;
6868
this.analysisProviders = analysisProviders;
6969
}

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/code/SharedRuntimeConfigurationBuilder.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,16 @@ public abstract class SharedRuntimeConfigurationBuilder {
7373
protected final UniverseMetaAccess metaAccess;
7474
protected final Function<Providers, SubstrateBackend> backendProvider;
7575
protected final ClassInitializationSupport classInitializationSupport;
76-
protected final LoopsDataProvider originalLoopsDataProvider;
7776
protected final SubstratePlatformConfigurationProvider platformConfig;
7877
protected final SnippetReflectionProvider snippetReflection;
7978

8079
public SharedRuntimeConfigurationBuilder(OptionValues options, SVMHost hostVM, UniverseMetaAccess metaAccess, Function<Providers, SubstrateBackend> backendProvider,
81-
ClassInitializationSupport classInitializationSupport, LoopsDataProvider originalLoopsDataProvider,
82-
SubstratePlatformConfigurationProvider platformConfig, SnippetReflectionProvider snippetReflection) {
80+
ClassInitializationSupport classInitializationSupport, SubstratePlatformConfigurationProvider platformConfig, SnippetReflectionProvider snippetReflection) {
8381
this.options = options;
8482
this.hostVM = hostVM;
8583
this.metaAccess = metaAccess;
8684
this.backendProvider = backendProvider;
8785
this.classInitializationSupport = classInitializationSupport;
88-
this.originalLoopsDataProvider = originalLoopsDataProvider;
8986
this.platformConfig = platformConfig;
9087
this.snippetReflection = snippetReflection;
9188
}
@@ -116,7 +113,7 @@ public final RuntimeConfiguration build() {
116113

117114
LoweringProvider lowerer = createLoweringProvider(foreignCalls, metaAccessExtensionProvider);
118115

119-
LoopsDataProvider loopsDataProvider = originalLoopsDataProvider;
116+
LoopsDataProvider loopsDataProvider = GraalConfiguration.runtimeInstance().createLoopsDataProvider();
120117

121118
/*
122119
* To simplify future merging of IdentityHashCodeProvider into ConstantReflectionProvider,

0 commit comments

Comments
 (0)