deduplicating lambda methods
vicente.romero at oracle.com
Sat Mar 3 04:01:47 UTC 2018
On 03/02/2018 08:03 PM, Liam Miller-Cushon wrote:
> I'm interested in adding support for deduplicating lambda methods to
> javac. The idea is that if a compilation unit contains two lambdas
> that are identical (including any captured state and the functional
> interface they implement) we could re-use the same implementation
> method for both.
> I understand there might have been some prior discussion about this.
> Is there interest in investigating the feature? What sort of technical
> considerations have been identified so far?
> I have been thinking about a couple of questions:
> 1) How to identifying duplicates: I have a prototype that runs during
> lambda desugaring and identifies duplicates by diffing ASTs. Is that
> the best place for deduplication, or it worth considering comparing
> generated code instead of ASTs?
are you doing an exact diff? I assume that we want: s -> s to be equal
to z -> z provided that the target is the same
> 2) Debug info: the optimization is safe if line numbers are not being
> emitted. If they are, is there a way to deduplicate the methods
> without breaking debug info?
I haven't tried to debug a method with more than one LNT, the spec
allows it but not sure how IDEs will operate on that
More information about the amber-dev