From: aclement Date: Fri, 27 Feb 2009 23:28:35 +0000 (+0000) Subject: 266564: annotation style inline problem for double slot var types X-Git-Tag: pre268419~57 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8ab8418959144feced704582e8c4ea123142f293;p=aspectj.git 266564: annotation style inline problem for double slot var types --- 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(); } } }