[9] RFR (S) 8050173: Generalize BMH.copyWith API to all method handles (original) (raw)

Paul Sandoz paul.sandoz at oracle.com
Wed Jul 16 08:50:59 UTC 2014


On Jul 14, 2014, at 4:37 PM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:

http://cr.openjdk.java.net/~vlivanov/8050173/webrev.00/ https://bugs.openjdk.java.net/browse/JDK-8050173

Added j.l.i.MethodHandle.copyWith(MethodType, LambdaForm) and provided implementation for all subclasses. Also, some cleanups: * rewrote MH.viewAsType on top of MH.copyWith; * extended MH.viewAsType to do strict checks w/ assertions turned on (new parameter: boolean strict); * extended MT.isViewableAs to accept both interface preserving and interface erasing conversions (new parameter: boolean keepInterfaces). Testing: jdk/java/lang/invoke, jdk/java/util/streams, nashorn, octane w/ "-ea -esa" and COMPILETHRESHOLD={0,30}. Reviewed-by: vlivanov, ? Contributed-by: john.r.rose at oracle.com

Looks good, just one comment.

MethodHandles.restrictReceiver

This method has:

1578 private MethodHandle restrictReceiver(MemberName method, MethodHandle mh, Class<?> caller) throws IllegalAccessException { ... 1589 assert(mh instanceof DirectMethodHandle); // DirectMethodHandle.copyWith

Why not make the second parameter be "DirectMethodHandle mh" ?

Paul.



More information about the core-libs-dev mailing list