RFR[9]:Fix java/lang/invoke/MethodHandleImpl's use of Unsafe.defineAnonymousClass()

shilpi.rastogi at oracle.com shilpi.rastogi at oracle.com
Mon May 16 05:18:29 UTC 2016


Thanks Vladimir and Remi.

Please review updated webrev 
http://cr.openjdk.java.net/~srastogi/8149574/webrev/

Regards,
Shilpi

On 5/13/2016 7:31 PM, Vladimir Ivanov wrote:
> Good point, Remi. I agree that it's redundant.
>
> Best regards,
> Vladimir Ivanov
>
> On 5/13/16 4:51 PM, Remi Forax wrote:
>> Also instead of
>>   MethodVisitor mv = cw.visitMethod(ACC_PRIVATE | ACC_STATIC, 
>> "invoke_V",
>> "(Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)Ljava/lang/Object;",
>>                           null, new String[] { "java/lang/Throwable" });
>>
>> because the code is never read by a java compiler (as javac), you 
>> don't need to specify the exception
>> (checked exceptions are a Java the language artifact)
>>   MethodVisitor mv = cw.visitMethod(ACC_PRIVATE | ACC_STATIC, 
>> "invoke_V",
>> "(Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)Ljava/lang/Object;",
>>                           null, null);
>>
>> my 2 cents,
>> Rémi
>>
>> ----- Mail original -----
>>> De: "Vladimir Ivanov" <vladimir.x.ivanov at oracle.com>
>>> À: "shilpi rastogi" <shilpi.rastogi at oracle.com>
>>> Cc: core-libs-dev at openjdk.java.net
>>> Envoyé: Vendredi 13 Mai 2016 15:41:33
>>> Objet: Re: RFR[9]:Fix java/lang/invoke/MethodHandleImpl's use of    
>>> Unsafe.defineAnonymousClass()
>>>
>>> MethodHandle vamh = prepareForInvoker(MH_checkCallerClass);
>>>      Object ok = bccInvoker.invokeExact(vamh, new 
>>> Object[]{hostClass, bcc});
>>> +   assert Boolean.TRUE.equals(ok) : ok;
>>>
>>> What I meant is to convert the whole test (inside try-catch block) into
>>> an assert.
>>>
>>>
>>> +            UNSAFE.ensureClassInitialized(bcc);
>>>
>>> Do people see any reason to force invoker class init? I'd prefer to see
>>> it goes away.
>>>
>>> Also, as a second thought, generateInvokerTemplate() looks clearer than
>>> invokerTemplateGenerator().
>>>
>>> Something like the following:
>>>    http://cr.openjdk.java.net/~vlivanov/8149574/webrev.00/
>>>
>>> Additional cleanup: checkCallerClass() should return injected invoker
>>> class when invoked using a method handle, so no need in 2nd argument.
>>>
>>> Best regards,
>>> Vladimir Ivanov
>>>
>>> On 5/13/16 11:56 AM, shilpi.rastogi at oracle.com wrote:
>>>> Thanks Paul!
>>>>
>>>> Please review http://cr.openjdk.java.net/~srastogi/8149574/webrev10.0/
>>>>
>>>> Regards,
>>>> Shilpi
>>>>
>>>> On 5/13/2016 2:09 PM, Paul Sandoz wrote:
>>>>> assert Boolean.TRUE.equals(ok) : ok;
>>>>
>>>




More information about the core-libs-dev mailing list