Return value type fields in registers

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

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

> 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

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.


More information about the valhalla-dev mailing list