summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java b/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java
index 97e73832b..869ed5819 100644
--- a/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java
+++ b/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java
@@ -1324,6 +1324,16 @@ public final class LazyMethodGen implements Traceable {
}
}
}
+ if (!this.enclosingClass.getWorld().generateNewLvts) {
+ // Here the generateNewLvts option is used to control "Do not damage unusually positioned local
+ // variables that represent method parameters". Strictly speaking local variables that represent
+ // method parameters effectively have a bytecode range from 0..end_of_method - however some
+ // tools generate bytecode that specifies a compressed range. The code below would normally
+ // extend the parameter local variables to cover the full method but by setting paramSlots to -1
+ // here we cause the code below to avoid modifying any local vars that represent method
+ // parameters.
+ paramSlots = -1;
+ }
Map<InstructionHandle, Set<Integer>> duplicatedLocalMap = new HashMap<InstructionHandle, Set<Integer>>();
for (LocalVariableTag tag : localVariables.keySet()) {