[constant-folding] More indy experiments
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Thu May 11 09:47:02 UTC 2017
On 11/05/17 05:41, Tagir Valeev wrote:
> Hello, Maurizio!
>
> Thank you for your answers!
>
> As for (2) - the extra boxing you are observing is caused by the
> fact that Intrinsic.invokedynamic is not (yet) a polymorphic
> signature method (note that the polysig annotation is mentioned in
> the JEP). When it will be, boxing will disappear. But I think that
> if we go down the polysig path, then an explicit cast for the
> return type would be necessary (as it is for i.e.
> MethodHandle.invokeExact).
>
>
> I'm not aware about concrete implementation details in javac, but from
> an outsider point of view it should be doable. For normal generic
> return value javac is capable to automatically insert proper checkcast
> bytecode after call. The same type exactly should be used as
> MethodType return type for polysig invokedynamic if explicit cast is
> absent.
Doable yes - but note that it would require a spec change - as per JDK
8, the declaration of a polysignature method is only allowed to return
Object. If there's no cast, Object is the return type you get (unless
you are in a statement expression, in which case you get void), so to
get any other return type you need to insert a cast expression, which
will be interpreted by javac as a signal that you want to change the
return type of the underlying MethodType CP entry associated with the
polysig call. This is the status quo; I believe the idea of using return
type inference floated around at the time JDK 7 was developed, and I
think that one of the concerns in making return type inference more
magic was that if the return type is inferred as in a generic method
call, then there's a chance that your underlying signature might not be
stable in the face of subtle changes to the inference algorithm.
Note also that JEP 193 (VarHandles) [1] updated the rules for
polymorphic signature methods, allowing non-polymorphic return types
into the mix, which might also play a factor here.
Maurizio
>
> With best regards,
> Tagir Valeev.
More information about the amber-dev
mailing list