Skip to content

Commit e5e55c4

Browse files
committed
Switch InitialLayerOnlyImageSingletons to use SingletonTraits.
1 parent 7ee70e4 commit e5e55c4

File tree

33 files changed

+245
-342
lines changed

33 files changed

+245
-342
lines changed

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

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,23 @@
2424
*/
2525
package com.oracle.svm.core.genscavenge;
2626

27-
import java.util.EnumSet;
28-
2927
import org.graalvm.nativeimage.PinnedObject;
3028
import org.graalvm.nativeimage.Platform;
3129
import org.graalvm.nativeimage.Platforms;
3230
import org.graalvm.word.Pointer;
3331

3432
import com.oracle.svm.core.Uninterruptible;
3533
import com.oracle.svm.core.heap.AbstractPinnedObjectSupport;
36-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
37-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
34+
import com.oracle.svm.core.traits.BuiltinTraits.AllAccess;
35+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
36+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
37+
import com.oracle.svm.core.traits.SingletonTraits;
3838

3939
import jdk.graal.compiler.nodes.NamedLocationIdentity;
4040

4141
/** Support for pinning objects to a memory address with {@link PinnedObject}. */
42-
public final class PinnedObjectSupportImpl extends AbstractPinnedObjectSupport implements InitialLayerOnlyImageSingleton {
42+
@SingletonTraits(access = AllAccess.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
43+
public final class PinnedObjectSupportImpl extends AbstractPinnedObjectSupport {
4344
@Platforms(Platform.HOSTED_ONLY.class)
4445
public PinnedObjectSupportImpl() {
4546
}
@@ -66,14 +67,4 @@ private static void modifyPinnedObjectCount(Object object, int delta) {
6667

6768
assert oldValue < Integer.MAX_VALUE;
6869
}
69-
70-
@Override
71-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
72-
return LayeredImageSingletonBuilderFlags.ALL_ACCESS;
73-
}
74-
75-
@Override
76-
public boolean accessibleInFutureLayers() {
77-
return true;
78-
}
7970
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@
5353
import com.oracle.svm.core.graal.snippets.NodeLoweringProvider;
5454
import com.oracle.svm.core.option.HostedOptionKey;
5555
import com.oracle.svm.core.snippets.ExceptionUnwind;
56-
import com.oracle.svm.core.traits.BuiltinTraits;
57-
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind;
56+
import com.oracle.svm.core.traits.BuiltinTraits.BuildtimeAccessOnly;
57+
import com.oracle.svm.core.traits.BuiltinTraits.NoLayeredCallbacks;
58+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.Disallowed;
5859
import com.oracle.svm.core.traits.SingletonTraits;
5960
import com.oracle.svm.core.util.UserError;
6061
import com.oracle.svm.hosted.FeatureImpl;
@@ -82,7 +83,7 @@
8283
*/
8384
@AutomaticallyRegisteredFeature
8485
@Platforms({Platform.LINUX.class, Platform.DARWIN.class})
85-
@SingletonTraits(access = BuiltinTraits.BuildtimeAccessOnly.class, layeredCallbacks = BuiltinTraits.NoLayeredCallbacks.class, layeredInstallationKind = SingletonLayeredInstallationKind.Disallowed.class)
86+
@SingletonTraits(access = BuildtimeAccessOnly.class, layeredCallbacks = NoLayeredCallbacks.class, layeredInstallationKind = Disallowed.class)
8687
public class LLVMFeature implements InternalFeature {
8788

8889
@Override

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

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@
2525
package com.oracle.svm.core.posix;
2626

2727
import java.io.FileDescriptor;
28-
import java.util.EnumSet;
2928

30-
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
3129
import org.graalvm.nativeimage.LogHandler;
3230
import org.graalvm.nativeimage.c.type.CCharPointer;
3331
import org.graalvm.word.UnsignedWord;
@@ -36,10 +34,13 @@
3634
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3735
import com.oracle.svm.core.feature.InternalFeature;
3836
import com.oracle.svm.core.headers.LibC;
39-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
40-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
37+
import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport;
4138
import com.oracle.svm.core.log.Log;
4239
import com.oracle.svm.core.thread.VMThreads;
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.InitialLayerOnly;
43+
import com.oracle.svm.core.traits.SingletonTraits;
4344

4445
@AutomaticallyRegisteredFeature
4546
class PosixLogHandlerFeature implements InternalFeature {
@@ -51,7 +52,8 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
5152
}
5253
}
5354

54-
public class PosixLogHandler implements LogHandler, InitialLayerOnlyImageSingleton {
55+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
56+
public class PosixLogHandler implements LogHandler {
5557

5658
@Override
5759
public void log(CCharPointer bytes, UnsignedWord length) {
@@ -94,14 +96,4 @@ public void fatalError() {
9496
private static FileDescriptor getOutputFile() {
9597
return FileDescriptor.err;
9698
}
97-
98-
@Override
99-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
100-
return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY;
101-
}
102-
103-
@Override
104-
public boolean accessibleInFutureLayers() {
105-
return true;
106-
}
10799
}

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

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,23 @@
2626

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

29-
import java.util.EnumSet;
30-
3129
import org.graalvm.nativeimage.c.type.CCharPointer;
3230
import org.graalvm.word.Pointer;
3331
import org.graalvm.word.UnsignedWord;
3432

3533
import com.oracle.svm.core.Uninterruptible;
3634
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
3735
import com.oracle.svm.core.headers.LibC;
38-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
39-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
4036
import com.oracle.svm.core.log.StdErrWriter;
37+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
38+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
39+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
40+
import com.oracle.svm.core.traits.SingletonTraits;
4141
import com.oracle.svm.core.util.VMError;
4242

4343
@AutomaticallyRegisteredImageSingleton(value = StdErrWriter.class)
44-
class PosixStdErrWriter implements StdErrWriter, InitialLayerOnlyImageSingleton {
44+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
45+
class PosixStdErrWriter implements StdErrWriter {
4546
private static final int STDERR_FD = 2;
4647

4748
@Override
@@ -70,14 +71,4 @@ public void flush() {
7071
LibC.setErrno(savedErrno);
7172
}
7273
}
73-
74-
@Override
75-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
76-
return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY;
77-
}
78-
79-
@Override
80-
public boolean accessibleInFutureLayers() {
81-
return true;
82-
}
8374
}

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/linux/LinuxProcessPropertiesSupport.java

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,22 @@
2424
*/
2525
package com.oracle.svm.core.posix.linux;
2626

27-
import java.util.EnumSet;
28-
2927
import org.graalvm.nativeimage.impl.ProcessPropertiesSupport;
3028

3129
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
32-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
33-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
3430
import com.oracle.svm.core.posix.PosixProcessPropertiesSupport;
31+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
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;
3535

3636
@AutomaticallyRegisteredImageSingleton(ProcessPropertiesSupport.class)
37-
public class LinuxProcessPropertiesSupport extends PosixProcessPropertiesSupport implements InitialLayerOnlyImageSingleton {
37+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
38+
public class LinuxProcessPropertiesSupport extends PosixProcessPropertiesSupport {
3839

3940
@Override
4041
public String getExecutableName() {
4142
final String exefileString = "/proc/self/exe";
4243
return realpath(exefileString);
4344
}
44-
45-
@Override
46-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
47-
return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY;
48-
}
49-
50-
@Override
51-
public boolean accessibleInFutureLayers() {
52-
return true;
53-
}
5445
}

substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/thread/PosixVMThreads.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,17 @@
4747
import com.oracle.svm.core.posix.headers.darwin.DarwinPthread;
4848
import com.oracle.svm.core.posix.linux.LinuxLibCHelper;
4949
import com.oracle.svm.core.thread.VMThreads;
50+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
51+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
52+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
53+
import com.oracle.svm.core.traits.SingletonTraits;
5054
import com.oracle.svm.core.util.TimeUtils;
5155
import com.oracle.svm.core.util.VMError;
5256

5357
import jdk.graal.compiler.word.Word;
5458

5559
@AutomaticallyRegisteredImageSingleton(VMThreads.class)
60+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
5661
public final class PosixVMThreads extends VMThreads {
5762

5863
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)

substratevm/src/com.oracle.svm.core.windows/src/com/oracle/svm/core/windows/WindowsStdErrWriter.java

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,23 @@
2626

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

29-
import java.util.EnumSet;
30-
3129
import org.graalvm.nativeimage.c.type.CCharPointer;
3230
import org.graalvm.word.UnsignedWord;
3331

3432
import com.oracle.svm.core.Uninterruptible;
3533
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
36-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
37-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
3834
import com.oracle.svm.core.log.StdErrWriter;
35+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
36+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
37+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
38+
import com.oracle.svm.core.traits.SingletonTraits;
3939
import com.oracle.svm.core.util.VMError;
4040
import com.oracle.svm.core.windows.headers.FileAPI;
4141
import com.oracle.svm.core.windows.headers.WinBase.HANDLE;
4242

4343
@AutomaticallyRegisteredImageSingleton(value = StdErrWriter.class)
44-
class WindowsStdErrWriter implements StdErrWriter, InitialLayerOnlyImageSingleton {
44+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
45+
class WindowsStdErrWriter implements StdErrWriter {
4546
@Override
4647
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)
4748
public void log(CCharPointer bytes, UnsignedWord length) {
@@ -57,16 +58,6 @@ public void flush() {
5758
WindowsUtils.flushUninterruptibly(getStdErrHandle());
5859
}
5960

60-
@Override
61-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
62-
return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY;
63-
}
64-
65-
@Override
66-
public boolean accessibleInFutureLayers() {
67-
return true;
68-
}
69-
7061
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)
7162
private static HANDLE getStdErrHandle() {
7263
return FileAPI.NoTransition.GetStdHandle(FileAPI.STD_ERROR_HANDLE());

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/c/CTypeConversionSupportImpl.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.nio.charset.Charset;
2929
import java.nio.charset.StandardCharsets;
3030
import java.util.Arrays;
31-
import java.util.EnumSet;
3231

3332
import org.graalvm.nativeimage.ImageSingletons;
3433
import org.graalvm.nativeimage.c.type.CCharPointer;
@@ -45,13 +44,16 @@
4544
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
4645
import com.oracle.svm.core.handles.PrimitiveArrayView;
4746
import com.oracle.svm.core.jdk.DirectByteBufferUtil;
48-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
49-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
47+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
48+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
49+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
50+
import com.oracle.svm.core.traits.SingletonTraits;
5051

5152
import jdk.graal.compiler.word.Word;
5253

5354
@AutomaticallyRegisteredImageSingleton(CTypeConversionSupport.class)
54-
class CTypeConversionSupportImpl implements CTypeConversionSupport, InitialLayerOnlyImageSingleton {
55+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
56+
class CTypeConversionSupportImpl implements CTypeConversionSupport {
5557

5658
static final CCharPointerHolder NULL_HOLDER = new CCharPointerHolder() {
5759
@Override
@@ -193,16 +195,6 @@ public ByteBuffer asByteBuffer(PointerBase address, int size) {
193195
ByteBuffer byteBuffer = DirectByteBufferUtil.allocate(address.rawValue(), size);
194196
return byteBuffer.order(ConfigurationValues.getTarget().arch.getByteOrder());
195197
}
196-
197-
@Override
198-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
199-
return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY;
200-
}
201-
202-
@Override
203-
public boolean accessibleInFutureLayers() {
204-
return true;
205-
}
206198
}
207199

208200
final class CCharPointerHolderImpl implements CCharPointerHolder {

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/c/function/IsolateSupportImpl.java

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

27-
import java.util.EnumSet;
2827
import java.util.List;
2928

3029
import org.graalvm.nativeimage.Isolate;
@@ -41,18 +40,21 @@
4140
import com.oracle.svm.core.c.function.CEntryPointNativeFunctions.IsolateThreadPointer;
4241
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
4342
import com.oracle.svm.core.graal.stackvalue.UnsafeStackValue;
44-
import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton;
45-
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags;
4643
import com.oracle.svm.core.memory.NativeMemory;
4744
import com.oracle.svm.core.nmt.NmtCategory;
4845
import com.oracle.svm.core.option.SubstrateOptionsParser;
4946
import com.oracle.svm.core.os.MemoryProtectionProvider;
5047
import com.oracle.svm.core.os.MemoryProtectionProvider.UnsupportedDomainException;
48+
import com.oracle.svm.core.traits.BuiltinTraits.RuntimeAccessOnly;
49+
import com.oracle.svm.core.traits.BuiltinTraits.SingleLayer;
50+
import com.oracle.svm.core.traits.SingletonLayeredInstallationKind.InitialLayerOnly;
51+
import com.oracle.svm.core.traits.SingletonTraits;
5152

5253
import jdk.graal.compiler.word.Word;
5354

5455
@AutomaticallyRegisteredImageSingleton(IsolateSupport.class)
55-
public final class IsolateSupportImpl implements IsolateSupport, InitialLayerOnlyImageSingleton {
56+
@SingletonTraits(access = RuntimeAccessOnly.class, layeredCallbacks = SingleLayer.class, layeredInstallationKind = InitialLayerOnly.class)
57+
public final class IsolateSupportImpl implements IsolateSupport {
5658
private static final String ISOLATES_DISABLED_MESSAGE = "Spawning of multiple isolates is disabled, use " +
5759
SubstrateOptionsParser.commandArgument(SubstrateOptions.SpawnIsolates, "+") + " option.";
5860
private static final String PROTECTION_DOMAIN_UNSUPPORTED_MESSAGE = "Protection domains are unavailable";
@@ -171,14 +173,4 @@ private static void throwOnError(int code) {
171173
throw new IsolateException(message);
172174
}
173175
}
174-
175-
@Override
176-
public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() {
177-
return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY;
178-
}
179-
180-
@Override
181-
public boolean accessibleInFutureLayers() {
182-
return true;
183-
}
184176
}

0 commit comments

Comments
 (0)