diff options
author | aclement <aclement> | 2006-02-23 17:05:43 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-02-23 17:05:43 +0000 |
commit | cfa38afb145d74cd476653d1e98c190e10741d05 (patch) | |
tree | 4be7e63518b7d8f4bc03655b90e6aef292bfe717 /org.aspectj.ajdt.core/src | |
parent | e16effca408b23d1ec0d8b2b863518337d406dfd (diff) | |
download | aspectj-cfa38afb145d74cd476653d1e98c190e10741d05.tar.gz aspectj-cfa38afb145d74cd476653d1e98c190e10741d05.zip |
fix to save the big chunk of memory leaking over incremental compiles.
Diffstat (limited to 'org.aspectj.ajdt.core/src')
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjCompilerAdapter.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjCompilerAdapter.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjCompilerAdapter.java index 3b4197752..85c7c44a4 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjCompilerAdapter.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjCompilerAdapter.java @@ -115,8 +115,14 @@ public class AjCompilerAdapter implements ICompilerAdapter { if (compiler.options.complianceLevel == CompilerOptions.JDK1_5) inJava5Mode = true; IMessageHandler msgHandler = world.getMessageHandler(); - weaverMessageHandler = new WeaverMessageHandler(msgHandler, compiler); - world.setMessageHandler(weaverMessageHandler); + // Do we need to reset the message handler or create a new one? (This saves a ton of memory lost on incremental compiles...) + if (msgHandler instanceof WeaverMessageHandler) { + ((WeaverMessageHandler)msgHandler).resetCompiler(null); + weaverMessageHandler = (WeaverMessageHandler)msgHandler; + } else { + weaverMessageHandler = new WeaverMessageHandler(msgHandler, compiler); + world.setMessageHandler(weaverMessageHandler); + } } // the compilation lifecycle methods below are called in order as compilation progresses... |