FTR: JVM Lang Summit presentation
Remi Forax
forax at univ-mlv.fr
Fri Sep 19 21:58:48 UTC 2014
On 09/19/2014 07:13 PM, John Rose wrote:
> On Sep 18, 2014, at 2:20 AM, Remi Forax <forax at univ-mlv.fr
> <mailto:forax at univ-mlv.fr>> wrote:
>
>> also note that we only need overloads for signature, if we use indy,
>> we can have
>> several overloads but one implementation.
>
> That's why I have been casting about for some way to express
> indy-binding for VarHandle APIs (instead of the sig-poly binding of
> VHs in Paul's prototype).
An annotation on the method declaration.
A meta-annotation on the annotation that specify the BSM.
Meta-protocol: a call to an annotated method is translated to an
invokedynamic, the descriptor of indy is inferred from the type of the
arguments (like with a polymorphic signature), the return type is the
return type of the annotated method (may be a cast can override this
behavior). If the annotated method is not abstract,
the annotated method is sent as a bootstrap argument.
>
> Indy provides caller-side signature polymorphism, and leaves the
> binding up to a factory somewhere, which might be as simple as a
> MH.asType call to take the polymorphism away, or could be something
> fancier.
>
> I also think that the asType transform is a good starting point for
> expressing instantiation of parametric polymorphism.
Let see, the JIT will prefer the types propagated from the callsite to
the profile types.
The compiler will have to use v-opcodes (opcodes depend on either the
types on stack or the type of the local variables).
There is still the problem of opcodes that embed specified types like
getfield/invoke*, instanceof, checkcast, anewarrray
or worst a lambda that use a parametrized functional interfaces (in that
case, the BSM args of invokedynamic also need to be specialized).
>
> — John
Rémi
More information about the valhalla-dev
mailing list