@Override public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) { return new JumpInsnNode(opcode, clone(label, labels)) .cloneAnnotations(this); } }
@Override public void accept(final MethodVisitor mv) { mv.visitJumpInsn(opcode, label.getLabel()); acceptAnnotations(mv); }
@Override public void visitJumpInsn(final int opcode, final Label label) { instructions.add(new JumpInsnNode(opcode, getLabelNode(label))); }
return (N)new JumpInsnNode(old.getOpcode(), cloneInsnNode(old.label));
+ " is a RET not owned by any subroutine"); newInstructions.add(new JumpInsnNode(GOTO, retlabel)); } else if (insn.getOpcode() == JSR) { LabelNode lbl = ((JumpInsnNode) insn).label; newInstructions.add(new JumpInsnNode(GOTO, startlbl)); newInstructions.add(newinst.returnLabel);
"I")); afterInstructions.add(new LdcInsnNode(HqlTokenTypes.QUERY)); afterInstructions.add(new JumpInsnNode(Opcodes.IF_ICMPNE, isNotQueryLabelNode)); "()Z", false)); afterInstructions.add(new JumpInsnNode(Opcodes.IFEQ, endIfNode)); afterInstructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); afterInstructions.add( true)); afterInstructions.add(new TypeInsnNode(Opcodes.INSTANCEOF, ASM.getInternalName(DistinctLimitDialect.class))); afterInstructions.add(new JumpInsnNode(Opcodes.IFEQ, endIfNode)); afterInstructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); afterInstructions.add(
Type.getDescriptor(Field.class))); tmpInstructions.add(endTryLabelNode); tmpInstructions.add(new JumpInsnNode(Opcodes.GOTO, endCatchLabelNode)); tmpInstructions.add(catchNoSuchFieldLabelNode); tmpInstructions.add(new InsnNode(Opcodes.POP)); //pop exception ASM.getDescriptor(getMethodFieldType(methodEntry)))); tmpInstructions.add(endTryLabelNode); tmpInstructions.add(new JumpInsnNode(Opcodes.GOTO, endCatchLabelNode)); tmpInstructions.add(catchNoSuchMethodLabelNode); tmpInstructions.add(new InsnNode(Opcodes.POP)); //pop exception
instructions.add(new JumpInsnNode(Opcodes.IFNE, useDistinctLabelNode)); instructions.add(new InsnNode(Opcodes.RETURN)); instructions.add(useDistinctLabelNode);