From 589e3dc730d57c4d9c63fa79db97653a8e30c898 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Mon, 9 Sep 2019 13:38:21 -0700 Subject: [PATCH] Fix Bug 550696 - ClassCastException during load time weaving: InstructionHandle cannot be cast to BranchHandle --- .../src/main/java/org/aspectj/weaver/bcel/BcelShadow.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java index 7e1e0bfc4..adb7fc921 100644 --- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java +++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java @@ -25,6 +25,7 @@ import org.aspectj.apache.bcel.Constants; import org.aspectj.apache.bcel.classfile.ConstantPool; import org.aspectj.apache.bcel.classfile.Field; import org.aspectj.apache.bcel.generic.ArrayType; +import org.aspectj.apache.bcel.generic.BranchHandle; import org.aspectj.apache.bcel.generic.FieldInstruction; import org.aspectj.apache.bcel.generic.INVOKEINTERFACE; import org.aspectj.apache.bcel.generic.Instruction; @@ -2987,8 +2988,7 @@ public class BcelShadow extends Shadow { .forName("org.aspectj.runtime.internal.AroundClosure"), Modifier.PUBLIC, "unlink", "()V"))); - InstructionHandle jumpOverHandler = advice.append(InstructionConstants.NOP); - + BranchHandle jumpOverHandler = advice.append(new InstructionBranch(Constants.GOTO, null)); // Call unlink in finally block // Do not POP the exception off, we need to rethrow it @@ -2999,7 +2999,7 @@ public class BcelShadow extends Shadow { // After that exception is on the top of the stack again advice.append(InstructionConstants.ATHROW); InstructionHandle jumpTarget = advice.append(InstructionConstants.NOP); - jumpOverHandler.setInstruction(InstructionFactory.createBranchInstruction(Constants.GOTO, jumpTarget)); + jumpOverHandler.setTarget(jumpTarget); enclosingMethod.addExceptionHandler(tryUnlinkPosition, unlinkInsn, handlerStart, null/* ==finally */, false); } } -- 2.39.5