mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-16 22:14:39 +00:00
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.
This commit is contained in:
1 parent
6ccec72c7e
commit
306a9efef5
1 file changed
+5
-3
@@ -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<JCTree, JCTree> generatedNodes = new WeakHashMap<JCTree, JCTree>();
|
||||
private static Map<JCTree, WeakReference<JCTree>> generatedNodes = new WeakHashMap<JCTree, WeakReference<JCTree>>();
|
||||
|
||||
public static JCTree getGeneratedBy(JCTree node) {
|
||||
synchronized (generatedNodes) {
|
||||
return generatedNodes.get(node);
|
||||
WeakReference<JCTree> ref = generatedNodes.get(node);
|
||||
return ref == null ? null : ref.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +113,7 @@ public class JavacHandlerUtil {
|
||||
public static <T extends JCTree> 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<JCTree>(source));
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user