Skip to content

Commit f3f36fe

Browse files
committed
Only calculate resource stats if reachable.
1 parent cef3604 commit f3f36fe

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/HeapBreakdownProvider.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ protected void setTotalHeapSize(long totalHeapSize) {
9797
this.totalHeapSize = totalHeapSize;
9898
}
9999

100-
protected void calculate(BeforeImageWriteAccessImpl access) {
100+
protected void calculate(BeforeImageWriteAccessImpl access, boolean resourcesAreReachable) {
101101
HostedMetaAccess metaAccess = access.getHostedMetaAccess();
102102
ObjectLayout objectLayout = ImageSingletons.lookup(ObjectLayout.class);
103103

@@ -160,8 +160,11 @@ protected void calculate(BeforeImageWriteAccessImpl access) {
160160
addEntry(entries, byteArrayEntry, new HeapBreakdownEntry(BYTE_ARRAY_PREFIX, "reflection metadata", "#glossary-reflection-metadata"), metadataSize, 1);
161161
}
162162
ProgressReporter reporter = ProgressReporter.singleton();
163-
/* GR-57350: This condition can be removed once resources are adapted for Layered Images */
164-
if (!ImageLayerBuildingSupport.buildingExtensionLayer()) {
163+
/*
164+
* GR-57350: The first part of this condition can be removed once resources are adapted for
165+
* Layered Images.
166+
*/
167+
if (!ImageLayerBuildingSupport.buildingExtensionLayer() && resourcesAreReachable) {
165168
/* Extract byte[] for resources. */
166169
long resourcesByteArraySize = 0;
167170
int resourcesByteArrayCount = 0;

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ProgressReporterFeature.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.oracle.svm.core.SubstrateUtil;
3838
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3939
import com.oracle.svm.core.feature.InternalFeature;
40+
import com.oracle.svm.core.jdk.resources.NativeImageResourceFileSystem;
4041
import com.oracle.svm.core.jni.access.JNIAccessibleClass;
4142
import com.oracle.svm.core.jni.access.JNIReflectionDictionary;
4243
import com.oracle.svm.hosted.FeatureImpl.AfterCompilationAccessImpl;
@@ -51,6 +52,7 @@
5152
@AutomaticallyRegisteredFeature
5253
public class ProgressReporterFeature implements InternalFeature {
5354
protected final ProgressReporter reporter = ProgressReporter.singleton();
55+
private boolean resourcesAreReachable;
5456

5557
@Override
5658
public void duringSetup(DuringSetupAccess access) {
@@ -71,10 +73,15 @@ public void afterCompilation(AfterCompilationAccess access) {
7173
}
7274
}
7375

76+
@Override
77+
public void afterAnalysis(AfterAnalysisAccess access) {
78+
resourcesAreReachable = access.isReachable(NativeImageResourceFileSystem.class);
79+
}
80+
7481
@Override
7582
public void beforeImageWrite(BeforeImageWriteAccess access) {
7683
if (SubstrateOptions.BuildOutputBreakdowns.getValue()) {
77-
HeapBreakdownProvider.singleton().calculate(((BeforeImageWriteAccessImpl) access));
84+
HeapBreakdownProvider.singleton().calculate(((BeforeImageWriteAccessImpl) access), resourcesAreReachable);
7885
}
7986
}
8087

web-image/src/com.oracle.svm.hosted.webimage/src/com/oracle/svm/hosted/webimage/WebImageJSHeapBreakdownProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class WebImageJSHeapBreakdownProvider extends HeapBreakdownProvider {
4747
* of bytes used if they were laid out in binary without alignment gaps.
4848
*/
4949
@Override
50-
protected void calculate(FeatureImpl.BeforeImageWriteAccessImpl access) {
50+
protected void calculate(FeatureImpl.BeforeImageWriteAccessImpl access, boolean resourcesAreReachable) {
5151
long totalByteSize = 0;
5252
WebImageJSProviders providers = (WebImageJSProviders) ImageSingletons.lookup(WebImageProviders.class);
5353
ConstantIdentityMapping identityMapping = providers.typeControl().getConstantMap().identityMapping;

0 commit comments

Comments
 (0)