collection of small fixes from running runtime tests with -Xcomp
tobias.hartmann at oracle.com
Wed Mar 15 08:12:25 UTC 2017
On 15.03.2017 09:08, Roland Westrelin wrote:
>>> Sometimes a lambda form compiled as the root of a compilation has a
>>> signature with object parameters but is passed a value type: so it's
>>> passed fields but has no way to know. This could be fixed by always
>>> passing value types as references when the target is a lambda form. But
>>> then, method handles intrinsics could get reference inputs and call a
>>> method that expects value types to be passed as fields. So the code in
>>> MethodHandles::generate_method_handle_dispatch() would need to be
>>> adjusted to shuffle arguments. That all sounds too complicated so
>>> instead I disallowed lambda form as root of compilations.
>> I wonder if it's okay to treat value types as objects in such cases.
> That would be a problem in the method handles runtime then, right?
Yes, I think so but unfortunately I'm not too familiar with the method handle runtime.
>> I think it would make sense to add "-Xcomp -XX:-TieredCompilation" to
>> the runtime tests (I did that before, see patch below).
> But then, if we break something in the compiler, the runtime foks will
> start to see failures in their tests. Wouldn't it be better to remove
> the -Xint from the runtime tests, force TieredCompilation off so we can
> run the VM with no option. Then we can run their tests by passing -Xcomp
> to jtreg?
Yes, you are right. Removing -Xint and adding -XX:-TieredCompilation is better.
More information about the valhalla-dev