Skip to content

Commit 020e5ed

Browse files
Christian Wimmerolpaw
authored andcommitted
Use @AutomaticallyRegisteredFeature and @AutomaticallyRegisteredImageSingleton
1 parent 3d78d35 commit 020e5ed

File tree

268 files changed

+1103
-1902
lines changed

Some content is hidden

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

268 files changed

+1103
-1902
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Args = --features=com.oracle.svm.configure.config.SignatureUtilFeature

substratevm/src/com.oracle.svm.configure/src/com/oracle/svm/configure/config/SignatureUtil.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030
import org.graalvm.nativeimage.hosted.Feature;
3131

32-
import com.oracle.svm.core.annotate.AutomaticFeature;
3332
import com.oracle.svm.util.ModuleSupport;
3433

3534
import jdk.vm.ci.meta.JavaKind;
@@ -101,7 +100,6 @@ public static String toInternalClassName(String qualifiedForNameString) {
101100
}
102101
}
103102

104-
@AutomaticFeature
105103
class SignatureUtilFeature implements Feature {
106104
@Override
107105
public void afterRegistration(AfterRegistrationAccess access) {

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

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,14 @@
3030
import org.graalvm.nativeimage.Platform;
3131
import org.graalvm.nativeimage.Platforms;
3232
import org.graalvm.nativeimage.c.struct.RawStructure;
33-
import org.graalvm.nativeimage.hosted.Feature;
3433
import org.graalvm.word.Pointer;
3534
import org.graalvm.word.UnsignedWord;
3635
import org.graalvm.word.WordFactory;
3736

38-
import com.oracle.svm.core.MemoryWalker;
39-
import com.oracle.svm.core.SubstrateOptions;
4037
import com.oracle.svm.core.AlwaysInline;
41-
import com.oracle.svm.core.annotate.AutomaticFeature;
38+
import com.oracle.svm.core.MemoryWalker;
4239
import com.oracle.svm.core.Uninterruptible;
40+
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
4341
import com.oracle.svm.core.genscavenge.remset.RememberedSet;
4442
import com.oracle.svm.core.heap.ObjectVisitor;
4543
import com.oracle.svm.core.util.PointerUtils;
@@ -154,6 +152,7 @@ static MemoryWalker.HeapChunkAccess<AlignedHeapChunk.AlignedHeader> getMemoryWal
154152
}
155153

156154
/** Methods for a {@link MemoryWalker} to access an aligned heap chunk. */
155+
@AutomaticallyRegisteredImageSingleton(onlyWith = UseSerialOrEpsilonGC.class)
157156
static final class MemoryWalkerAccessImpl extends HeapChunk.MemoryWalkerAccessImpl<AlignedHeapChunk.AlignedHeader> {
158157

159158
@Platforms(Platform.HOSTED_ONLY.class)
@@ -171,16 +170,3 @@ public UnsignedWord getAllocationStart(AlignedHeapChunk.AlignedHeader heapChunk)
171170
}
172171
}
173172
}
174-
175-
@AutomaticFeature
176-
class AlignedHeapChunkMemoryWalkerAccessFeature implements Feature {
177-
@Override
178-
public boolean isInConfiguration(IsInConfigurationAccess access) {
179-
return SubstrateOptions.UseSerialGC.getValue() || SubstrateOptions.UseEpsilonGC.getValue();
180-
}
181-
182-
@Override
183-
public void afterRegistration(AfterRegistrationAccess access) {
184-
ImageSingletons.add(AlignedHeapChunk.MemoryWalkerAccessImpl.class, new AlignedHeapChunk.MemoryWalkerAccessImpl());
185-
}
186-
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727

2828
import org.graalvm.nativeimage.ImageSingletons;
2929
import org.graalvm.nativeimage.StackValue;
30-
import org.graalvm.nativeimage.hosted.Feature;
3130
import org.graalvm.word.UnsignedWord;
3231

3332
import com.oracle.svm.core.SubstrateOptions;
34-
import com.oracle.svm.core.annotate.AutomaticFeature;
3533
import com.oracle.svm.core.Uninterruptible;
34+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
35+
import com.oracle.svm.core.feature.InternalFeature;
3636
import com.oracle.svm.core.heap.GCCause;
3737
import com.oracle.svm.core.jfr.HasJfrSupport;
3838
import com.oracle.svm.core.jfr.JfrEvent;
@@ -137,8 +137,8 @@ private int popPhase() {
137137
}
138138
}
139139

140-
@AutomaticFeature
141-
class JfrGCEventFeature implements Feature {
140+
@AutomaticallyRegisteredFeature
141+
class JfrGCEventFeature implements InternalFeature {
142142
@Override
143143
public boolean isInConfiguration(IsInConfigurationAccess access) {
144144
return SubstrateOptions.UseSerialGC.getValue();

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,24 @@
2626

2727
import org.graalvm.compiler.word.Word;
2828
import org.graalvm.nativeimage.PinnedObject;
29-
import org.graalvm.nativeimage.Platform;
30-
import org.graalvm.nativeimage.Platforms;
3129
import org.graalvm.nativeimage.impl.PinnedObjectSupport;
3230
import org.graalvm.word.Pointer;
3331
import org.graalvm.word.PointerBase;
3432
import org.graalvm.word.UnsignedWord;
3533

3634
import com.oracle.svm.core.Uninterruptible;
35+
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
3736
import com.oracle.svm.core.heap.ObjectHeader;
3837
import com.oracle.svm.core.hub.DynamicHub;
3938
import com.oracle.svm.core.hub.LayoutEncoding;
4039
import com.oracle.svm.core.jdk.UninterruptibleUtils;
4140
import com.oracle.svm.core.thread.VMOperation;
4241

4342
/** Support for pinning objects to a memory address with {@link PinnedObject}. */
44-
public final class PinnedObjectImpl implements PinnedObject {
45-
public static class PinnedObjectSupportImpl implements PinnedObjectSupport {
46-
@Platforms(Platform.HOSTED_ONLY.class)
47-
public PinnedObjectSupportImpl() {
48-
}
43+
final class PinnedObjectImpl implements PinnedObject {
4944

45+
@AutomaticallyRegisteredImageSingleton(value = PinnedObjectSupport.class, onlyWith = UseSerialOrEpsilonGC.class)
46+
static class PinnedObjectSupportImpl implements PinnedObjectSupport {
5047
@Override
5148
public PinnedObject create(Object object) {
5249
PinnedObjectImpl result = new PinnedObjectImpl(object);

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

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,15 @@
3030
import org.graalvm.nativeimage.Platform;
3131
import org.graalvm.nativeimage.Platforms;
3232
import org.graalvm.nativeimage.c.struct.RawStructure;
33-
import org.graalvm.nativeimage.hosted.Feature;
3433
import org.graalvm.word.Pointer;
3534
import org.graalvm.word.UnsignedWord;
3635
import org.graalvm.word.WordFactory;
3736

38-
import com.oracle.svm.core.MemoryWalker;
39-
import com.oracle.svm.core.SubstrateOptions;
4037
import com.oracle.svm.core.AlwaysInline;
41-
import com.oracle.svm.core.annotate.AutomaticFeature;
38+
import com.oracle.svm.core.MemoryWalker;
4239
import com.oracle.svm.core.Uninterruptible;
4340
import com.oracle.svm.core.config.ConfigurationValues;
41+
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
4442
import com.oracle.svm.core.genscavenge.remset.RememberedSet;
4543
import com.oracle.svm.core.heap.ObjectVisitor;
4644
import com.oracle.svm.core.util.UnsignedUtils;
@@ -164,6 +162,7 @@ public static MemoryWalker.HeapChunkAccess<UnalignedHeapChunk.UnalignedHeader> g
164162
return ImageSingletons.lookup(UnalignedHeapChunk.MemoryWalkerAccessImpl.class);
165163
}
166164

165+
@AutomaticallyRegisteredImageSingleton(onlyWith = UseSerialOrEpsilonGC.class)
167166
static final class MemoryWalkerAccessImpl extends HeapChunk.MemoryWalkerAccessImpl<UnalignedHeapChunk.UnalignedHeader> {
168167

169168
@Platforms(Platform.HOSTED_ONLY.class)
@@ -181,16 +180,3 @@ public UnsignedWord getAllocationStart(UnalignedHeapChunk.UnalignedHeader heapCh
181180
}
182181
}
183182
}
184-
185-
@AutomaticFeature
186-
class UnalignedHeapChunkMemoryWalkerAccessFeature implements Feature {
187-
@Override
188-
public boolean isInConfiguration(IsInConfigurationAccess access) {
189-
return SubstrateOptions.UseSerialGC.getValue() || SubstrateOptions.UseEpsilonGC.getValue();
190-
}
191-
192-
@Override
193-
public void afterRegistration(AfterRegistrationAccess access) {
194-
ImageSingletons.add(UnalignedHeapChunk.MemoryWalkerAccessImpl.class, new UnalignedHeapChunk.MemoryWalkerAccessImpl());
195-
}
196-
}

substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/graal/BarrierSnippets.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.List;
2929
import java.util.Map;
3030

31-
import com.oracle.svm.core.genscavenge.SerialGCOptions;
3231
import org.graalvm.compiler.api.replacements.Fold;
3332
import org.graalvm.compiler.api.replacements.Snippet;
3433
import org.graalvm.compiler.api.replacements.Snippet.ConstantParameter;
@@ -55,12 +54,14 @@
5554
import org.graalvm.word.UnsignedWord;
5655

5756
import com.oracle.svm.core.SubstrateOptions;
58-
import com.oracle.svm.core.annotate.AutomaticFeature;
5957
import com.oracle.svm.core.genscavenge.ObjectHeaderImpl;
58+
import com.oracle.svm.core.genscavenge.SerialGCOptions;
6059
import com.oracle.svm.core.genscavenge.remset.RememberedSet;
60+
import com.oracle.svm.core.feature.InternalFeature;
6161
import com.oracle.svm.core.graal.snippets.NodeLoweringProvider;
6262
import com.oracle.svm.core.graal.snippets.SubstrateTemplates;
6363
import com.oracle.svm.core.heap.StoredContinuation;
64+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
6465
import com.oracle.svm.core.util.Counter;
6566
import com.oracle.svm.core.util.CounterFeature;
6667

@@ -188,8 +189,8 @@ class BarrierSnippetCounters {
188189
final Counter postWriteBarrierUnaligned = new Counter(counters, "postWriteBarrierUnaligned", "unaligned object path of post-write barriers");
189190
}
190191

191-
@AutomaticFeature
192-
class BarrierSnippetCountersFeature implements Feature {
192+
@AutomaticallyRegisteredFeature
193+
class BarrierSnippetCountersFeature implements InternalFeature {
193194
@Override
194195
public boolean isInConfiguration(IsInConfigurationAccess access) {
195196
return SubstrateOptions.UseSerialGC.getValue() && SubstrateOptions.useRememberedSet();

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
import org.graalvm.nativeimage.impl.PinnedObjectSupport;
3737

3838
import com.oracle.svm.core.SubstrateOptions;
39-
import com.oracle.svm.core.annotate.AutomaticFeature;
39+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
40+
import com.oracle.svm.core.feature.InternalFeature;
4041
import com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter;
4142
import com.oracle.svm.core.genscavenge.CompleteGarbageCollectorMXBean;
4243
import com.oracle.svm.core.genscavenge.HeapImpl;
@@ -50,7 +51,6 @@
5051
import com.oracle.svm.core.genscavenge.remset.CardTableBasedRememberedSet;
5152
import com.oracle.svm.core.genscavenge.remset.NoRememberedSet;
5253
import com.oracle.svm.core.genscavenge.remset.RememberedSet;
53-
import com.oracle.svm.core.graal.InternalFeature;
5454
import com.oracle.svm.core.graal.meta.RuntimeConfiguration;
5555
import com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider;
5656
import com.oracle.svm.core.graal.snippets.GCAllocationSupport;
@@ -60,14 +60,14 @@
6060
import com.oracle.svm.core.heap.BarrierSetProvider;
6161
import com.oracle.svm.core.heap.Heap;
6262
import com.oracle.svm.core.image.ImageHeapLayouter;
63-
import com.oracle.svm.core.jdk.RuntimeFeature;
63+
import com.oracle.svm.core.jdk.RuntimeSupportFeature;
6464
import com.oracle.svm.core.jdk.management.ManagementFeature;
6565
import com.oracle.svm.core.jdk.management.ManagementSupport;
6666
import com.oracle.svm.core.jvmstat.PerfDataFeature;
6767
import com.oracle.svm.core.jvmstat.PerfDataHolder;
6868
import com.oracle.svm.core.jvmstat.PerfManager;
6969

70-
@AutomaticFeature
70+
@AutomaticallyRegisteredFeature
7171
class GenScavengeGCFeature implements InternalFeature {
7272
@Override
7373
public boolean isInConfiguration(IsInConfigurationAccess access) {
@@ -76,7 +76,7 @@ public boolean isInConfiguration(IsInConfigurationAccess access) {
7676

7777
@Override
7878
public List<Class<? extends Feature>> getRequiredFeatures() {
79-
return Arrays.asList(RuntimeFeature.class, ManagementFeature.class, PerfDataFeature.class, AllocationFeature.class);
79+
return Arrays.asList(RuntimeSupportFeature.class, ManagementFeature.class, PerfDataFeature.class, AllocationFeature.class);
8080
}
8181

8282
@Override
Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,16 @@
3030
import org.graalvm.compiler.asm.aarch64.AArch64Assembler.SingleInstructionAnnotation;
3131
import org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler;
3232
import org.graalvm.compiler.code.CompilationResult;
33-
import org.graalvm.nativeimage.ImageSingletons;
3433
import org.graalvm.nativeimage.Platform;
3534
import org.graalvm.nativeimage.Platforms;
36-
import org.graalvm.nativeimage.hosted.Feature;
3735

38-
import com.oracle.svm.core.annotate.AutomaticFeature;
3936
import com.oracle.svm.core.graal.code.NativeImagePatcher;
4037
import com.oracle.svm.core.graal.code.PatchConsumerFactory;
38+
import com.oracle.svm.core.feature.AutomaticallyRegisteredImageSingleton;
4139
import com.oracle.svm.core.util.VMError;
4240

43-
@AutomaticFeature
44-
@Platforms({Platform.AARCH64.class})
45-
public class AArch64NativeImagePatcher implements Feature {
46-
@Override
47-
public void afterRegistration(AfterRegistrationAccess access) {
48-
ImageSingletons.add(PatchConsumerFactory.NativePatchConsumerFactory.class, new AArch64NativePatchConsumerFactory());
49-
}
50-
}
51-
41+
@AutomaticallyRegisteredImageSingleton(PatchConsumerFactory.NativePatchConsumerFactory.class)
42+
@Platforms(Platform.AARCH64.class)
5243
final class AArch64NativePatchConsumerFactory extends PatchConsumerFactory.NativePatchConsumerFactory {
5344
@Override
5445
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: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,25 @@
3434
import org.graalvm.nativeimage.ImageSingletons;
3535
import org.graalvm.nativeimage.Platform;
3636
import org.graalvm.nativeimage.Platforms;
37-
import org.graalvm.nativeimage.hosted.Feature;
3837

3938
import com.oracle.svm.core.ReservedRegisters;
4039
import com.oracle.svm.core.SubstrateOptions;
41-
import com.oracle.svm.core.annotate.AutomaticFeature;
40+
import com.oracle.svm.core.feature.InternalFeature;
4241
import com.oracle.svm.core.graal.code.SubstrateBackend;
4342
import com.oracle.svm.core.graal.code.SubstrateBackendFactory;
4443
import com.oracle.svm.core.graal.code.SubstrateLoweringProviderFactory;
4544
import com.oracle.svm.core.graal.code.SubstrateRegisterConfigFactory;
4645
import com.oracle.svm.core.graal.code.SubstrateSuitesCreatorProvider;
4746
import com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind;
47+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
4848

4949
import jdk.vm.ci.code.RegisterConfig;
5050
import jdk.vm.ci.code.TargetDescription;
5151
import jdk.vm.ci.meta.MetaAccessProvider;
5252

53-
@AutomaticFeature
53+
@AutomaticallyRegisteredFeature
5454
@Platforms(Platform.AARCH64.class)
55-
class SubstrateAArch64Feature implements Feature {
55+
class SubstrateAArch64Feature implements InternalFeature {
5656

5757
@Override
5858
public void afterRegistration(AfterRegistrationAccess access) {

0 commit comments

Comments
 (0)