RFR: [MVT] MethodHandlesTest fails with assertions enabled
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Tue Jul 25 09:27:37 UTC 2017
Looks good.
Best regards,
Vladimir Ivanov
On 7/25/17 2:02 AM, Maurizio Cimadamore wrote:
> Thanks for the review. Here's an updated webrev:
>
> http://cr.openjdk.java.net/~mcimadamore/8185142-jdk_v2/
>
> Maurizio
>
>
> On 24/07/17 17:28, Vladimir Ivanov wrote:
>> Thanks for taking care of it, Maurizio!
>>
>> ========================================
>> + static final class Carrier_Q {
>> + @Stable
>> + final Object boxedValue;
>> + @Stable
>> + final MethodHandle unboxHandle;
>>
>> @Stable isn't needed. Final fields in java.lang.invoke are trusted by
>> JIT-compilers.
>>
>> ========================================
>> + static final MethodHandle BOX_VALUE_GETTER;
>> + static final MethodHandle UNBOX_HANDLE_GETTER;
>>
>> + NamedFunction unboxGetter = new
>> NamedFunction(Carrier_Q.UNBOX_HANDLE_GETTER);
>>
>> + NamedFunction boxedValue = new
>> NamedFunction(Carrier_Q.BOX_VALUE_GETTER);
>>
>> Maybe cache NamedFunctions right away?
>>
>> ========================================
>> - return mh.copyWithExtendL(type2, form2, value)
>> - .copyWithExtendL(type2, form2, unbox);
>> + try {
>> + return mh.copyWithExtendL(type2, form2, new
>> Carrier_Q(value, unbox));
>> + } catch (Throwable ex) {
>> + throw new IllegalStateException(ex);
>> + }
>>
>> Why do you need a try-catch block here?
>>
>> Otherwise, looks good.
>>
>> Best regards,
>> Vladimir Ivanov
>>
>> On 7/24/17 7:14 PM, Maurizio Cimadamore wrote:
>>> Hi,
>>> this is a fix for a problem when running MethodHandlesTest with
>>> assertions enabled (-esa). Currently, bound method handles with value
>>> types are handled by encoding a bound value as a boxed value + unbox
>>> MH pair - but doing so breaks some arity invariants for BMHs. This
>>> makes the pair encoding explicit, by adding a small carrier class for
>>> the box/MH pair, which is then used to encode the bound value.
>>>
>>> http://cr.openjdk.java.net/~mcimadamore/8185142-jdk/
>>>
>>> Maurizio
>>>
>
More information about the valhalla-dev
mailing list