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.iva...@oracle.com> > À: "shilpi rastogi" <shilpi.rast...@oracle.com> > Cc: core-libs-dev@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.rast...@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; > > >