RFR[9]:Fix java/lang/invoke/MethodHandleImpl's use of Unsafe.defineAnonymousClass()
Remi Forax
forax at univ-mlv.fr
Fri May 13 13:51:01 UTC 2016
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