collection of small fixes from running runtime tests with -Xcomp

Frederic Parain frederic.parain at oracle.com
Wed Mar 15 16:59:14 UTC 2017


> On Mar 14, 2017, at 12:16, Roland Westrelin <rwestrel at redhat.com> wrote:
> 
> 
> http://cr.openjdk.java.net/~roland/valhalla/xcompfixes/webrev.00/
> 
> Because of method handles, in SharedRuntime::allocate_value_types()
> using the static target is not good enough because its signature of the
> static target might differ from the signature of the actual callee. So
> instead, the runtime call is now passed the actual target which is good
> because we also probably need to do something to keep it alive.
> 
> The bcEscapeAnalyzer.cpp fix is obvious.
> 
> We can't use the value factory parameter mapping until the value class
> is initialized: added an assert and an uncommon trap so the assert
> doesn't fire.

Roland,,

Is C2 code relying on the ValueFactory_attribute used by vnew?
Vnew and this attribute are supposed to be removed in favor of the
vdefault/vwithfield solution to create values. If this is likely to cause
issues to C2, it’s time to speak up.

Regards,

Fred

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



More information about the valhalla-dev mailing list