diff options
author | jhugunin <jhugunin> | 2003-01-21 18:43:04 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-01-21 18:43:04 +0000 |
commit | b5bb16f1f0011e41454f60b2707420769dcd1ebc (patch) | |
tree | ca5c112b4a9c9b8e76f585b826e1e36cd6dbc422 /weaver | |
parent | 727c1ccdcf5b76962dd29d6d2aee0d73aff927b8 (diff) | |
download | aspectj-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.java | 6 |
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); |