aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core/src
diff options
context:
space:
mode:
authoraclement <aclement>2006-02-23 17:05:43 +0000
committeraclement <aclement>2006-02-23 17:05:43 +0000
commitcfa38afb145d74cd476653d1e98c190e10741d05 (patch)
tree4be7e63518b7d8f4bc03655b90e6aef292bfe717 /org.aspectj.ajdt.core/src
parente16effca408b23d1ec0d8b2b863518337d406dfd (diff)
downloadaspectj-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.java10
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...