Return value type fields in registers

Roland Westrelin rwestrel at redhat.com
Tue Jun 6 13:01:18 UTC 2017


> On Windows it still fails with
> Caused by: java.lang.RuntimeException: assertEquals: expected 1309945560682 to equal -2494
> 	at jdk.test.lib.Asserts.fail(Asserts.java:594)
> 	at jdk.test.lib.Asserts.assertEquals(Asserts.java:205)
> 	at jdk.test.lib.Asserts.assertEquals(Asserts.java:189)
> 	at jdk.test.lib.Asserts.assertEQ(Asserts.java:166)
> 	at compiler.valhalla.valuetypes.ValueTypeTestBench.test54_verifier(ValueTypeTestBench.java:1612)

The root cause on windows could missing shadown space. Can you try the
patch below?

Roland.

diff --git a/src/cpu/x86/vm/stubGenerator_x86_64.cpp b/src/cpu/x86/vm/stubGenerator_x86_64.cpp
--- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp
+++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp
@@ -4984,7 +4984,7 @@
     // the runtime calls read or update those registers. This needs to
     // be in sync with SharedRuntime::java_return_convention().
     enum layout {
-      pad_off, pad_off_2,
+      pad_off = frame::arg_reg_save_area_bytes/BytesPerInt, pad_off_2,
       rax_off, rax_off_2,
       j_rarg5_off, j_rarg5_2,
       j_rarg4_off, j_rarg4_2,


More information about the valhalla-dev mailing list