-
Type:
Bug
-
Resolution: Fixed
-
Priority:
P4
-
Affects Version/s: repo-valhalla
-
Component/s: hotspot
Seems this test depends on the two optimizations: -XX:+InlineTypePassFieldsAsArgs and -XX:-InlineTypeReturnedAsFields. It fails without either of them.
So it might be more reasonable to only enable it for platforms which implement these two optimizations.
Simple experiment on linux-aarch64 platform:
```
diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java
index 113af923fc8..10e444846cd 100644
--- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java
+++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java
@@ -35,7 +35,7 @@
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run main/othervm -Xbootclasspath/a:.
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch
- * -XX:+InlineTypePassFieldsAsArgs -XX:+InlineTypeReturnedAsFields
+ * -XX:-InlineTypePassFieldsAsArgs -XX:-InlineTypeReturnedAsFields
* -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention
* -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter*
* -XX:CompileCommand=dontinline,*::constantGetter*
```
$ make test TEST="compiler/valhalla/inlinetypes/TestTrivialMethods.java"
command: main -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:-InlineTypePassFieldsAsArgs -XX:-InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
reason: User specified action: run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:-InlineTypePassFieldsAsArgs -XX:-InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
started: Mon Feb 02 16:58:39.428 CST 2026
Mode: othervm [/othervm specified]
Additional options from @modules: --add-modules java.base --add-exports java.base/jdk.internal.value=ALL-UNNAMED --add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED
Process id: 1054262
finished: Mon Feb 02 16:58:41.881 CST 2026
elapsed time (seconds): 2.453
configuration:
Boot Layer
add modules: java.base
add exports: java.base/jdk.internal.value ALL-UNNAMED
java.base/jdk.internal.vm.annotation ALL-UNNAMED
STDOUT:
CompileCommand: dontinline *.getter* bool dontinline = true
CompileCommand: dontinline *.setter* bool dontinline = true
CompileCommand: dontinline *.constantGetter* bool dontinline = true
For random generator using seed: 4406758258779095531
To re-run test with same seed value please add "-Djdk.test.lib.random.seed=4406758258779095531" to command line.
STDERR:
java.lang.RuntimeException: getter3 is not C2 compiled expected: 1 but was: 4
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:208)
at jdk.test.lib.Asserts.assertEQ(Asserts.java:184)
at compiler.valhalla.inlinetypes.TestTrivialMethods.main(TestTrivialMethods.java:162)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
at java.base/java.lang.Thread.run(Thread.java:1516)
JavaTest Message: Test threw exception: java.lang.RuntimeException: getter3 is not C2 compiled expected: 1 but was: 4
JavaTest Message: shutting down test
STATUS:Failed.`main' threw exception: java.lang.RuntimeException: getter3 is not C2 compiled expected: 1 but was: 4
So it might be more reasonable to only enable it for platforms which implement these two optimizations.
Simple experiment on linux-aarch64 platform:
```
diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java
index 113af923fc8..10e444846cd 100644
--- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java
+++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestTrivialMethods.java
@@ -35,7 +35,7 @@
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run main/othervm -Xbootclasspath/a:.
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch
- * -XX:+InlineTypePassFieldsAsArgs -XX:+InlineTypeReturnedAsFields
+ * -XX:-InlineTypePassFieldsAsArgs -XX:-InlineTypeReturnedAsFields
* -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention
* -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter*
* -XX:CompileCommand=dontinline,*::constantGetter*
```
$ make test TEST="compiler/valhalla/inlinetypes/TestTrivialMethods.java"
command: main -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:-InlineTypePassFieldsAsArgs -XX:-InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
reason: User specified action: run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:-InlineTypePassFieldsAsArgs -XX:-InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
started: Mon Feb 02 16:58:39.428 CST 2026
Mode: othervm [/othervm specified]
Additional options from @modules: --add-modules java.base --add-exports java.base/jdk.internal.value=ALL-UNNAMED --add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED
Process id: 1054262
finished: Mon Feb 02 16:58:41.881 CST 2026
elapsed time (seconds): 2.453
configuration:
Boot Layer
add modules: java.base
add exports: java.base/jdk.internal.value ALL-UNNAMED
java.base/jdk.internal.vm.annotation ALL-UNNAMED
STDOUT:
CompileCommand: dontinline *.getter* bool dontinline = true
CompileCommand: dontinline *.setter* bool dontinline = true
CompileCommand: dontinline *.constantGetter* bool dontinline = true
For random generator using seed: 4406758258779095531
To re-run test with same seed value please add "-Djdk.test.lib.random.seed=4406758258779095531" to command line.
STDERR:
java.lang.RuntimeException: getter3 is not C2 compiled expected: 1 but was: 4
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:208)
at jdk.test.lib.Asserts.assertEQ(Asserts.java:184)
at compiler.valhalla.inlinetypes.TestTrivialMethods.main(TestTrivialMethods.java:162)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
at java.base/java.lang.Thread.run(Thread.java:1516)
JavaTest Message: Test threw exception: java.lang.RuntimeException: getter3 is not C2 compiled expected: 1 but was: 4
JavaTest Message: shutting down test
STATUS:Failed.`main' threw exception: java.lang.RuntimeException: getter3 is not C2 compiled expected: 1 but was: 4
- links to
-
Commit(lworld)
openjdk/valhalla/5c2c8f5e
-
Review(lworld)
openjdk/valhalla/2009