From 7d24f9c9a52861ced99f419edb07533f9b99a7ed Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Fri, 12 Jun 2009 08:37:38 +0200 Subject: Removed the WeakHashMap for caching EclipseAST objects; obviously wasn't working due to circular reference from the EclipseAST back to the CUD. Now, patched a field into CompilationUnitDeclaration and using that, which works much better together with the garbage collector. --- .../lombok/agent/eclipse/EclipseParserPatcher.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src_eclipseagent/lombok/agent/eclipse/EclipseParserPatcher.java') diff --git a/src_eclipseagent/lombok/agent/eclipse/EclipseParserPatcher.java b/src_eclipseagent/lombok/agent/eclipse/EclipseParserPatcher.java index abe26683..81309b34 100644 --- a/src_eclipseagent/lombok/agent/eclipse/EclipseParserPatcher.java +++ b/src_eclipseagent/lombok/agent/eclipse/EclipseParserPatcher.java @@ -13,12 +13,21 @@ public class EclipseParserPatcher { ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { - if ( !ECLIPSE_PARSER_CLASS_NAME.equals(className) ) return null; - EclipseParserTransformer transformer = new EclipseParserTransformer(classfileBuffer); - return transformer.transform(); + if ( ECLIPSE_PARSER_CLASS_NAME.equals(className) ) { + EclipseParserTransformer transformer = new EclipseParserTransformer(classfileBuffer); + return transformer.transform(); + } + + if ( ECLIPSE_CUD_CLASS_NAME.equals(className) ) { + EclipseCUDTransformer transformer = new EclipseCUDTransformer(classfileBuffer); + return transformer.transform(); + } + + return null; } } - + + static final String ECLIPSE_CUD_CLASS_NAME = "org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration"; static final String ECLIPSE_PARSER_CLASS_NAME = "org/eclipse/jdt/internal/compiler/parser/Parser"; public static void agentmain(String agentArgs, Instrumentation instrumentation) { -- cgit