List of usage examples for org.objectweb.asm Opcodes ILOAD
int ILOAD
To view the source code for org.objectweb.asm Opcodes ILOAD.
Click Source Link
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
/** * <pre>//from www . j a va 2s . co m * class C(a: Int = 42) * </pre> */ @Test public void should_filter_constructors() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "<init>", "(IILkotlin/jvm/internal/DefaultConstructorMarker;)V", null, null); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); m.visitVarInsn(Opcodes.ILOAD, 2); m.visitInsn(Opcodes.ICONST_1); m.visitInsn(Opcodes.IAND); Label label = new Label(); m.visitJumpInsn(Opcodes.IFEQ, label); // default argument m.visitLdcInsn(Integer.valueOf(42)); m.visitVarInsn(Opcodes.ISTORE, 1); m.visitLabel(label); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ILOAD, 1); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "Owner", "<init>", "(I)V", false); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(new Range(m.instructions.get(3), m.instructions.get(3))); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
/** * <pre>//from ww w .jav a2 s . c o m * data class C(val x: Long = 42) * </pre> */ @Test public void should_filter_methods_with_parameters_that_consume_two_slots() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "<init>", "(JILkotlin/jvm/internal/DefaultConstructorMarker;)V", null, null); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); m.visitVarInsn(Opcodes.ILOAD, 3); m.visitInsn(Opcodes.ICONST_1); m.visitInsn(Opcodes.IAND); final Label label = new Label(); m.visitJumpInsn(Opcodes.IFEQ, label); // default argument m.visitLdcInsn(Integer.valueOf(42)); m.visitVarInsn(Opcodes.ISTORE, 1); m.visitLabel(label); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ILOAD, 1); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "Owner", "<init>", "(J)V", false); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(new Range(m.instructions.get(3), m.instructions.get(3))); }
From source file:org.jacoco.core.internal.analysis.filter.StringSwitchJavacFilterTest.java
License:Open Source License
private void createFirstSwitch() { final Label h1 = new Label(); final Label h1_2 = new Label(); final Label h2 = new Label(); final Label secondSwitch = new Label(); m.visitInsn(Opcodes.ICONST_M1);/* w ww . j a v a2 s. c o m*/ m.visitVarInsn(Opcodes.ISTORE, 2); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode", "()I", false); m.visitLookupSwitchInsn(secondSwitch, new int[] { 97, 98 }, new Label[] { h1, h2 }); expectedFromInclusive = m.instructions.getLast(); m.visitLabel(h1); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitLdcInsn("a"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if not equal "a", then goto next comparison m.visitJumpInsn(Opcodes.IFEQ, h1_2); m.visitInsn(Opcodes.ICONST_0); m.visitVarInsn(Opcodes.ISTORE, 2); // goto secondSwitch m.visitJumpInsn(Opcodes.GOTO, secondSwitch); m.visitLabel(h1_2); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitLdcInsn("\0a"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if not equal "\0a", then goto second switch m.visitJumpInsn(Opcodes.IFEQ, secondSwitch); m.visitInsn(Opcodes.ICONST_1); m.visitVarInsn(Opcodes.ISTORE, 2); // goto secondSwitch m.visitJumpInsn(Opcodes.GOTO, secondSwitch); m.visitLabel(h2); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitLdcInsn("b"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if not equal "b", then goto second switch m.visitJumpInsn(Opcodes.IFEQ, secondSwitch); m.visitInsn(Opcodes.ICONST_2); m.visitVarInsn(Opcodes.ISTORE, 2); m.visitLabel(secondSwitch); expectedToInclusive = m.instructions.getLast(); m.visitVarInsn(Opcodes.ILOAD, 2); }
From source file:org.jacoco.core.internal.analysis.MethodAnalyzerTest.java
License:Open Source License
private void createIfBranch() { method.visitLineNumber(1001, new Label()); method.visitVarInsn(Opcodes.ILOAD, 1); Label l1 = new Label(); method.visitJumpInsn(Opcodes.IFEQ, l1); method.visitLineNumber(1002, new Label()); method.visitLdcInsn("a"); method.visitInsn(Opcodes.ARETURN);/*from w w w . j av a 2 s. c o m*/ method.visitLabel(l1); method.visitLineNumber(1003, l1); method.visitLdcInsn("b"); method.visitInsn(Opcodes.ARETURN); }
From source file:org.jacoco.core.internal.analysis.MethodAnalyzerTest.java
License:Open Source License
private void createIfBranchMerge() { method.visitLineNumber(1001, new Label()); method.visitVarInsn(Opcodes.ILOAD, 1); Label l1 = new Label(); method.visitJumpInsn(Opcodes.IFEQ, l1); method.visitLineNumber(1002, new Label()); method.visitInsn(Opcodes.NOP);//ww w. j a v a 2s . co m method.visitLabel(l1); method.visitLineNumber(1003, l1); method.visitInsn(Opcodes.RETURN); }
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);// www.j a v a 2 s . co 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 createTableSwitchMerge() { method.visitLineNumber(1001, new Label()); method.visitInsn(Opcodes.ICONST_0);//w w w . ja va2s . co m method.visitVarInsn(Opcodes.ISTORE, 2); method.visitLineNumber(1002, new Label()); method.visitVarInsn(Opcodes.ILOAD, 1); Label l2 = new Label(); Label l3 = new Label(); Label l4 = new Label(); method.visitTableSwitchInsn(1, 3, l4, new Label[] { l2, l3, l2 }); method.visitLabel(l2); method.visitLineNumber(1003, l2); method.visitIincInsn(2, 1); method.visitLabel(l3); method.visitLineNumber(1004, l3); method.visitIincInsn(2, 1); method.visitLabel(l4); method.visitLineNumber(1005, l4); method.visitVarInsn(Opcodes.ILOAD, 2); method.visitInsn(Opcodes.IRETURN); }
From source file:org.jacoco.core.internal.instr.DuplicateFrameEliminatorTest.java
License:Open Source License
@Test public void testVarInsn() { testInstructionBetweenFrames(new VarInsnNode(Opcodes.ILOAD, 0)); }
From source file:org.jacoco.core.internal.instr.FrameTracker.java
License:Open Source License
@Override public void visitVarInsn(final int opcode, final int var) { final Object t; switch (opcode) { case Opcodes.ALOAD: push(get(var)); break;//from www . java 2 s. co m case Opcodes.ILOAD: push(Opcodes.INTEGER); break; case Opcodes.FLOAD: push(Opcodes.FLOAT); break; case Opcodes.LLOAD: push(Opcodes.LONG); push(Opcodes.TOP); break; case Opcodes.DLOAD: push(Opcodes.DOUBLE); push(Opcodes.TOP); break; case Opcodes.ASTORE: case Opcodes.ISTORE: case Opcodes.FSTORE: t = pop(); set(var, t); break; case Opcodes.LSTORE: case Opcodes.DSTORE: pop(1); t = pop(); set(var, t); set(var + 1, Opcodes.TOP); break; default: throw new IllegalArgumentException(); } mv.visitVarInsn(opcode, var); }
From source file:org.jacoco.core.internal.instr.ProbeInserterTest.java
License:Open Source License
@Test public void testVisitVarIns() { ProbeInserter pi = new ProbeInserter(0, "(II)V", actualVisitor, arrayStrategy); pi.visitVarInsn(Opcodes.ALOAD, 0);//from w w w.j a va2 s . c o m pi.visitVarInsn(Opcodes.ILOAD, 1); pi.visitVarInsn(Opcodes.ILOAD, 2); pi.visitVarInsn(Opcodes.ISTORE, 3); pi.visitVarInsn(Opcodes.FSTORE, 4); // Argument variables stay at the same position: expectedVisitor.visitVarInsn(Opcodes.ALOAD, 0); expectedVisitor.visitVarInsn(Opcodes.ILOAD, 1); expectedVisitor.visitVarInsn(Opcodes.ILOAD, 2); // Local variables are shifted by one: expectedVisitor.visitVarInsn(Opcodes.ISTORE, 4); expectedVisitor.visitVarInsn(Opcodes.FSTORE, 5); }