From 306a9efef536b431f43dd46a0d48f6f687295f20 Mon Sep 17 00:00:00 2001 From: Robbert Jan Grootjans Date: Thu, 15 Dec 2011 13:01:24 +0100 Subject: Generated nodes are now cached using a fully-weak Map. Should hopefully fix Netbeans performance issue #242. Compared heap dump pre and post-fix, seems to work. --- src/core/lombok/javac/handlers/JavacHandlerUtil.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/core/lombok') diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java index fc9435d8..2bf6c4ec 100644 --- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java +++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java @@ -24,6 +24,7 @@ package lombok.javac.handlers; import static lombok.javac.Javac.*; import java.lang.annotation.Annotation; +import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; @@ -89,11 +90,12 @@ public class JavacHandlerUtil { } } - private static Map generatedNodes = new WeakHashMap(); + private static Map> generatedNodes = new WeakHashMap>(); public static JCTree getGeneratedBy(JCTree node) { synchronized (generatedNodes) { - return generatedNodes.get(node); + WeakReference ref = generatedNodes.get(node); + return ref == null ? null : ref.get(); } } @@ -111,7 +113,7 @@ public class JavacHandlerUtil { public static T setGeneratedBy(T node, JCTree source) { synchronized (generatedNodes) { if (source == null) generatedNodes.remove(node); - else generatedNodes.put(node, source); + else generatedNodes.put(node, new WeakReference(source)); } return node; } -- cgit