Skip to content

Commit 5da9746

Browse files
author
Christian Wimmer
committed
For testing: enable new class initialization policy by default
1 parent 9f74c9f commit 5da9746

File tree

5 files changed

+22
-7
lines changed

5 files changed

+22
-7
lines changed

java-benchmarks/mx.java-benchmarks/mx_java_benchmarks.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,10 @@ def extra_image_build_argument(self, benchmark, args):
408408
if mx.get_jdk().version < expectedJdkVersion:
409409
mx.abort(benchmark + " needs at least JDK version " + str(expectedJdkVersion))
410410

411-
return super(BaseTikaBenchmarkSuite, self).extra_image_build_argument(benchmark, args)
411+
return [
412+
# Workaround for wrong class initialization configuration
413+
'--initialize-at-build-time=org.apache.pdfbox.rendering.ImageType$1,org.apache.pdfbox.rendering.ImageType$2,org.apache.pdfbox.rendering.ImageType$3,org.apache.pdfbox.rendering.ImageType$4',
414+
] + super(BaseTikaBenchmarkSuite, self).extra_image_build_argument(benchmark, args)
412415

413416

414417
class TikaWrkBenchmarkSuite(BaseTikaBenchmarkSuite, mx_sdk_benchmark.BaseWrkBenchmarkSuite):
@@ -478,6 +481,8 @@ def build_assertions(self, benchmark, is_gate):
478481
def extra_image_build_argument(self, benchmark, args):
479482
return [
480483
'--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk=ALL-UNNAMED',
484+
# Workaround for wrong class initialization configuration
485+
'--initialize-at-build-time=io.netty.handler.codec.http.cookie.ServerCookieEncoder',
481486
] + super(BaseMicronautBenchmarkSuite, self).extra_image_build_argument(benchmark, args)
482487

483488
def default_stages(self):

substratevm/mx.substratevm/mx_substratevm.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,8 +1359,9 @@ def checkLine(line, marker, init_kind, msg, wrongly_initialized_lines):
13591359
with open(classes_file) as f:
13601360
for line in f:
13611361
checkLine(line, "MustBeDelayed", "RUN_TIME", "classes are initialized at run time by default", wrongly_initialized_lines)
1362-
checkLine(line, "MustBeSafeEarly", "BUILD_TIME", "class proven as side-effect free before analysis", wrongly_initialized_lines)
1363-
checkLine(line, "MustBeSafeLate", "BUILD_TIME", "class proven as side-effect free after analysis", wrongly_initialized_lines)
1362+
# temporarily disabled, without partial evaluation of class initializer we do not initialize anything at build time
1363+
# checkLine(line, "MustBeSafeEarly", "BUILD_TIME", "class proven as side-effect free before analysis", wrongly_initialized_lines)
1364+
# checkLine(line, "MustBeSafeLate", "BUILD_TIME", "class proven as side-effect free after analysis", wrongly_initialized_lines)
13641365
if len(wrongly_initialized_lines) > 0:
13651366
msg = ""
13661367
for (line, error) in wrongly_initialized_lines:

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,8 @@ public void afterAnalysis(AfterAnalysisAccess access) {
191191
.collect(Collectors.toList());
192192
if (!unspecifiedClasses.isEmpty()) {
193193
System.err.println("The following classes have unspecified initialization policy:" + System.lineSeparator() + String.join(System.lineSeparator(), unspecifiedClasses));
194-
UserError.abort("To fix the error either specify the initialization policy for given classes or set %s",
194+
// Temporary not an error to allow testing of new policy
195+
System.err.println("To fix the error either specify the initialization policy for given classes or set " +
195196
SubstrateOptionsParser.commandArgument(ClassInitializationOptions.AssertInitializationSpecifiedForAllClasses, "-"));
196197
}
197198
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,5 @@ private static class InitializationValueEager extends InitializationValueTransfo
101101
public static final HostedOptionKey<Boolean> AssertInitializationSpecifiedForAllClasses = new HostedOptionKey<>(false);
102102

103103
@Option(help = "Use new class initialization strategy that allows all classes to be used at image build time.", type = OptionType.Expert)//
104-
public static final HostedOptionKey<Boolean> UseNewExperimentalClassInitialization = new HostedOptionKey<>(false);
104+
public static final HostedOptionKey<Boolean> UseNewExperimentalClassInitialization = new HostedOptionKey<>(true);
105105
}

substratevm/src/com.oracle.svm.test/src/com/oracle/svm/test/clinit/TestClassInitializationMustBeSafeEarly.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,10 +522,18 @@ private static void checkClasses(boolean checkSafeEarly, boolean checkSafeLate)
522522
errors.add(checkedClass.getName() + ": Check for MustBeDelayed failed");
523523
}
524524
if (nameHasSafeEarly && initialized != checkSafeEarly) {
525-
errors.add(checkedClass.getName() + ": Check for MustBeSafeEarly failed");
525+
/*
526+
* temporarily disabled, without partial evaluation of class initializer we do
527+
* not initialize anything at build time
528+
*/
529+
// errors.add(checkedClass.getName() + ": Check for MustBeSafeEarly failed");
526530
}
527531
if (nameHasSafeLate && initialized != checkSafeLate) {
528-
errors.add(checkedClass.getName() + ": Check for MustBeSafeLate failed");
532+
/*
533+
* temporarily disabled, without partial evaluation of class initializer we do
534+
* not initialize anything at build time
535+
*/
536+
// errors.add(checkedClass.getName() + ": Check for MustBeSafeLate failed");
529537
}
530538
}
531539
}

0 commit comments

Comments
 (0)