RFR: 8224629: Unnecessary indirection in LambdaToMethod

Vicente Romero vicente.romero at oracle.com
Tue May 28 17:42:20 UTC 2019



On 5/28/19 12:50 PM, Alan Malloy wrote:
> We already have a MethodHandleSymbol, though. You're envisioning 
> something like this?
>
> class FancySymbol extends MethodHandleSymbol {
>     public MethodHandleSymbol asHandle() {
>         return new DelegatingFancySymbol(this);
>     }
> }

it would be more common to create an anonymous inner class, but yes the 
idea is the same.
>
> I'd argue that if FancySymbol wants to require you to call asHandle() 
> before you can treat it as a MethodHandleSymbol, it should have made 
> itself a MethodSymbol, not a MethodHandleSymbol. Then, of course 
> clients would be required to use its asHandle method, invoking 
> whatever non-obvious logic it represents, in order to get a 
> MethodHandleSymbol. I don't see any value in catering to classes like 
> this. If someone someday really does add FancySymbol and needs all 
> users of MethodHandleSymbol to call asHandle() on all instances, 
> they'll have more use sites than this one to refactor (right now, I 
> see LambdaToMethod.addDeserializationCase, PoolWriter.writeConstant, 
> and perhaps DynamicMethodSymbol will need some rethinking).
>
> But if you are sure, then we should at least remove the meaningless 
> upcast.

yep I agree on removing the upcast,

Vicente
>
> On Tue, May 28, 2019 at 9:29 AM Vicente Romero 
> <vicente.romero at oracle.com <mailto:vicente.romero at oracle.com>> wrote:
>
>     I think that I prefer the flexibility that invoking the ::asHandle
>     method brings. Suppose that a subclass wants to provide an
>     implementation of the asHandle method that will return the
>     non-obvious
>     result. Not a high probability case but we have seen similar uses
>     to the
>     Symbol::baseSymbol method. I think I prefer to have options,
>
>     Vicente
>
>     On 5/22/19 8:50 PM, Alan Malloy wrote:
>     > Hello. Please review this patch to eliminate an unnecessary
>     upcast and
>     > method call in LambdaToMethod.
>     >
>     > bug: https://bugs.openjdk.java.net/browse/JDK-8224629
>     > webrev: http://cr.openjdk.java.net/~cushon/8224629/webrev.00/
>     >
>     > Testing: All of jtreg:test/langtools/tools/javac pass locally.
>     No new
>     > test added, as no behavior change is intended.
>     >
>     > Thanks,
>     >     Alan
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20190528/59c8b409/attachment-0001.html>


More information about the compiler-dev mailing list