import org.aspectj.apache.bcel.generic.InstructionConstants;
import org.aspectj.apache.bcel.generic.InstructionFactory;
import org.aspectj.apache.bcel.generic.InstructionHandle;
+import org.aspectj.apache.bcel.generic.InstructionLV;
import org.aspectj.apache.bcel.generic.InstructionList;
import org.aspectj.apache.bcel.generic.InstructionSelect;
import org.aspectj.apache.bcel.generic.InstructionTargeter;
} else {
freshIndex = frameEnv.get(oldIndex);
}
- fresh.setIndex(freshIndex);
+ if (fresh instanceof RET) {
+ fresh.setIndex(freshIndex);
+ } else {
+ fresh = ((InstructionLV)fresh).setIndexAndCopyIfNecessary(freshIndex);
+ }
dest = ret.append(fresh);
} else {
dest = ret.append(fresh);
// } else {
freshIndex = oldIndex;//frameEnv.get(oldIndex);
// }
- fresh.setIndex(freshIndex);
+ if (fresh instanceof RET) {
+ fresh.setIndex(freshIndex);
+ } else {
+ fresh = ((InstructionLV)fresh).setIndexAndCopyIfNecessary(freshIndex);
+ }
dest = newList.append(fresh);
} else {
dest = newList.append(fresh);
import org.aspectj.apache.bcel.generic.InstructionBranch;
import org.aspectj.apache.bcel.generic.InstructionFactory;
import org.aspectj.apache.bcel.generic.InstructionHandle;
+import org.aspectj.apache.bcel.generic.InstructionLV;
import org.aspectj.apache.bcel.generic.InstructionList;
import org.aspectj.apache.bcel.generic.InstructionSelect;
import org.aspectj.apache.bcel.generic.InstructionTargeter;
} else {
freshIndex = remap.get(oldIndex);
}
- freshI.setIndex(freshIndex);
+ if (freshI instanceof RET) {
+ freshI.setIndex(freshIndex);
+ } else {
+ freshI = ((InstructionLV)freshI).setIndexAndCopyIfNecessary(freshIndex);
+ freshIh.setInstruction(freshI);
+ }
}
// System.err.println("JUST COPIED: " + oldIh.getInstruction().toString(freshMethod.getEnclosingClass().getConstantPoolGen().getConstantPool())
// + " INTO " + freshIh.getInstruction().toString(freshMethod.getEnclosingClass().getConstantPoolGen().getConstantPool()));