Skip to content

Commit f3b4c11

Browse files
committed
[GR-70149] Singleton labeling third batch
PullRequest: graal/22535
2 parents eca01d2 + 6c2c81b commit f3b4c11

File tree

62 files changed

+680
-168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+680
-168
lines changed

substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/GenScavengeGCFeature.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,10 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
144144
ImageSingletons.add(CommittedMemoryProvider.class, createCommittedMemoryProvider());
145145
}
146146

147-
// If building libgraal, set system property showing gc algorithm
148-
SystemPropertiesSupport.singleton().setLibGraalRuntimeProperty("gc", Heap.getHeap().getGC().getName());
147+
if (ImageLayerBuildingSupport.firstImageBuild()) {
148+
// If building libgraal, set system property showing gc algorithm
149+
SystemPropertiesSupport.singleton().setLibGraalRuntimeProperty("gc", Heap.getHeap().getGC().getName());
150+
}
149151

150152
// Needed for the barrier set.
151153
access.registerAsUsed(Object[].class);

substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/AArch64NativePatchConsumerFactory.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,26 @@
2626

2727
import java.util.function.Consumer;
2828

29-
import jdk.graal.compiler.asm.Assembler;
30-
import jdk.graal.compiler.asm.aarch64.AArch64Assembler.SingleInstructionAnnotation;
31-
import jdk.graal.compiler.asm.aarch64.AArch64MacroAssembler;
32-
import jdk.graal.compiler.code.CompilationResult;
3329
import org.graalvm.nativeimage.Platform;
3430
import org.graalvm.nativeimage.Platforms;
3531

32+
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
3633
import com.oracle.svm.core.graal.code.NativeImagePatcher;
3734
import com.oracle.svm.core.graal.code.PatchConsumerFactory;
38-
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
35+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
36+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
37+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
38+
import com.oracle.svm.core.traits.SingletonTraits;
3939
import com.oracle.svm.core.util.VMError;
4040

41+
import jdk.graal.compiler.asm.Assembler;
42+
import jdk.graal.compiler.asm.aarch64.AArch64Assembler.SingleInstructionAnnotation;
43+
import jdk.graal.compiler.asm.aarch64.AArch64MacroAssembler;
44+
import jdk.graal.compiler.code.CompilationResult;
45+
4146
@AutomaticallyRegisteredImageSingleton(PatchConsumerFactory.NativePatchConsumerFactory.class)
4247
@Platforms(Platform.AARCH64.class)
48+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
4349
final class AArch64NativePatchConsumerFactory extends PatchConsumerFactory.NativePatchConsumerFactory {
4450
@Override
4551
public Consumer<Assembler.CodeAnnotation> newConsumer(CompilationResult compilationResult) {

substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64Feature.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,23 +67,13 @@ class SubstrateAArch64Feature implements InternalFeature {
6767
@Override
6868
public void afterRegistration(AfterRegistrationAccess access) {
6969

70-
ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateRegisterConfigFactory() {
71-
@Override
72-
public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
73-
return new SubstrateAArch64RegisterConfig(config, metaAccess, target, preserveFramePointer);
74-
}
75-
});
70+
ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateAArch64RegisterConfigFactory());
7671

7772
ImageSingletons.add(ReservedRegisters.class, new AArch64ReservedRegisters());
7873

7974
if (!SubstrateOptions.useLLVMBackend()) {
8075

81-
ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateBackendFactory() {
82-
@Override
83-
public SubstrateBackend newBackend(Providers newProviders) {
84-
return new SubstrateAArch64Backend(newProviders);
85-
}
86-
});
76+
ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateAArch64BackendFactory());
8777

8878
ImageSingletons.add(SubstrateLoweringProviderFactory.class, new SubstrateAArch64LoweringProviderFactory());
8979

@@ -100,6 +90,22 @@ public void duringSetup(DuringSetupAccess access) {
10090
}
10191
}
10292

93+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
94+
class SubstrateAArch64RegisterConfigFactory implements SubstrateRegisterConfigFactory {
95+
@Override
96+
public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
97+
return new SubstrateAArch64RegisterConfig(config, metaAccess, target, preserveFramePointer);
98+
}
99+
}
100+
101+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
102+
class SubstrateAArch64BackendFactory extends SubstrateBackendFactory {
103+
@Override
104+
public SubstrateBackend newBackend(Providers newProviders) {
105+
return new SubstrateAArch64Backend(newProviders);
106+
}
107+
}
108+
103109
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
104110
class SubstrateAArch64LoweringProviderFactory extends SubstrateVectorArchitectureFactory implements SubstrateLoweringProviderFactory {
105111

substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64SuitesCreatorProvider.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,15 @@
2525
*/
2626
package com.oracle.svm.core.graal.aarch64;
2727

28-
import jdk.graal.compiler.core.phases.EconomyCompilerConfiguration;
29-
3028
import com.oracle.svm.core.graal.code.SubstrateSuitesCreatorProvider;
29+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
30+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
31+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
32+
import com.oracle.svm.core.traits.SingletonTraits;
33+
34+
import jdk.graal.compiler.core.phases.EconomyCompilerConfiguration;
3135

36+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
3237
public class SubstrateAArch64SuitesCreatorProvider extends SubstrateSuitesCreatorProvider {
3338
public SubstrateAArch64SuitesCreatorProvider() {
3439
super(new AArch64SubstrateSuitesCreator(getHostedCompilerConfiguration()),

substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/AMD64NativeImagePatcher.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,26 @@
2626

2727
import java.util.function.Consumer;
2828

29-
import jdk.graal.compiler.asm.Assembler;
30-
import jdk.graal.compiler.asm.amd64.AMD64BaseAssembler.AddressDisplacementAnnotation;
31-
import jdk.graal.compiler.asm.amd64.AMD64BaseAssembler.OperandDataAnnotation;
32-
import jdk.graal.compiler.code.CompilationResult;
3329
import org.graalvm.nativeimage.Platform;
3430
import org.graalvm.nativeimage.Platforms;
3531

32+
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
3633
import com.oracle.svm.core.graal.code.NativeImagePatcher;
3734
import com.oracle.svm.core.graal.code.PatchConsumerFactory;
38-
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
35+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
36+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
37+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
38+
import com.oracle.svm.core.traits.SingletonTraits;
3939
import com.oracle.svm.core.util.VMError;
4040

41+
import jdk.graal.compiler.asm.Assembler;
42+
import jdk.graal.compiler.asm.amd64.AMD64BaseAssembler.AddressDisplacementAnnotation;
43+
import jdk.graal.compiler.asm.amd64.AMD64BaseAssembler.OperandDataAnnotation;
44+
import jdk.graal.compiler.code.CompilationResult;
45+
4146
@AutomaticallyRegisteredImageSingleton(PatchConsumerFactory.NativePatchConsumerFactory.class)
4247
@Platforms(Platform.AMD64.class)
48+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
4349
final class AMD64NativePatchConsumerFactory extends PatchConsumerFactory.NativePatchConsumerFactory {
4450
@Override
4551
public Consumer<Assembler.CodeAnnotation> newConsumer(CompilationResult compilationResult) {

substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/SubstrateAMD64Feature.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,13 @@ class SubstrateAMD64Feature implements InternalFeature {
6868
@Override
6969
public void afterRegistration(AfterRegistrationAccess access) {
7070

71-
ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateRegisterConfigFactory() {
72-
@Override
73-
public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
74-
return new SubstrateAMD64RegisterConfig(config, metaAccess, target, preserveFramePointer);
75-
}
76-
});
71+
ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateAMD64RegisterConfigFactory());
7772

7873
ImageSingletons.add(ReservedRegisters.class, new AMD64ReservedRegisters());
7974

8075
if (!SubstrateOptions.useLLVMBackend()) {
8176

82-
ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateBackendFactory() {
83-
@Override
84-
public SubstrateBackend newBackend(Providers newProviders) {
85-
return new SubstrateAMD64Backend(newProviders);
86-
}
87-
});
77+
ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateAMD64BackendFactory());
8878

8979
ImageSingletons.add(SubstrateLoweringProviderFactory.class, new SubstrateAMD64LoweringProviderFactory());
9080

@@ -101,6 +91,22 @@ public void duringSetup(DuringSetupAccess access) {
10191
}
10292
}
10393

94+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
95+
class SubstrateAMD64RegisterConfigFactory implements SubstrateRegisterConfigFactory {
96+
@Override
97+
public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
98+
return new SubstrateAMD64RegisterConfig(config, metaAccess, target, preserveFramePointer);
99+
}
100+
}
101+
102+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
103+
class SubstrateAMD64BackendFactory extends SubstrateBackendFactory {
104+
@Override
105+
public SubstrateBackend newBackend(Providers newProviders) {
106+
return new SubstrateAMD64Backend(newProviders);
107+
}
108+
}
109+
104110
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
105111
class SubstrateAMD64LoweringProviderFactory extends SubstrateVectorArchitectureFactory implements SubstrateLoweringProviderFactory {
106112

substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/SubstrateAMD64SuitesCreatorProvider.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@
2424
*/
2525
package com.oracle.svm.core.graal.amd64;
2626

27-
import jdk.graal.compiler.core.phases.EconomyCompilerConfiguration;
28-
2927
import com.oracle.svm.core.graal.code.SubstrateSuitesCreatorProvider;
28+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
29+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
30+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
31+
import com.oracle.svm.core.traits.SingletonTraits;
32+
33+
import jdk.graal.compiler.core.phases.EconomyCompilerConfiguration;
3034

35+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
3136
public class SubstrateAMD64SuitesCreatorProvider extends SubstrateSuitesCreatorProvider {
3237
public SubstrateAMD64SuitesCreatorProvider() {
3338
super(new AMD64SubstrateSuitesCreator(getHostedCompilerConfiguration()),

substratevm/src/com.oracle.svm.core.graal.llvm/src/com/oracle/svm/core/graal/llvm/LLVMFeature.java

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -105,32 +105,13 @@ public void afterRegistration(AfterRegistrationAccess access) {
105105

106106
ModuleSupport.accessPackagesToClass(ModuleSupport.Access.EXPORT, LLVMFeature.class, false, "jdk.internal.vm.ci", "jdk.vm.ci.code.site", "jdk.vm.ci.code", "jdk.vm.ci.meta");
107107

108-
ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateBackendFactory() {
109-
@Override
110-
public SubstrateBackend newBackend(Providers newProviders) {
111-
return new SubstrateLLVMBackend(newProviders);
112-
}
113-
});
108+
ImageSingletons.add(SubstrateBackendFactory.class, new LLVMSubstrateBackendFactory());
114109

115110
ImageSingletons.add(SubstrateLoweringProviderFactory.class, SubstrateLLVMLoweringProvider::new);
116111

117-
ImageSingletons.add(NativeImageCodeCacheFactory.class, new NativeImageCodeCacheFactory() {
118-
@Override
119-
public NativeImageCodeCache newCodeCache(CompileQueue compileQueue, NativeImageHeap heap, Platform platform, Path tempDir) {
120-
return new LLVMNativeImageCodeCache(compileQueue.getCompilationResults(), heap, platform, tempDir);
121-
}
122-
});
123-
124-
ImageSingletons.add(ObjectFileFactory.class, new ObjectFileFactory() {
125-
@Override
126-
public ObjectFile newObjectFile(int pageSize, Path tempDir, BigBang bb) {
127-
if (LLVMOptions.UseLLVMDataSection.getValue()) {
128-
return new LLVMObjectFile(pageSize, tempDir, bb);
129-
} else {
130-
return ObjectFile.getNativeObjectFile(pageSize);
131-
}
132-
}
133-
});
112+
ImageSingletons.add(NativeImageCodeCacheFactory.class, new LLVMCodeCacheFactory());
113+
114+
ImageSingletons.add(ObjectFileFactory.class, new LLVMObjectFileFactory());
134115

135116
if (LLVMOptions.UseLLVMDataSection.getValue()) {
136117
ImageSingletons.add(CCompilerInvoker.class, new LLVMCCompilerInvoker(ImageSingletons.lookup(TemporaryBuildDirectoryProvider.class).getTemporaryBuildDirectory()));
@@ -187,4 +168,32 @@ private static int getLLVMVersion() {
187168
return version;
188169
}
189170
}
171+
172+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
173+
private static final class LLVMSubstrateBackendFactory extends SubstrateBackendFactory {
174+
@Override
175+
public SubstrateBackend newBackend(Providers newProviders) {
176+
return new SubstrateLLVMBackend(newProviders);
177+
}
178+
}
179+
180+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
181+
private static final class LLVMCodeCacheFactory extends NativeImageCodeCacheFactory {
182+
@Override
183+
public NativeImageCodeCache newCodeCache(CompileQueue compileQueue, NativeImageHeap heap, Platform platform, Path tempDir) {
184+
return new LLVMNativeImageCodeCache(compileQueue.getCompilationResults(), heap, platform, tempDir);
185+
}
186+
}
187+
188+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
189+
private static final class LLVMObjectFileFactory implements ObjectFileFactory {
190+
@Override
191+
public ObjectFile newObjectFile(int pageSize, Path tempDir, BigBang bb) {
192+
if (LLVMOptions.UseLLVMDataSection.getValue()) {
193+
return new LLVMObjectFile(pageSize, tempDir, bb);
194+
} else {
195+
return ObjectFile.getNativeObjectFile(pageSize);
196+
}
197+
}
198+
}
190199
}

substratevm/src/com.oracle.svm.core.graal.riscv64/src/com/oracle/svm/core/graal/riscv64/SubstrateRISCV64Feature.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
*/
2525
package com.oracle.svm.core.graal.riscv64;
2626

27-
import jdk.graal.compiler.debug.GraalError;
2827
import org.graalvm.nativeimage.ImageSingletons;
2928
import org.graalvm.nativeimage.Platform;
3029
import org.graalvm.nativeimage.Platforms;
@@ -35,7 +34,12 @@
3534
import com.oracle.svm.core.feature.InternalFeature;
3635
import com.oracle.svm.core.graal.code.SubstrateRegisterConfigFactory;
3736
import com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind;
37+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
38+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
39+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
40+
import com.oracle.svm.core.traits.SingletonTraits;
3841

42+
import jdk.graal.compiler.debug.GraalError;
3943
import jdk.vm.ci.code.RegisterConfig;
4044
import jdk.vm.ci.code.TargetDescription;
4145
import jdk.vm.ci.meta.MetaAccessProvider;
@@ -47,12 +51,7 @@ class SubstrateRISCV64Feature implements InternalFeature {
4751
@Override
4852
public void afterRegistration(AfterRegistrationAccess access) {
4953

50-
ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateRegisterConfigFactory() {
51-
@Override
52-
public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
53-
return new SubstrateRISCV64RegisterConfig(config, metaAccess, target, preserveFramePointer);
54-
}
55-
});
54+
ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateRISCV64RegisterConfigFactory());
5655

5756
ImageSingletons.add(ReservedRegisters.class, new RISCV64ReservedRegisters());
5857

@@ -61,3 +60,11 @@ public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider m
6160
}
6261
}
6362
}
63+
64+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
65+
class SubstrateRISCV64RegisterConfigFactory implements SubstrateRegisterConfigFactory {
66+
@Override
67+
public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
68+
return new SubstrateRISCV64RegisterConfig(config, metaAccess, target, preserveFramePointer);
69+
}
70+
}

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/PosixSubstrateGlobalSigprofHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727

2828
import static com.oracle.svm.core.Uninterruptible.CALLED_FROM_UNINTERRUPTIBLE_CODE;
2929

30-
import jdk.graal.compiler.word.Word;
3130
import org.graalvm.nativeimage.IsolateThread;
3231
import org.graalvm.nativeimage.Platform;
3332
import org.graalvm.nativeimage.Platforms;
@@ -37,6 +36,8 @@
3736
import com.oracle.svm.core.posix.headers.Time;
3837
import com.oracle.svm.core.util.TimeUtils;
3938

39+
import jdk.graal.compiler.word.Word;
40+
4041
/**
4142
* Support for POSIX global timer (see {@link PosixSubstrateSigprofHandler}).
4243
*/

0 commit comments

Comments
 (0)