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.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;