deduplicating lambda methods
Vicente Romero
vicente.romero at oracle.com
Fri Mar 30 13:27:26 UTC 2018
Hi Bernard,
Thanks for the report I will take a look,
Vicente
On 03/30/2018 09:12 AM, B. Blaser wrote:
> On 27 March 2018 at 19:33, Vicente Romero <vicente.romero at oracle.com> wrote:
>>
>> On 03/27/2018 12:58 PM, Brian Goetz wrote:
>>> It looks like there were no changes in the outcome, perhaps because there
>>> were no within-file duplications in the JDK. (Which I believe.) A more
>>> streams/Rx/CompletableFuture-heavy codebase would likely see an improvement.
>>
>> right, no difference :(, let's see what happens with Liam's numbers :)
>>
>> Vicente
> I perhaps found at least one trivial lambda duplicate in the JDK (javac) here:
>
> http://hg.openjdk.java.net/jdk/jdk/file/814bd31f8da0/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java#l450
>
> I tried to reproduce it like this (is that right?):
>
> import java.util.List;
> import java.util.Set;
>
> public class Test {
> class CaputureScanner extends SimpleVisitor {
> public Void visitClassType(Type.ClassType t, Set<Type> seen) {
> if ( t.isCompound() ) {
> directSupertypes(t).forEach(s -> visit(s, seen));
> } else {
> t.allparams().forEach(ta -> visit(ta, seen));
> }
> return null;
> }
> }
> public static class SimpleVisitor {
> public Void visit(Type t, Set<Type> seen) { return null; }
> }
> public static class Type {
> public boolean isCompound() { return false; }
>
> public static class ClassType extends Type {
> public List<Type> allparams() { return null; }
> }
> }
> public List<Type> directSupertypes(Type t) { return null; }
> }
>
> which is correctly de-duplicated.
>
> But stats don't show any difference, are they missing something?
>
> Bernard
More information about the amber-dev
mailing list