[lworld] RFR: 8356963: [lworld] MemNode::optimize_simple_memory_chain fails with "sanity check for basic cases" [v2]
Tobias Hartmann
thartmann at openjdk.org
Fri May 16 12:51:06 UTC 2025
On Thu, 15 May 2025 16:48:30 GMT, Quan Anh Mai <qamai at openjdk.org> wrote:
>> Many thanks to @TobiHartmann for the speedy investigation. This patch fixes the issue by adding a `ciField` for the null marker. I also do a small change to make the name of the `ciField` of a flattened field clearer. I think adding a scenario to test flattening of nullable and atomic fields is necessary. There are some failures that I filed https://bugs.openjdk.org/browse/JDK-8357061 for the investigation.
>>
>> Please kindly review, thanks a lot.
>
> Quan Anh Mai has updated the pull request incrementally with one additional commit since the last revision:
>
> include
Thanks a lot for working on this Quan-Anh!
Give that null markers are `ciFields`now, I think this should be refactored, right?
https://github.com/openjdk/valhalla/blob/d528f94d0992f77c044cfea7ab68d1a4b091c6c3/src/hotspot/share/opto/callnode.cpp#L520
https://github.com/openjdk/valhalla/blob/d528f94d0992f77c044cfea7ab68d1a4b091c6c3/src/hotspot/share/opto/callnode.cpp#L535
Can we now also get rid of `InlineTypeNode::field_value_by_offset` -> `InlineTypeNode::null_marker_by_offset`?
The new scenario 6 fails with `compiler/valhalla/inlinetypes/TestValueClasses.java` on Windows:
Custom Run Test: @Run: test13_verifier - @Test: test13:
compiler.lib.ir_framework.shared.TestRunException: There was an error while invoking @Run method public void compiler.valhalla.inlinetypes.TestValueClasses.test13_verifier()
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:162)
at compiler.lib.ir_framework.test.AbstractTest.run(AbstractTest.java:105)
at compiler.lib.ir_framework.test.CustomRunTest.run(CustomRunTest.java:89)
at compiler.lib.ir_framework.test.TestVM.runTests(TestVM.java:869)
at compiler.lib.ir_framework.test.TestVM.start(TestVM.java:256)
at compiler.lib.ir_framework.test.TestVM.main(TestVM.java:169)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:159)
... 5 more
Caused by: java.lang.RuntimeException: assertTrue: expected true, was false
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertTrue(Asserts.java:545)
at jdk.test.lib.Asserts.assertTrue(Asserts.java:531)
at compiler.valhalla.inlinetypes.TestValueClasses.test13_verifier(TestValueClasses.java:482)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 7 more
Custom Run Test: @Run: test10_verifier - @Test: test10:
compiler.lib.ir_framework.shared.TestRunException: There was an error while invoking @Run method public void compiler.valhalla.inlinetypes.TestValueClasses.test10_verifier()
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:162)
at compiler.lib.ir_framework.test.AbstractTest.run(AbstractTest.java:105)
at compiler.lib.ir_framework.test.CustomRunTest.run(CustomRunTest.java:89)
at compiler.lib.ir_framework.test.TestVM.runTests(TestVM.java:869)
at compiler.lib.ir_framework.test.TestVM.start(TestVM.java:256)
at compiler.lib.ir_framework.test.TestVM.main(TestVM.java:169)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:159)
... 5 more
Caused by: java.lang.RuntimeException: assertEquals expected: compiler.valhalla.inlinetypes.MyValueClass1 at f403cd58 but was: compiler.valhalla.inlinetypes.MyValueClass1 at 10d8d1b9
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:208)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:195)
at jdk.test.lib.Asserts.assertEQ(Asserts.java:172)
at compiler.valhalla.inlinetypes.TestValueClasses.test10_verifier(TestValueClasses.java:448)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 7 more
Custom Run Test: @Run: test22_verifier - @Test: test22:
compiler.lib.ir_framework.shared.TestRunException: There was an error while invoking @Run method public void compiler.valhalla.inlinetypes.TestValueClasses.test22_verifier()
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:162)
at compiler.lib.ir_framework.test.AbstractTest.run(AbstractTest.java:100)
at compiler.lib.ir_framework.test.CustomRunTest.run(CustomRunTest.java:89)
at compiler.lib.ir_framework.test.TestVM.runTests(TestVM.java:869)
at compiler.lib.ir_framework.test.TestVM.start(TestVM.java:256)
at compiler.lib.ir_framework.test.TestVM.main(TestVM.java:169)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:159)
... 5 more
Caused by: java.lang.RuntimeException: assertEquals expected: 103 but was: 120
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:208)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:195)
at compiler.valhalla.inlinetypes.TestValueClasses.test22_verifier(TestValueClasses.java:961)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 7 more
Custom Run Test: @Run: test15_verifier - @Test: test15:
compiler.lib.ir_framework.shared.TestRunException: There was an error while invoking @Run method public void compiler.valhalla.inlinetypes.TestValueClasses.test15_verifier()
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:162)
at compiler.lib.ir_framework.test.AbstractTest.run(AbstractTest.java:105)
at compiler.lib.ir_framework.test.CustomRunTest.run(CustomRunTest.java:89)
at compiler.lib.ir_framework.test.TestVM.runTests(TestVM.java:869)
at compiler.lib.ir_framework.test.TestVM.start(TestVM.java:256)
at compiler.lib.ir_framework.test.TestVM.main(TestVM.java:169)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:159)
... 5 more
Caused by: java.lang.RuntimeException: assertEquals expected: compiler.valhalla.inlinetypes.MyValueClass1 at f403cd58 but was: compiler.valhalla.inlinetypes.MyValueClass1 at 10d8d1b9
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:208)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:195)
at jdk.test.lib.Asserts.assertEQ(Asserts.java:172)
at compiler.valhalla.inlinetypes.TestValueClasses.test15_verifier(TestValueClasses.java:548)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 7 more
Custom Run Test: @Run: test9_verifier - @Test: test9:
compiler.lib.ir_framework.shared.TestRunException: There was an error while invoking @Run method public void compiler.valhalla.inlinetypes.TestValueClasses.test9_verifier()
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:162)
at compiler.lib.ir_framework.test.AbstractTest.run(AbstractTest.java:105)
at compiler.lib.ir_framework.test.CustomRunTest.run(CustomRunTest.java:89)
at compiler.lib.ir_framework.test.TestVM.runTests(TestVM.java:869)
at compiler.lib.ir_framework.test.TestVM.start(TestVM.java:256)
at compiler.lib.ir_framework.test.TestVM.main(TestVM.java:169)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at compiler.lib.ir_framework.test.CustomRunTest.invokeTest(CustomRunTest.java:159)
... 5 more
Caused by: java.lang.RuntimeException: assertEquals expected: compiler.valhalla.inlinetypes.MyValueClass1 at f403cd58 but was: compiler.valhalla.inlinetypes.MyValueClass1 at 10d8d1b9
at jdk.test.lib.Asserts.fail(Asserts.java:715)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:208)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:195)
at jdk.test.lib.Asserts.assertEQ(Asserts.java:172)
at compiler.valhalla.inlinetypes.TestValueClasses.test9(TestValueClasses.java:424)
at compiler.valhalla.inlinetypes.TestValueClasses.test9_verifier(TestValueClasses.java:435)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 7 more
`sources/TestIncludesAreSorted.java` fails due to:
`java.lang.RuntimeException: 1 files with unsorted headers found: ... open/src/hotspot/share/ci/ciField.cpp`
I linked the failure results in JBS.
src/hotspot/share/ci/ciField.cpp line 236:
> 234:
> 235: char buffer[256];
> 236: jio_snprintf(buffer, sizeof(buffer), "%s.%s", declared_field->name()->as_utf8(), subfield->name()->as_utf8());
There's some code that matches on `ciField::name`, for example in `ciField::is_call_site_target` but I think that should never be used for flat fields.
-------------
Changes requested by thartmann (Committer).
PR Review: https://git.openjdk.org/valhalla/pull/1456#pullrequestreview-2846519371
PR Review Comment: https://git.openjdk.org/valhalla/pull/1456#discussion_r2092976186
More information about the valhalla-dev
mailing list