/** * Visits a label. A label designates the instruction that will be visited * just after it. * * @param label * a {@link Label Label} object. */ public void visitLabel(Label label) { if (mv != null) { mv.visitLabel(label); } }
@Override public void visitLabel(final Label label) { mv.visitLabel(label); }
protected void instructionGenerate(MethodExecuteContext context){ factorsToStack(context); negativeCmp(context, falseLbl); MethodVisitor mv = context.getInstructions().getMv(); //push true to stack mv.visitInsn(Opcodes.ICONST_0 + 1); mv.visitJumpInsn(Opcodes.GOTO, trueLbl); mv.visitLabel(falseLbl); //push false to stack mv.visitInsn(Opcodes.ICONST_0); mv.visitLabel(trueLbl); }
@Override protected void executing(MethodExecuteContext context) { MethodVisitor mv = context.getInstructions().getMv(); OperandStack stack = context.getInstructions().getOperandStack(); mv.visitJumpInsn(Opcodes.IFEQ, trueLbl); mv.visitInsn(Opcodes.ICONST_0); mv.visitJumpInsn(Opcodes.GOTO, falseLbl); mv.visitLabel(trueLbl); mv.visitInsn(Opcodes.ICONST_1); mv.visitLabel(falseLbl); stack.pop(); stack.push(Type.BOOLEAN_TYPE); stack.printState(); }
@Override protected void executing(MethodExecuteContext context) { Label andEndLbl = new Label(); Label falseLbl = new Label(); MethodVisitor mv = context.getInstructions().getMv(); OperandStack stack = context.getInstructions().getOperandStack(); jumpNegative(context, this, andEndLbl, falseLbl); mv.visitInsn(Opcodes.ICONST_1); mv.visitJumpInsn(Opcodes.GOTO, andEndLbl); mv.visitLabel(falseLbl); mv.visitInsn(Opcodes.ICONST_0); mv.visitLabel(andEndLbl); stack.pop(); stack.pop(); stack.push(Type.BOOLEAN_TYPE); }
@Override protected void executing(MethodExecuteContext context) { Label trueLbl = new Label(); Label orEndLbl = new Label(); MethodVisitor mv = context.getInstructions().getMv(); OperandStack stack = context.getInstructions().getOperandStack(); jumpPositive(context, this, trueLbl, orEndLbl); mv.visitInsn(Opcodes.ICONST_0); mv.visitJumpInsn(Opcodes.GOTO, orEndLbl); mv.visitLabel(trueLbl); mv.visitInsn(Opcodes.ICONST_1); mv.visitLabel(orEndLbl); stack.pop(); stack.pop(); stack.push(Type.BOOLEAN_TYPE); }
mv.visitLabel(l); if ((context.flags & SKIP_DEBUG) == 0 && l.line > 0) { mv.visitLineNumber(l.line, l); mv.visitLabel(labels[codeLength]);