Skip to content

Commit cfd8bf1

Browse files
committed
Resolve review comments.
1 parent 2ea10ab commit cfd8bf1

File tree

4 files changed

+12
-38
lines changed

4 files changed

+12
-38
lines changed

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

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ enum InlineDecision {
237237
private Function<ConstantFieldProvider, ConstantFieldProvider> constantFieldProviderWrapper = Function.identity();
238238
private Consumer<CallTreeInfo> blocklistChecker = _ -> {
239239
};
240-
private List<Runnable> afterInstallRuntimeConfig;
240+
private final List<Runnable> afterInstallRuntimeConfigCallbacks = new ArrayList<>();
241241

242242
public HostedProviders getHostedProviders() {
243243
return hostedProviders;
@@ -265,11 +265,8 @@ public void setUniverseFactory(SubstrateUniverseFactory universeFactory) {
265265
* instances.
266266
* </p>
267267
*/
268-
public synchronized void addAfterInstallRuntimeConfigCallback(Runnable callback) {
269-
if (afterInstallRuntimeConfig == null) {
270-
afterInstallRuntimeConfig = new ArrayList<>();
271-
}
272-
afterInstallRuntimeConfig.add(callback);
268+
public void addAfterInstallRuntimeConfigCallback(Runnable callback) {
269+
afterInstallRuntimeConfigCallbacks.add(callback);
273270
}
274271

275272
@SuppressWarnings("unused")
@@ -455,15 +452,7 @@ public void beforeAnalysis(BeforeAnalysisAccess c) {
455452
BeforeAnalysisAccessImpl config = (BeforeAnalysisAccessImpl) c;
456453
installRuntimeConfig(config);
457454

458-
List<Runnable> callbacks;
459-
synchronized (this) {
460-
if (afterInstallRuntimeConfig != null) {
461-
callbacks = List.copyOf(afterInstallRuntimeConfig);
462-
} else {
463-
callbacks = List.of();
464-
}
465-
}
466-
for (Runnable callback : callbacks) {
455+
for (Runnable callback : afterInstallRuntimeConfigCallbacks) {
467456
callback.run();
468457
}
469458

substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/TruffleFeature.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -235,14 +235,6 @@ public boolean getAsBoolean() {
235235
private final Set<ResolvedJavaMethod> warnMethods;
236236
private final Set<Pair<ResolvedJavaMethod, String>> neverPartOfCompilationViolations;
237237
Set<AnalysisMethod> runtimeCompiledMethods;
238-
/**
239-
* Holds the {@link KnownTruffleTypes} instance, which is initialized lazily after
240-
* {@link RuntimeCompilationFeature#beforeAnalysis(BeforeAnalysisAccess)} completes runtime
241-
* configuration setup.
242-
*
243-
* @see RuntimeCompilationFeature#addAfterInstallRuntimeConfigCallback(Runnable)
244-
*/
245-
private volatile KnownTruffleTypes types;
246238

247239
public TruffleFeature() {
248240
blocklistMethods = new HashSet<>();
@@ -251,10 +243,6 @@ public TruffleFeature() {
251243
neverPartOfCompilationViolations = ConcurrentHashMap.newKeySet();
252244
}
253245

254-
public KnownTruffleTypes getTypes() {
255-
return types;
256-
}
257-
258246
@Override
259247
public void registerForeignCalls(SubstrateForeignCallsProvider foreignCalls) {
260248
foreignCalls.register(SubstrateThreadLocalHandshake.FOREIGN_POLL);
@@ -307,9 +295,9 @@ public void afterRegistration(AfterRegistrationAccess access) {
307295
RuntimeCompilationFeature runtimeCompilationFeature = RuntimeCompilationFeature.singleton();
308296
runtimeCompilationFeature.addAfterInstallRuntimeConfigCallback(() -> {
309297
Providers providers = TruffleRuntimeCompilationSupport.getRuntimeConfig().getProviders();
310-
types = new SubstrateKnownTruffleTypes(truffleRuntime, providers.getMetaAccess(), providers.getConstantReflection());
298+
ImageSingletons.add(KnownTruffleTypes.class, new SubstrateKnownTruffleTypes(truffleRuntime, providers.getMetaAccess(), providers.getConstantReflection()));
311299
});
312-
runtimeCompilationFeature.setUniverseFactory(new SubstrateTruffleUniverseFactory(truffleRuntime, this));
300+
runtimeCompilationFeature.setUniverseFactory(new SubstrateTruffleUniverseFactory(truffleRuntime));
313301
}
314302

315303
@Override
@@ -402,7 +390,7 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
402390
truffleRuntime.initializeHostedKnownMethods(config.getUniverse().getOriginalMetaAccess());
403391

404392
PartialEvaluator partialEvaluator = truffleCompiler.getPartialEvaluator();
405-
registerKnownTruffleFields(config, types);
393+
registerKnownTruffleFields(config, ImageSingletons.lookup(KnownTruffleTypes.class));
406394
GraphBuilderConfiguration graphBuilderConfig = partialEvaluator.getGraphBuilderConfigPrototype();
407395

408396
TruffleAllowInliningPredicate allowInliningPredicate = new TruffleAllowInliningPredicate(runtimeCompilationFeature.getHostedProviders().getReplacements(),

substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/TruffleSupport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ protected static TruffleCompilerConfiguration createSubstrateTruffleCompilerConf
106106
final GraphBuilderConfiguration.Plugins graphBuilderPlugins = runtimeCompilationFeature.getHostedProviders().getGraphBuilderPlugins();
107107
SubstrateBackend substrateBackend = TruffleRuntimeCompilationSupport.getRuntimeConfig().getBackendForNormalMethod();
108108
substrateBackend.setRuntimeToRuntimeInvokeMethod(optimizedCallTargetMethod);
109-
KnownTruffleTypes types = ImageSingletons.lookup(TruffleFeature.class).getTypes();
109+
KnownTruffleTypes types = ImageSingletons.lookup(KnownTruffleTypes.class);
110110
final TruffleTierConfiguration firstTier = new TruffleTierConfiguration(new EconomyPartialEvaluatorConfiguration(), substrateBackend,
111111
TruffleRuntimeCompilationSupport.getFirstTierProviders(), TruffleRuntimeCompilationSupport.getFirstTierSuites(), TruffleRuntimeCompilationSupport.getFirstTierLirSuites(),
112112
types);

substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstrateTruffleUniverseFactory.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.oracle.graal.pointsto.meta.AnalysisType;
3232
import com.oracle.svm.core.hub.DynamicHub;
3333
import com.oracle.svm.graal.meta.SubstrateType;
34-
import com.oracle.svm.truffle.TruffleFeature;
3534
import com.oracle.svm.util.OriginalClassProvider;
3635
import org.graalvm.nativeimage.ImageSingletons;
3736
import org.graalvm.nativeimage.Platform;
@@ -62,16 +61,14 @@ public final class SubstrateTruffleUniverseFactory extends SubstrateUniverseFact
6261
private final SubstrateTruffleRuntime truffleRuntime;
6362
private final ConcurrentMap<PartialEvaluationMethodInfo, PartialEvaluationMethodInfo> canonicalMethodInfos = new ConcurrentHashMap<>();
6463
private final ConcurrentMap<ConstantFieldInfo, ConstantFieldInfo> canonicalFieldInfos = new ConcurrentHashMap<>();
65-
private final TruffleFeature truffleFeature;
6664

67-
public SubstrateTruffleUniverseFactory(SubstrateTruffleRuntime truffleRuntime, TruffleFeature truffleFeature) {
65+
public SubstrateTruffleUniverseFactory(SubstrateTruffleRuntime truffleRuntime) {
6866
this.truffleRuntime = truffleRuntime;
69-
this.truffleFeature = truffleFeature;
7067
}
7168

7269
@Override
7370
public SubstrateMethod createMethod(AnalysisMethod aMethod, ImageCodeInfo imageCodeInfo, HostedStringDeduplication stringTable) {
74-
PartialEvaluationMethodInfo peInfo = createPartialEvaluationMethodInfo(truffleRuntime, aMethod, truffleFeature.getTypes());
71+
PartialEvaluationMethodInfo peInfo = createPartialEvaluationMethodInfo(truffleRuntime, aMethod, ImageSingletons.lookup(KnownTruffleTypes.class));
7572
PartialEvaluationMethodInfo canonicalPeInfo = canonicalMethodInfos.computeIfAbsent(peInfo, k -> k);
7673
/*
7774
* A collection of all the flags that Truffle needs for partial evaluation. Most of this
@@ -86,7 +83,7 @@ public SubstrateMethod createMethod(AnalysisMethod aMethod, ImageCodeInfo imageC
8683
public SubstrateField createField(AnalysisField aField, HostedStringDeduplication stringTable) {
8784
SubstrateAnnotationExtractor extractor = (SubstrateAnnotationExtractor) ImageSingletons.lookup(AnnotationExtractor.class);
8885
Map<ResolvedJavaType, AnnotationValue> annotations = extractor.getDeclaredAnnotationValues(aField);
89-
ConstantFieldInfo fieldInfo = PartialEvaluator.computeConstantFieldInfo(aField, annotations, truffleFeature.getTypes(), OriginalClassProvider::getOriginalType);
86+
ConstantFieldInfo fieldInfo = PartialEvaluator.computeConstantFieldInfo(aField, annotations, ImageSingletons.lookup(KnownTruffleTypes.class), OriginalClassProvider::getOriginalType);
9087
ConstantFieldInfo canonicalFieldInfo = fieldInfo == null ? null : canonicalFieldInfos.computeIfAbsent(fieldInfo, k -> k);
9188
return new SubstrateTruffleField(aField, stringTable, canonicalFieldInfo);
9289
}
@@ -95,7 +92,7 @@ public SubstrateField createField(AnalysisField aField, HostedStringDeduplicatio
9592
public SubstrateType createType(AnalysisType analysisType, DynamicHub hub) {
9693
SubstrateAnnotationExtractor extractor = (SubstrateAnnotationExtractor) ImageSingletons.lookup(AnnotationExtractor.class);
9794
Map<ResolvedJavaType, AnnotationValue> annotations = extractor.getDeclaredAnnotationValues(analysisType);
98-
boolean valueType = annotations.containsKey(OriginalClassProvider.getOriginalType(truffleFeature.getTypes().CompilerDirectives_ValueType));
95+
boolean valueType = annotations.containsKey(OriginalClassProvider.getOriginalType(ImageSingletons.lookup(KnownTruffleTypes.class).CompilerDirectives_ValueType));
9996
return new SubstrateTruffleType(analysisType.getJavaKind(), hub, valueType);
10097
}
10198

0 commit comments

Comments
 (0)