Return value type fields in registers

Roland Westrelin rwestrel at redhat.com
Thu Jun 1 15:51:26 UTC 2017


Thanks for the detailed review. Here is a new webrev:

http://cr.openjdk.java.net/~roland/valhalla/returnconvention/webrev.02/

> I'm seeing build failures [1] on JPRT and the ValueTypeTestBench fails
> on Windows [2] and crashes with an assert [3] on my machine.

Build failures should be fixed now. I made sure it builds with
precompiled headers disabled.

I tried to figure out what could cause the windows failure but I can't
say I have a clue. Registers for returns should be the same but used in
a different order. I don't see why that would make a difference. I don't
have access to a windows machine so I don't see what I can do about it.

The assert failure should be fixed now. I added a new test case to
reproduce it (test76). Interestingly it causes a crash with
ValueTypeReturnedAsFields off. I found that's because we allocate in
vreturn, we can actually throw in a return which is not something c2
expects.

2308   set_bci(InvocationEntryBci);

in parse1.cpp breaks the exception handling logic. I commented it out
and everything seems to work. I also look at the code and saw no reason
for clearing the bci.

> compile.cpp
> - Why is the change in line 2869 necessary?

It's not. Removed.

> - It would be good to add a reference field to MyValue3 to extend
> coverage

Done. It caused some new failures in escape analysis so there's some new
changes there.

Roland.


More information about the valhalla-dev mailing list