diff options
author | aclement <aclement> | 2009-02-27 23:28:35 +0000 |
---|---|---|
committer | aclement <aclement> | 2009-02-27 23:28:35 +0000 |
commit | 8ab8418959144feced704582e8c4ea123142f293 (patch) | |
tree | e012306d4746981a27dca1326621f0d0d2f6ef19 | |
parent | 0317807e6cb65e3e018a41a3200975e06047a011 (diff) | |
download | aspectj-8ab8418959144feced704582e8c4ea123142f293.tar.gz aspectj-8ab8418959144feced704582e8c4ea123142f293.zip |
266564: annotation style inline problem for double slot var types
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelShadow.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java index b1f07b039..086b8f166 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java @@ -2158,6 +2158,7 @@ public class BcelShadow extends Shadow { proceedVarList.add(new BcelVar(targetVar.getType(), extraParamOffset)); extraParamOffset += targetVar.getType().getSize(); } + int idx = 0; for (int i = 0, len = getArgCount(); i < len; i++) { argsToCallLocalAdviceMethodWith.add(argVars[i]); proceedVarList.add(new BcelVar(argVars[i].getType(), extraParamOffset)); @@ -2533,6 +2534,7 @@ public class BcelShadow extends Shadow { int localJp = localAdviceMethod.allocateLocal(proceedingJpType); ret.append(InstructionFactory.createStore(proceedingJpType, localJp)); + int idx = 0; for (int i = 0, len = callbackMethod.getArgumentTypes().length; i < len; i++) { Type stateType = callbackMethod.getArgumentTypes()[i]; /* ResolvedType stateTypeX = */ @@ -2547,8 +2549,10 @@ public class BcelShadow extends Shadow { // // )); // // cast ? // + idx++; } else { - ret.append(InstructionFactory.createLoad(stateType, i)); + ret.append(InstructionFactory.createLoad(stateType, idx)); + idx += stateType.getSize(); } } } |