]> source.dussan.org Git - aspectj.git/commitdiff
Fix Bug 550696 - ClassCastException during load time weaving: InstructionHandle canno...
authorAndy Clement <aclement@pivotal.io>
Mon, 9 Sep 2019 20:38:21 +0000 (13:38 -0700)
committerAndy Clement <aclement@pivotal.io>
Mon, 9 Sep 2019 20:38:21 +0000 (13:38 -0700)
weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java

index 7e1e0bfc4ef31800044b0fc0cfedfb8428c8a49d..adb7fc921630485637ca72df6d785f87266d70f1 100644 (file)
@@ -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);
                        }
                }