[GR-55172] Deprecate BuildOutputBreakdowns option

PullRequest: graal/18444
This commit is contained in:
Patrick Ziegler 2024-11-05 17:13:43 +00:00
commit edbfec0c7d
4 changed files with 22 additions and 7 deletions

View File

@ -700,7 +700,7 @@ public class SubstrateOptions {
@Option(help = "Report progress in build output (default is adaptive)", type = OptionType.User)//
public static final HostedOptionKey<Boolean> BuildOutputProgress = new HostedOptionKey<>(false);
@Option(help = "Show code and heap breakdowns as part of the build output", type = OptionType.User)//
@Option(help = "Show code and heap breakdowns as part of the build output", type = OptionType.User, deprecated = true, deprecationMessage = "Deprecated without replacement")//
public static final HostedOptionKey<Boolean> BuildOutputBreakdowns = new HostedOptionKey<>(true);
@Option(help = "Show recommendations as part of the build output", type = OptionType.User)//

View File

@ -81,11 +81,22 @@ public class HeapBreakdownProvider {
return sortedBreakdownEntries;
}
public void setBreakdownEntries(List<HeapBreakdownEntry> unsortedBreakdownEntries) {
assert this.sortedBreakdownEntries == null : "sortedBreakdownEntries were set before";
this.sortedBreakdownEntries = unsortedBreakdownEntries.stream().sorted(Comparator.comparingLong(HeapBreakdownEntry::getByteSize).reversed()).toList();
}
public long getTotalHeapSize() {
assert totalHeapSize >= 0;
return totalHeapSize;
}
protected void setTotalHeapSize(long totalHeapSize) {
assert this.totalHeapSize == -1 : "Total heap size was set before";
assert totalHeapSize >= 0 : "Invalid total heap size: " + totalHeapSize;
this.totalHeapSize = totalHeapSize;
}
protected void calculate(BeforeImageWriteAccessImpl access) {
HostedMetaAccess metaAccess = access.getHostedMetaAccess();
ObjectLayout objectLayout = ImageSingletons.lookup(ObjectLayout.class);
@ -125,8 +136,8 @@ public class HeapBreakdownProvider {
classToDataMap.clear();
/* Add heap alignment. */
totalHeapSize = access.getImage().getImageHeapSize();
long heapAlignmentSize = totalHeapSize - totalObjectSize;
setTotalHeapSize(access.getImage().getImageHeapSize());
long heapAlignmentSize = getTotalHeapSize() - totalObjectSize;
assert heapAlignmentSize >= 0 : "Incorrect heap alignment detected: " + heapAlignmentSize;
if (heapAlignmentSize > 0) {
HeapBreakdownEntry heapAlignmentEntry = new HeapBreakdownEntry("", "heap alignment", "#glossary-heap-alignment");
@ -177,7 +188,7 @@ public class HeapBreakdownProvider {
assert byteArrayEntry.byteSize >= 0 && byteArrayEntry.count >= 0;
addEntry(entries, byteArrayEntry, new HeapBreakdownEntry(BYTE_ARRAY_PREFIX, "general heap data", "#glossary-general-heap-data"), byteArrayEntry.byteSize, byteArrayEntry.count);
assert byteArrayEntry.byteSize == 0 && byteArrayEntry.count == 0;
sortedBreakdownEntries = entries.stream().sorted(Comparator.comparingLong(HeapBreakdownEntry::getByteSize).reversed()).toList();
setBreakdownEntries(entries);
}
private static void addEntry(List<HeapBreakdownEntry> entries, HeapBreakdownEntry byteArrayEntry, HeapBreakdownEntry newData, long byteSize, int count) {
@ -200,7 +211,7 @@ public class HeapBreakdownProvider {
long byteSize;
int count;
HeapBreakdownEntry(HostedClass hostedClass) {
public HeapBreakdownEntry(HostedClass hostedClass) {
this(hostedClass.toJavaName(true));
}

View File

@ -364,4 +364,8 @@ public class HostedConfiguration {
}
};
}
public HeapBreakdownProvider createHeapBreakdownProvider() {
return new HeapBreakdownProvider();
}
}

View File

@ -53,9 +53,9 @@ public class ProgressReporterFeature implements InternalFeature {
protected final ProgressReporter reporter = ProgressReporter.singleton();
@Override
public void afterRegistration(AfterRegistrationAccess access) {
public void duringSetup(DuringSetupAccess access) {
if (SubstrateOptions.BuildOutputBreakdowns.getValue()) {
ImageSingletons.add(HeapBreakdownProvider.class, new HeapBreakdownProvider());
ImageSingletons.add(HeapBreakdownProvider.class, HostedConfiguration.instance().createHeapBreakdownProvider());
}
}