From 8ab8418959144feced704582e8c4ea123142f293 Mon Sep 17 00:00:00 2001 From: aclement Date: Fri, 27 Feb 2009 23:28:35 +0000 Subject: [PATCH] 266564: annotation style inline problem for double slot var types --- weaver/src/org/aspectj/weaver/bcel/BcelShadow.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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(); } } } -- 2.39.5