diff options
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java | 10 |
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()) { |