summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-01-21 18:43:04 +0000
committerjhugunin <jhugunin>2003-01-21 18:43:04 +0000
commitb5bb16f1f0011e41454f60b2707420769dcd1ebc (patch)
treeca5c112b4a9c9b8e76f585b826e1e36cd6dbc422 /weaver
parent727c1ccdcf5b76962dd29d6d2aee0d73aff927b8 (diff)
downloadaspectj-b5bb16f1f0011e41454f60b2707420769dcd1ebc.tar.gz
aspectj-b5bb16f1f0011e41454f60b2707420769dcd1ebc.zip
fix for Bug 29693
Use of within with declare soft yeilds VerifyError 1.1b4
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelShadow.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java
index 283e6e4de..bd8c76288 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java
@@ -972,7 +972,13 @@ public class BcelShadow extends Shadow {
}
+ //??? this shares a lot of code with the above weaveAfterThrowing
+ //??? would be nice to abstract that to say things only once
public void weaveSoftener(BcelAdvice munger, TypeX catchType) {
+ // a good optimization would be not to generate anything here
+ // if the shadow is GUARANTEED empty (i.e., there's NOTHING, not even
+ // a shadow, inside me).
+ if (getRange().getStart().getNext() == getRange().getEnd()) return;
InstructionFactory fact = getFactory();
InstructionList handler = new InstructionList();
BcelVar exceptionVar = genTempVar(catchType);