Skip to content

Commit 9b893b0

Browse files
committed
[GR-65174] Label and make singletons layer aware.
PullRequest: graal/20849
2 parents bc0b09f + c3c22d7 commit 9b893b0

File tree

66 files changed

+443
-60
lines changed

Some content is hidden

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

66 files changed

+443
-60
lines changed

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import com.oracle.svm.core.heap.RestrictHeapAccess;
6565
import com.oracle.svm.core.heap.RuntimeCodeInfoGCSupport;
6666
import com.oracle.svm.core.hub.DynamicHub;
67+
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
6768
import com.oracle.svm.core.jfr.JfrTicks;
6869
import com.oracle.svm.core.jfr.events.SystemGCEvent;
6970
import com.oracle.svm.core.layeredimagesingleton.MultiLayeredImageSingleton;
@@ -120,11 +121,13 @@ public HeapImpl() {
120121
this.runtimeCodeInfoGcSupport = new RuntimeCodeInfoGCSupportImpl();
121122
this.oldGeneration = SerialGCOptions.useCompactingOldGen() ? new CompactingOldGeneration("OldGeneration")
122123
: new CopyingOldGeneration("OldGeneration");
123-
DiagnosticThunkRegistry.singleton().add(new DumpHeapSettingsAndStatistics());
124-
DiagnosticThunkRegistry.singleton().add(new DumpHeapUsage());
125-
DiagnosticThunkRegistry.singleton().add(new DumpGCPolicy());
126-
DiagnosticThunkRegistry.singleton().add(new DumpImageHeapInfo());
127-
DiagnosticThunkRegistry.singleton().add(new DumpChunkInfo());
124+
if (ImageLayerBuildingSupport.firstImageBuild()) {
125+
DiagnosticThunkRegistry.singleton().add(new DumpHeapSettingsAndStatistics());
126+
DiagnosticThunkRegistry.singleton().add(new DumpHeapUsage());
127+
DiagnosticThunkRegistry.singleton().add(new DumpGCPolicy());
128+
DiagnosticThunkRegistry.singleton().add(new DumpImageHeapInfo());
129+
DiagnosticThunkRegistry.singleton().add(new DumpChunkInfo());
130+
}
128131
}
129132

130133
@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.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64Feature.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.Disallowed;
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;
@@ -96,6 +100,7 @@ public void duringSetup(DuringSetupAccess access) {
96100
}
97101
}
98102

103+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
99104
class SubstrateAArch64LoweringProviderFactory extends SubstrateVectorArchitectureFactory implements SubstrateLoweringProviderFactory {
100105

101106
@Override

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

Lines changed: 6 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 {
@@ -96,6 +101,7 @@ public void duringSetup(DuringSetupAccess access) {
96101
}
97102
}
98103

104+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
99105
class SubstrateAMD64LoweringProviderFactory extends SubstrateVectorArchitectureFactory implements SubstrateLoweringProviderFactory {
100106

101107
@Override

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@
2828
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
2929
import com.oracle.svm.core.headers.LibMSupport;
3030
import com.oracle.svm.core.posix.headers.PosixLibM;
31+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
32+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
33+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
34+
import com.oracle.svm.core.traits.SingletonTraits;
3135

36+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
3237
@AutomaticallyRegisteredImageSingleton(LibMSupport.class)
3338
public class PosixLibMSupport implements LibMSupport {
3439
@Override

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: 17 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,29 @@
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.AllAccess;
59+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
60+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
61+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
62+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Independent;
63+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
64+
import com.oracle.svm.core.traits.SingletonTraits;
5865
import com.oracle.svm.core.util.PointerUtils;
5966
import com.oracle.svm.core.util.UnsignedUtils;
6067

68+
import jdk.graal.compiler.word.Word;
69+
70+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Independent.class)
6171
@AutomaticallyRegisteredFeature
6272
class PosixVirtualMemoryProviderFeature implements InternalFeature {
73+
@Override
74+
public boolean isInConfiguration(IsInConfigurationAccess access) {
75+
return ImageLayerBuildingSupport.firstImageBuild();
76+
}
77+
6378
@Override
6479
public void beforeAnalysis(BeforeAnalysisAccess access) {
6580
if (!ImageSingletons.contains(VirtualMemoryProvider.class)) {
@@ -68,6 +83,7 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
6883
}
6984
}
7085

86+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
7187
public class PosixVirtualMemoryProvider implements VirtualMemoryProvider {
7288
protected static final int NO_FD = -1;
7389
protected static final int NO_FD_OFFSET = 0;

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/aarch64/AArch64DarwinUContextRegisterDumper.java

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

2727
import static com.oracle.svm.core.RegisterDumper.dumpReg;
2828

29-
import jdk.graal.compiler.word.Word;
3029
import org.graalvm.nativeimage.Platform;
3130
import org.graalvm.nativeimage.Platforms;
3231
import org.graalvm.word.PointerBase;
@@ -38,12 +37,18 @@
3837
import com.oracle.svm.core.log.Log;
3938
import com.oracle.svm.core.posix.UContextRegisterDumper;
4039
import com.oracle.svm.core.posix.headers.Signal;
40+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
41+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
42+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
43+
import com.oracle.svm.core.traits.SingletonTraits;
4144
import com.oracle.svm.core.util.VMError;
4245

46+
import jdk.graal.compiler.word.Word;
4347
import jdk.vm.ci.aarch64.AArch64;
4448

4549
@AutomaticallyRegisteredImageSingleton(RegisterDumper.class)
4650
@Platforms(Platform.DARWIN_AARCH64.class)
51+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = Disallowed.class)
4752
class AArch64DarwinUContextRegisterDumper implements UContextRegisterDumper {
4853
AArch64DarwinUContextRegisterDumper() {
4954
VMError.guarantee(AArch64.r27.equals(AArch64ReservedRegisters.HEAP_BASE_REGISTER));

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/aarch64/AArch64LinuxUContextRegisterDumper.java

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

2727
import static com.oracle.svm.core.RegisterDumper.dumpReg;
2828

29-
import jdk.graal.compiler.word.Word;
3029
import org.graalvm.nativeimage.Platform;
3130
import org.graalvm.nativeimage.Platforms;
3231
import org.graalvm.word.PointerBase;
@@ -40,12 +39,18 @@
4039
import com.oracle.svm.core.posix.headers.Signal.GregsPointer;
4140
import com.oracle.svm.core.posix.headers.Signal.mcontext_linux_aarch64_t;
4241
import com.oracle.svm.core.posix.headers.Signal.ucontext_t;
42+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
43+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
44+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
45+
import com.oracle.svm.core.traits.SingletonTraits;
4346
import com.oracle.svm.core.util.VMError;
4447

48+
import jdk.graal.compiler.word.Word;
4549
import jdk.vm.ci.aarch64.AArch64;
4650

4751
@AutomaticallyRegisteredImageSingleton(RegisterDumper.class)
4852
@Platforms(Platform.LINUX_AARCH64_BASE.class)
53+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = Disallowed.class)
4954
class AArch64LinuxUContextRegisterDumper implements UContextRegisterDumper {
5055
AArch64LinuxUContextRegisterDumper() {
5156
VMError.guarantee(AArch64.r27.equals(AArch64ReservedRegisters.HEAP_BASE_REGISTER));

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/amd64/AMD64DarwinUContextRegisterDumper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,17 @@
3939
import com.oracle.svm.core.posix.UContextRegisterDumper;
4040
import com.oracle.svm.core.posix.headers.Signal;
4141
import com.oracle.svm.core.posix.headers.Signal.ucontext_t;
42+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
43+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
44+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
45+
import com.oracle.svm.core.traits.SingletonTraits;
4246
import com.oracle.svm.core.util.VMError;
4347

4448
import jdk.vm.ci.amd64.AMD64;
4549

4650
@AutomaticallyRegisteredImageSingleton(RegisterDumper.class)
4751
@Platforms(Platform.DARWIN_AMD64.class)
52+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = Disallowed.class)
4853
class AMD64DarwinUContextRegisterDumper implements UContextRegisterDumper {
4954
AMD64DarwinUContextRegisterDumper() {
5055
VMError.guarantee(AMD64.r14.equals(AMD64ReservedRegisters.HEAP_BASE_REGISTER));

0 commit comments

Comments
 (0)