Example usage for org.objectweb.asm Opcodes GOTO

List of usage examples for org.objectweb.asm Opcodes GOTO

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes GOTO.

Prototype

int GOTO

To view the source code for org.objectweb.asm Opcodes GOTO.

Click Source Link

Usage

From source file:org.jacoco.core.internal.analysis.MethodAnalyzerTest.java

License:Open Source License

private void createJumpBackwards() {
    method.visitLineNumber(1001, new Label());
    final Label l1 = new Label();
    method.visitJumpInsn(Opcodes.GOTO, l1);
    final Label l2 = new Label();
    method.visitLabel(l2);// w  ww.ja v a2  s.  c o m
    method.visitLineNumber(1002, l2);
    method.visitInsn(Opcodes.RETURN);
    method.visitLabel(l1);
    method.visitLineNumber(1003, l1);
    method.visitJumpInsn(Opcodes.GOTO, l2);
}

From source file:org.jacoco.core.internal.analysis.MethodAnalyzerTest.java

License:Open Source License

private void createTableSwitch() {
    method.visitLineNumber(1001, new Label());
    method.visitVarInsn(Opcodes.ILOAD, 1);
    Label l1 = new Label();
    Label l2 = new Label();
    Label l3 = new Label();
    method.visitTableSwitchInsn(1, 3, l3, new Label[] { l1, l2, l1 });
    method.visitLabel(l1);// w w w. j av  a 2  s.  c  o m
    method.visitLineNumber(1002, l1);
    method.visitIntInsn(Opcodes.BIPUSH, 11);
    method.visitVarInsn(Opcodes.ISTORE, 2);
    method.visitLineNumber(1003, new Label());
    Label l5 = new Label();
    method.visitJumpInsn(Opcodes.GOTO, l5);
    method.visitLabel(l2);
    method.visitLineNumber(1004, l2);
    method.visitIntInsn(Opcodes.BIPUSH, 22);
    method.visitVarInsn(Opcodes.ISTORE, 2);
    method.visitLineNumber(1005, new Label());
    method.visitJumpInsn(Opcodes.GOTO, l5);
    method.visitLabel(l3);
    method.visitLineNumber(1006, l3);
    method.visitInsn(Opcodes.ICONST_0);
    method.visitVarInsn(Opcodes.ISTORE, 2);
    method.visitLabel(l5);
    method.visitLineNumber(1007, l5);
    method.visitVarInsn(Opcodes.ILOAD, 2);
    method.visitInsn(Opcodes.IRETURN);
}

From source file:org.jacoco.core.internal.analysis.MethodAnalyzerTest.java

License:Open Source License

private void createTryCatchBlock() {
    Label l1 = new Label();
    Label l2 = new Label();
    Label l3 = new Label();
    Label l4 = new Label();
    method.visitTryCatchBlock(l1, l2, l3, "java/lang/Exception");
    method.visitLabel(l1);/*from  w w  w.  ja va  2  s .c  o  m*/
    method.visitLineNumber(1001, l1);
    method.visitVarInsn(Opcodes.ALOAD, 0);
    method.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Throwable", "printStackTrace", "()V");
    method.visitLabel(l2);
    method.visitJumpInsn(Opcodes.GOTO, l4);
    method.visitLabel(l3);
    method.visitLineNumber(1002, l3);
    method.visitVarInsn(Opcodes.ASTORE, 1);
    method.visitLabel(l4);
    method.visitLineNumber(1004, l4);
    method.visitInsn(Opcodes.RETURN);
}

From source file:org.jacoco.core.internal.flow.FrameSnapshotTest.java

License:Open Source License

@Test
public void should_not_capture_frame_when_no_frame_is_defined() {
    analyzer.visitJumpInsn(Opcodes.GOTO, new Label());
    frame = FrameSnapshot.create(analyzer, 0);
}

From source file:org.jacoco.core.internal.flow.LabelFlowAnalyzer.java

License:Open Source License

@Override
public void visitJumpInsn(final int opcode, final Label label) {
    LabelInfo.setTarget(label);//from www .j  a  v  a  2  s.  c  om
    if (opcode == Opcodes.JSR) {
        throw new AssertionError("Subroutines not supported.");
    }
    successor = opcode != Opcodes.GOTO;
    first = false;
}

From source file:org.jacoco.core.internal.instr.DuplicateFrameEliminatorTest.java

License:Open Source License

@Test
public void testJumpInsn() {
    testInstructionBetweenFrames(new JumpInsnNode(Opcodes.GOTO, new LabelNode()));
}

From source file:org.jacoco.core.internal.instr.FrameTracker.java

License:Open Source License

@Override
public void visitJumpInsn(final int opcode, final Label label) {
    switch (opcode) {
    case Opcodes.GOTO:
        break;//  ww  w. j  a v a 2 s.  co  m
    case Opcodes.IFEQ:
    case Opcodes.IFNE:
    case Opcodes.IFLT:
    case Opcodes.IFGE:
    case Opcodes.IFGT:
    case Opcodes.IFLE:
    case Opcodes.IFNULL:
    case Opcodes.IFNONNULL:
        pop(1);
        break;
    case Opcodes.IF_ICMPEQ:
    case Opcodes.IF_ICMPNE:
    case Opcodes.IF_ICMPLT:
    case Opcodes.IF_ICMPGE:
    case Opcodes.IF_ICMPGT:
    case Opcodes.IF_ICMPLE:
    case Opcodes.IF_ACMPEQ:
    case Opcodes.IF_ACMPNE:
        pop(2);
        break;
    default:
        throw new IllegalArgumentException();
    }
    mv.visitJumpInsn(opcode, label);
}

From source file:org.jacoco.core.internal.instr.MethodInstrumenter.java

License:Open Source License

@Override
public void visitJumpInsnWithProbe(final int opcode, final Label label, final int probeId) {
    if (opcode == Opcodes.GOTO) {
        probeInserter.insertProbe(probeId);
        mv.visitJumpInsn(Opcodes.GOTO, label);
    } else {/* w  w  w .j a v  a  2  s. co  m*/
        final Label intermediate = new Label();
        mv.visitJumpInsn(getInverted(opcode), intermediate);
        probeInserter.insertProbe(probeId);
        mv.visitJumpInsn(Opcodes.GOTO, label);
        mv.visitLabel(intermediate);
        frameInserter.insertFrame();
    }
}

From source file:org.jacoco.core.internal.instr.MethodInstrumenter.java

License:Open Source License

private void insertIntermediateProbe(final Label label) {
    final int probeId = LabelInfo.getProbeId(label);
    if (probeId != LabelInfo.NO_PROBE && !LabelInfo.isDone(label)) {
        mv.visitLabel(LabelInfo.getIntermediateLabel(label));
        frameInserter.insertFrame();/*from   ww  w.  j  a v  a2 s. c  o m*/
        probeInserter.insertProbe(probeId);
        mv.visitJumpInsn(Opcodes.GOTO, label);
        LabelInfo.setDone(label);
    }
}

From source file:org.jacoco.core.internal.instr.MethodInstrumenterTest.java

License:Open Source License

@Test
public void testVisitJumpInsnWithProbe_GOTO() {
    final Label label = new Label();
    instrumenter.visitJumpInsnWithProbe(Opcodes.GOTO, label, 3);

    expectedVisitor.visitLdcInsn("Probe 3");
    expectedVisitor.visitJumpInsn(Opcodes.GOTO, label);

    assertEquals(expected, actual);//from  w ww .  ja  va 2s .  com
}