RFR (XS): [MVT] Support Q-types in MHs.constant()
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Wed Jul 12 12:54:19 UTC 2017
Though it looks attractive at first, I don't think it'll take us too far.
j.l.i API is full of method handle combinators which should properly
handle DVTs. If there's a separate place for DVT-capable combinators,
then the combinators (all of them?) should be duplicated there and,
moreover, special checks should be added across j.l.i API to reject any
inputs which require DVT support. It looks like an overkill from both
API & implementation perspective.
IMO there's a better alternative: only keep MVT-specific API
experimental (VCC->DVT, withers, etc) and enhance j.l.i implementation
to support DVT-capable operations. It doesn't require any public API
changes and enables safe removal of MVT-specific API. If there's no way
for the user to get a DVT class, then there'll be no way to create any
DVT-capable method handle.
Best regards,
Vladimir Ivanov
On 7/12/17 3:29 AM, Maurizio Cimadamore wrote:
> Looks good
>
> Moving forward I have a concern on adding more capabilities to
> MethodHandles/MethodHandles.lookup.
>
> On the one hand it's cool that we're trying to tweak things so that they
> 'just work' - that is, let devs use existing MH capabilities to
> create/combine value-based handles.
>
> On the other hand, this makes the surface area of MVT very blurry, as it
> becomes harder to see where standard JDK ends and where MVT begins. This
> could be problematic if, e.g. at some point we needed to move all the
> MVT stuff under an experimental incubator module.
>
> So, I'm starting to wonder if we shouldn't just add a ValueHandles
> class, similar to MethodHandles.
>
> In other words - have a ValueHandles class which contains the relevant
> methods from ValueType plus the ones we've tweaked inside MethodHandles.
> And have a ValueHandles.Lookup class to perform getter and wither lookup
> on values.
>
> What do you think?
>
> Maurizio
>
>
> On 11/07/17 18:43, Vladimir Ivanov wrote:
>> http://cr.openjdk.java.net/~vlivanov/valhalla/8184184/webrev.00/
>>
>> Support Q-types in MHs.constant().
>>
>> Testing: jdk/test/valhalla/mvt/
>>
>> Best regards,
>> Vladimir Ivanov
More information about the valhalla-dev
mailing list