RFR: 8244413: Avoid rebinds in MethodHandle.viewAsType
Mandy Chung
mandy.chung at oracle.com
Tue May 5 22:23:33 UTC 2020
On 5/5/20 3:12 PM, Claes Redestad wrote:
> Hi,
>
> in the current implementation MethodHandle.viewAsType eagerly rebinds
> when creating a view of a method type as an alternative type:
>
> MethodHandle viewAsType(MethodType newType, boolean strict) {
> ...
> MethodHandle mh = rebind();
> return this.copyWith(newType, mh.form);
> }
>
> This prevents exposing uncrackable DMHs, ie, ones where calling
> Lookup.revealDirect(mh) would not produce a correct MethodHandleInfo.
>
> If we restructure this so that crackability is a property on the DMH, we
> can avoid the rebinds:
>
> http://cr.openjdk.java.net/~redestad/8244413/open.00/
>
This looks good.
Nit: one assert with paratheses and the other without. Better to make
them consistent.
163 assert viewAsTypeChecks(newType, strict); 164
assert(this.getClass() == DirectMethodHandle.class); // must override in
subclasses
thanks
Mandy
More information about the core-libs-dev
mailing list