Skip to content

Commit 0a4f6f8

Browse files
committed
Annotate part of ImageSingletons with @SingletonTraits
1 parent 3fa330a commit 0a4f6f8

File tree

58 files changed

+429
-54
lines changed

Some content is hidden

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

58 files changed

+429
-54
lines changed

substratevm/src/com.oracle.svm.core.foreign/src/com/oracle/svm/core/foreign/AbiUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import com.oracle.svm.core.graal.code.AssignedLocation;
6060
import com.oracle.svm.core.headers.LibC;
6161
import com.oracle.svm.core.headers.WindowsAPIs;
62+
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
6263
import com.oracle.svm.core.util.BasedOnJDKClass;
6364
import com.oracle.svm.core.util.BasedOnJDKFile;
6465
import com.oracle.svm.core.util.VMError;
@@ -1053,7 +1054,7 @@ protected List<Adapter.Adaptation> generateAdaptations(NativeEntryPointInfo nep)
10531054
@Platforms(Platform.HOSTED_ONLY.class)
10541055
public void checkLibrarySupport() {
10551056
String name = "SystemV (Linux AMD64)";
1056-
VMError.guarantee(LibC.isSupported(), "Foreign functions feature requires LibC support on %s", name);
1057+
VMError.guarantee(LibC.isSupported() || ImageLayerBuildingSupport.buildingExtensionLayer(), "Foreign functions feature requires LibC support on %s", name);
10571058
}
10581059

10591060
@Override

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ public HeapImpl() {
124124
this.oldGeneration = SerialGCOptions.useCompactingOldGen() ? new CompactingOldGeneration("OldGeneration")
125125
: new CopyingOldGeneration("OldGeneration");
126126
HeapParameters.initialize();
127-
DiagnosticThunkRegistry.singleton().add(new DumpHeapSettingsAndStatistics());
128-
DiagnosticThunkRegistry.singleton().add(new DumpHeapUsage());
129-
DiagnosticThunkRegistry.singleton().add(new DumpGCPolicy());
130-
DiagnosticThunkRegistry.singleton().add(new DumpImageHeapInfo());
131-
DiagnosticThunkRegistry.singleton().add(new DumpChunkInfo());
127+
if (ImageLayerBuildingSupport.firstImageBuild()) {
128+
DiagnosticThunkRegistry.singleton().add(new DumpHeapSettingsAndStatistics());
129+
DiagnosticThunkRegistry.singleton().add(new DumpHeapUsage());
130+
DiagnosticThunkRegistry.singleton().add(new DumpGCPolicy());
131+
DiagnosticThunkRegistry.singleton().add(new DumpImageHeapInfo());
132+
DiagnosticThunkRegistry.singleton().add(new DumpChunkInfo());
133+
}
132134
}
133135

134136
@Fold

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3535
import com.oracle.svm.core.feature.InternalFeature;
3636
import com.oracle.svm.core.heap.GCCause;
37+
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
3738
import com.oracle.svm.core.jfr.HasJfrSupport;
3839
import com.oracle.svm.core.jfr.JfrEvent;
3940
import com.oracle.svm.core.jfr.JfrGCName;
@@ -42,6 +43,10 @@
4243
import com.oracle.svm.core.jfr.JfrNativeEventWriterData;
4344
import com.oracle.svm.core.jfr.JfrNativeEventWriterDataAccess;
4445
import com.oracle.svm.core.jfr.JfrTicks;
46+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
47+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
48+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
49+
import com.oracle.svm.core.traits.SingletonTraits;
4550
import com.oracle.svm.core.util.VMError;
4651

4752
class JfrGCEventSupport {
@@ -139,11 +144,12 @@ private int popPhase() {
139144
}
140145
}
141146

147+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
142148
@AutomaticallyRegisteredFeature
143149
class JfrGCEventFeature implements InternalFeature {
144150
@Override
145151
public boolean isInConfiguration(IsInConfigurationAccess access) {
146-
return SubstrateOptions.useSerialGC();
152+
return SubstrateOptions.useSerialGC() && !ImageLayerBuildingSupport.buildingImageLayer();
147153
}
148154

149155
@Override

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
import com.oracle.svm.core.graal.code.SubstrateVectorArchitectureFactory;
4242
import com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind;
4343
import com.oracle.svm.core.heap.ReferenceAccess;
44+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
45+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
46+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
47+
import com.oracle.svm.core.traits.SingletonTraits;
4448

4549
import jdk.graal.compiler.core.common.spi.ForeignCallsProvider;
4650
import jdk.graal.compiler.core.common.spi.MetaAccessExtensionProvider;
@@ -56,6 +60,7 @@
5660
import jdk.vm.ci.code.TargetDescription;
5761
import jdk.vm.ci.meta.MetaAccessProvider;
5862

63+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
5964
@AutomaticallyRegisteredFeature
6065
@Platforms(Platform.AMD64.class)
6166
class SubstrateAMD64Feature implements InternalFeature {

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,15 @@
2727
import com.oracle.svm.core.Uninterruptible;
2828
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
2929
import com.oracle.svm.core.headers.LibMSupport;
30+
import com.oracle.svm.core.imagelayer.BuildingMonolithicImage;
3031
import com.oracle.svm.core.posix.headers.PosixLibM;
32+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
33+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
34+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
35+
import com.oracle.svm.core.traits.SingletonTraits;
3136

32-
@AutomaticallyRegisteredImageSingleton(LibMSupport.class)
37+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
38+
@AutomaticallyRegisteredImageSingleton(value = LibMSupport.class, onlyWith = BuildingMonolithicImage.class)
3339
public class PosixLibMSupport implements LibMSupport {
3440
@Override
3541
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,25 @@
3737
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
3838
import com.oracle.svm.core.log.Log;
3939
import com.oracle.svm.core.thread.VMThreads;
40+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
41+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
4042
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
4143
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
44+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
4245
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
4346
import com.oracle.svm.core.traits.SingletonTraits;
4447

48+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
4549
@AutomaticallyRegisteredFeature
4650
class PosixLogHandlerFeature implements InternalFeature {
51+
@Override
52+
public boolean isInConfiguration(IsInConfigurationAccess access) {
53+
return ImageLayerBuildingSupport.firstImageBuild();
54+
}
55+
4756
@Override
4857
public void beforeAnalysis(BeforeAnalysisAccess access) {
49-
if (ImageLayerBuildingSupport.firstImageBuild()) {
50-
Log.finalizeDefaultLogHandler(new PosixLogHandler());
51-
}
58+
Log.finalizeDefaultLogHandler(new PosixLogHandler());
5259
}
5360
}
5461

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import static com.oracle.svm.core.posix.headers.Mman.NoTransitions.munmap;
4040
import static jdk.graal.compiler.word.Word.nullPointer;
4141

42-
import jdk.graal.compiler.word.Word;
4342
import org.graalvm.nativeimage.ImageSingletons;
4443
import org.graalvm.nativeimage.Platform;
4544
import org.graalvm.nativeimage.c.type.WordPointer;
@@ -53,13 +52,26 @@
5352
import com.oracle.svm.core.c.CGlobalDataFactory;
5453
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
5554
import com.oracle.svm.core.feature.InternalFeature;
55+
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
5656
import com.oracle.svm.core.os.VirtualMemoryProvider;
5757
import com.oracle.svm.core.posix.headers.Unistd;
58+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
59+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
60+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
61+
import com.oracle.svm.core.traits.SingletonTraits;
5862
import com.oracle.svm.core.util.PointerUtils;
5963
import com.oracle.svm.core.util.UnsignedUtils;
6064

65+
import jdk.graal.compiler.word.Word;
66+
67+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
6168
@AutomaticallyRegisteredFeature
6269
class PosixVirtualMemoryProviderFeature implements InternalFeature {
70+
@Override
71+
public boolean isInConfiguration(IsInConfigurationAccess access) {
72+
return ImageLayerBuildingSupport.firstImageBuild();
73+
}
74+
6375
@Override
6476
public void beforeAnalysis(BeforeAnalysisAccess access) {
6577
if (!ImageSingletons.contains(VirtualMemoryProvider.class)) {

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/darwin/DarwinImageSingletonsFeature.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,23 @@
2626

2727
import org.graalvm.nativeimage.ImageSingletons;
2828

29+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
2930
import com.oracle.svm.core.feature.InternalFeature;
31+
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
3032
import com.oracle.svm.core.os.ImageHeapProvider;
31-
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
33+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
34+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
35+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
36+
import com.oracle.svm.core.traits.SingletonTraits;
3237

38+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
3339
@AutomaticallyRegisteredFeature
3440
class DarwinImageSingletonsFeature implements InternalFeature {
41+
@Override
42+
public boolean isInConfiguration(IsInConfigurationAccess access) {
43+
return ImageLayerBuildingSupport.firstImageBuild();
44+
}
45+
3546
@Override
3647
public void duringSetup(DuringSetupAccess access) {
3748
if (!ImageSingletons.contains(ImageHeapProvider.class)) {

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/darwin/DarwinLibCSupport.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@
2929
import com.oracle.svm.core.headers.LibCSupport;
3030
import com.oracle.svm.core.posix.PosixLibCSupport;
3131
import com.oracle.svm.core.posix.headers.darwin.DarwinErrno;
32+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
33+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
34+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
35+
import com.oracle.svm.core.traits.SingletonTraits;
3236

37+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
3338
@AutomaticallyRegisteredImageSingleton(LibCSupport.class)
3439
class DarwinLibCSupport extends PosixLibCSupport {
3540

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/darwin/DarwinStackOverflowSupport.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import static com.oracle.svm.core.posix.headers.darwin.DarwinVirtualMemory.mach_vm_region;
3333
import static com.oracle.svm.core.posix.headers.darwin.DarwinVirtualMemory.vm_region_basic_info_data_64_t;
3434

35-
import jdk.graal.compiler.word.Word;
3635
import org.graalvm.nativeimage.StackValue;
3736
import org.graalvm.nativeimage.c.type.CIntPointer;
3837
import org.graalvm.nativeimage.c.type.WordPointer;
@@ -43,8 +42,15 @@
4342
import com.oracle.svm.core.posix.headers.Pthread;
4443
import com.oracle.svm.core.posix.headers.darwin.DarwinPthread;
4544
import com.oracle.svm.core.stack.StackOverflowCheck;
45+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
46+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
47+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
48+
import com.oracle.svm.core.traits.SingletonTraits;
4649
import com.oracle.svm.core.util.VMError;
4750

51+
import jdk.graal.compiler.word.Word;
52+
53+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
4854
@AutomaticallyRegisteredImageSingleton(StackOverflowCheck.PlatformSupport.class)
4955
final class DarwinStackOverflowSupport implements StackOverflowCheck.PlatformSupport {
5056
@Override

0 commit comments

Comments
 (0)