Skip to content

Commit 4d4aa8c

Browse files
committed
[GR-66029] Print class initialization config once right before analysis.
PullRequest: graal/21217
2 parents 98608e1 + 494900d commit 4d4aa8c

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/classinitialization/ClassInitializationSupport.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,22 @@ public ClassInitializationSupport(MetaAccessProvider metaAccess, ImageClassLoade
169169
/**
170170
* Seal the configuration, blocking if another thread is trying to seal the configuration or an
171171
* unsealed-configuration window is currently open in another thread.
172+
* </p>
173+
* If -H:+PrintClassInitialization is set, dumps all class-initialization config into a file.
172174
*/
173175
public synchronized void sealConfiguration() {
174176
setConfigurationSealed(true);
177+
if (ClassInitializationOptions.PrintClassInitialization.getValue()) {
178+
List<ClassOrPackageConfig> allConfigs = classInitializationConfiguration.allConfigs();
179+
allConfigs.sort(Comparator.comparing(ClassOrPackageConfig::getName));
180+
ReportUtils.report("class initialization configuration", SubstrateOptions.reportsPath(), "class_initialization_configuration", "csv", writer -> {
181+
writer.println("Class or Package Name, Initialization Kind, Reasons");
182+
for (ClassOrPackageConfig config : allConfigs) {
183+
writer.append(config.getName()).append(", ").append(config.getKind().toString()).append(", ")
184+
.append(String.join(" and ", config.getReasons())).append(System.lineSeparator());
185+
}
186+
});
187+
}
175188
}
176189

177190
/**
@@ -190,17 +203,6 @@ public synchronized void withUnsealedConfiguration(Runnable action) {
190203

191204
private void setConfigurationSealed(boolean sealed) {
192205
configurationSealed = sealed;
193-
if (configurationSealed && ClassInitializationOptions.PrintClassInitialization.getValue()) {
194-
List<ClassOrPackageConfig> allConfigs = classInitializationConfiguration.allConfigs();
195-
allConfigs.sort(Comparator.comparing(ClassOrPackageConfig::getName));
196-
ReportUtils.report("class initialization configuration", SubstrateOptions.reportsPath(), "class_initialization_configuration", "csv", writer -> {
197-
writer.println("Class or Package Name, Initialization Kind, Reasons");
198-
for (ClassOrPackageConfig config : allConfigs) {
199-
writer.append(config.getName()).append(", ").append(config.getKind().toString()).append(", ")
200-
.append(String.join(" and ", config.getReasons())).append(System.lineSeparator());
201-
}
202-
});
203-
}
204206
}
205207

206208
/**

0 commit comments

Comments
 (0)