RFR (XS): [MVT] Support Q-types in MHs.constant()

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Jul 12 13:35:44 UTC 2017

On 12/07/17 13:54, Vladimir Ivanov wrote:
> 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.
Makes sense - I just wanted to make sure we had a way to 'keep the lid' 
on top of valueness in MHs :-)

> 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