collection of small fixes from running runtime tests with -Xcomp

Roland Westrelin rwestrel at
Wed Mar 15 08:21:29 UTC 2017

>>>> 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.

Me neither. Vladimir I, what do you think?

Anyway, we at least need a workaround for this. Are you ok with the one
I used?

> Yes, you are right. Removing -Xint and adding -XX:-TieredCompilation
> is better.

Why not set TieredCompilation to false in arguments.cpp once for all?


More information about the valhalla-dev mailing list