List of usage examples for org.objectweb.asm Opcodes RETURN
int RETURN
To view the source code for org.objectweb.asm Opcodes RETURN.
Click Source Link
From source file:org.jacoco.core.internal.analysis.filter.KotlinWhenStringFilterTest.java
License:Open Source License
@Test public void should_not_filter_empty_lookup_switch() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, 0, "name", "(Ljava/lang/String;)V", null, null);//w w w. ja v a 2 s .c om m.visitVarInsn(Opcodes.ALOAD, 1); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode", "()I", false); final Label defaultCase = new Label(); m.visitLookupSwitchInsn(defaultCase, null, new Label[] {}); m.visitLabel(defaultCase); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.PrivateEmptyNoArgConstructorFilterTest.java
License:Open Source License
@Test public void test() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_PRIVATE, "<init>", "()V", null, null);/*from ww w . j av a2s. co m*/ m.visitVarInsn(Opcodes.ALOAD, 0); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertMethodIgnored(m); }
From source file:org.jacoco.core.internal.analysis.filter.StringSwitchEcjFilterTest.java
License:Open Source License
@Test public void should_filter() { final Set<AbstractInsnNode> expectedNewTargets = new HashSet<AbstractInsnNode>(); final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, 0, "name", "()V", null, null); final Label case1 = new Label(); final Label case2 = new Label(); final Label case3 = new Label(); final Label caseDefault = new Label(); final Label h1 = new Label(); final Label h2 = new Label(); // filter should not remember this unrelated slot m.visitLdcInsn(""); m.visitVarInsn(Opcodes.ASTORE, 1);/*from w w w . jav a 2 s. c o m*/ m.visitVarInsn(Opcodes.ALOAD, 1); // switch (...) m.visitInsn(Opcodes.DUP); m.visitVarInsn(Opcodes.ASTORE, 2); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode", "()I", false); m.visitTableSwitchInsn(97, 98, caseDefault, h1, h2); final AbstractInsnNode switchNode = m.instructions.getLast(); m.visitLabel(h1); m.visitVarInsn(Opcodes.ALOAD, 2); m.visitLdcInsn("a"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if equal "a", then goto its case m.visitJumpInsn(Opcodes.IFNE, case1); m.visitVarInsn(Opcodes.ALOAD, 2); m.visitLdcInsn("\0a"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if equal "\0a", then goto its case m.visitJumpInsn(Opcodes.IFNE, case2); // goto default case m.visitJumpInsn(Opcodes.GOTO, caseDefault); m.visitLabel(h2); m.visitVarInsn(Opcodes.ALOAD, 2); m.visitLdcInsn("b"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if equal "b", then goto its case m.visitJumpInsn(Opcodes.IFNE, case3); // goto default case m.visitJumpInsn(Opcodes.GOTO, caseDefault); final AbstractInsnNode expectedToInclusive = m.instructions.getLast(); m.visitLabel(case1); m.visitInsn(Opcodes.RETURN); expectedNewTargets.add(m.instructions.getLast()); m.visitLabel(case2); m.visitInsn(Opcodes.RETURN); expectedNewTargets.add(m.instructions.getLast()); m.visitLabel(case3); m.visitInsn(Opcodes.RETURN); expectedNewTargets.add(m.instructions.getLast()); m.visitLabel(caseDefault); m.visitInsn(Opcodes.RETURN); expectedNewTargets.add(m.instructions.getLast()); filter.filter(m, context, output); assertReplacedBranches(switchNode, expectedNewTargets); assertIgnored(new Range(switchNode.getNext(), expectedToInclusive)); }
From source file:org.jacoco.core.internal.analysis.filter.StringSwitchEcjFilterTest.java
License:Open Source License
@Test public void should_filter_when_default_is_first() { final Set<AbstractInsnNode> expectedNewTargets = new HashSet<AbstractInsnNode>(); final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, 0, "name", "()V", null, null); final Label case1 = new Label(); final Label caseDefault = new Label(); final Label h1 = new Label(); // filter should not remember this unrelated slot m.visitLdcInsn(""); m.visitVarInsn(Opcodes.ASTORE, 1);//from www .j a va2 s . c o m m.visitVarInsn(Opcodes.ALOAD, 1); // switch (...) m.visitInsn(Opcodes.DUP); m.visitVarInsn(Opcodes.ASTORE, 2); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode", "()I", false); m.visitLookupSwitchInsn(caseDefault, new int[] { 97 }, new Label[] { h1 }); final AbstractInsnNode switchNode = m.instructions.getLast(); m.visitLabel(h1); m.visitVarInsn(Opcodes.ALOAD, 2); m.visitLdcInsn("a"); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); // if equal "a", then goto its case m.visitJumpInsn(Opcodes.IFNE, case1); final AbstractInsnNode expectedToInclusive = m.instructions.getLast(); m.visitLabel(caseDefault); m.visitInsn(Opcodes.RETURN); expectedNewTargets.add(m.instructions.getLast()); m.visitLabel(case1); m.visitInsn(Opcodes.RETURN); expectedNewTargets.add(m.instructions.getLast()); filter.filter(m, context, output); assertReplacedBranches(switchNode, expectedNewTargets); assertIgnored(new Range(switchNode.getNext(), expectedToInclusive)); }
From source file:org.jacoco.core.internal.analysis.filter.StringSwitchEcjFilterTest.java
License:Open Source License
@Test public void should_not_filter_empty_lookup_switch() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, 0, "name", "(Ljava/lang/String;)V", null, null);//from w w w . j a v a 2s. c om m.visitVarInsn(Opcodes.ALOAD, 1); m.visitVarInsn(Opcodes.ASTORE, 2); m.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "hashCode", "()I", false); final Label defaultCase = new Label(); m.visitLookupSwitchInsn(defaultCase, null, new Label[] {}); m.visitLabel(defaultCase); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.SynchronizedFilterTest.java
License:Open Source License
@Test public void javac() { final Label start = new Label(); final Label end = new Label(); final Label handler = new Label(); final Label handlerEnd = new Label(); m.visitTryCatchBlock(start, end, handler, null); m.visitTryCatchBlock(handler, handlerEnd, handler, null); m.visitVarInsn(Opcodes.ALOAD, 0);/*w w w . ja v a2s .c om*/ m.visitFieldInsn(Opcodes.GETFIELD, "Fun", "lock", "Ljava/lang/Object;"); m.visitInsn(Opcodes.DUP); m.visitVarInsn(Opcodes.ASTORE, 1); m.visitInsn(Opcodes.MONITORENTER); m.visitLabel(start); m.visitInsn(Opcodes.NOP); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitInsn(Opcodes.MONITOREXIT); m.visitLabel(end); final Label exit = new Label(); m.visitJumpInsn(Opcodes.GOTO, exit); m.visitLabel(handler); m.visitVarInsn(Opcodes.ASTORE, 2); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitInsn(Opcodes.MONITOREXIT); m.visitLabel(handlerEnd); m.visitVarInsn(Opcodes.ALOAD, 2); m.visitInsn(Opcodes.ATHROW); m.visitLabel(exit); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(new Range((LabelNode) handler.info, ((LabelNode) exit.info).getPrevious())); }
From source file:org.jacoco.core.internal.analysis.filter.SynchronizedFilterTest.java
License:Open Source License
/** * <pre>/*from w w w . j av a 2 s . com*/ * try { * ... * } catch (Exception e) { * ... * } finally { * ... * } * </pre> */ @Test public void javacTryCatchFinally() { final Label start = new Label(); final Label end = new Label(); final Label catchHandler = new Label(); final Label finallyHandler = new Label(); final Label catchHandlerEnd = new Label(); m.visitTryCatchBlock(start, end, catchHandler, "java/lang/Exception"); m.visitTryCatchBlock(start, end, finallyHandler, null); m.visitTryCatchBlock(catchHandler, catchHandlerEnd, finallyHandler, null); m.visitLabel(start); // body m.visitInsn(Opcodes.NOP); m.visitLabel(end); // finally m.visitInsn(Opcodes.NOP); final Label exit = new Label(); m.visitJumpInsn(Opcodes.GOTO, exit); m.visitLabel(catchHandler); m.visitVarInsn(Opcodes.ASTORE, 1); // catch m.visitInsn(Opcodes.NOP); m.visitLabel(catchHandlerEnd); // finally m.visitInsn(Opcodes.NOP); m.visitJumpInsn(Opcodes.GOTO, exit); m.visitLabel(finallyHandler); m.visitVarInsn(Opcodes.ASTORE, 2); // finally m.visitInsn(Opcodes.NOP); m.visitVarInsn(Opcodes.ALOAD, 2); m.visitInsn(Opcodes.ATHROW); m.visitLabel(exit); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.SynchronizedFilterTest.java
License:Open Source License
@Test public void ecj() { final Label start = new Label(); final Label end = new Label(); final Label handler = new Label(); final Label handlerEnd = new Label(); m.visitTryCatchBlock(start, end, handler, null); m.visitTryCatchBlock(handler, handlerEnd, handler, null); m.visitVarInsn(Opcodes.ALOAD, 0);//from ww w . j a v a2 s. c om m.visitFieldInsn(Opcodes.GETFIELD, "Target", "lock", "Ljava/lang/Object;"); m.visitInsn(Opcodes.DUP); m.visitVarInsn(Opcodes.ASTORE, 1); m.visitInsn(Opcodes.MONITORENTER); m.visitLabel(start); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitInsn(Opcodes.NOP); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitInsn(Opcodes.MONITOREXIT); m.visitLabel(end); final Label exit = new Label(); m.visitJumpInsn(Opcodes.GOTO, exit); m.visitLabel(handler); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitInsn(Opcodes.MONITOREXIT); m.visitLabel(handlerEnd); m.visitInsn(Opcodes.ATHROW); m.visitLabel(exit); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(new Range((LabelNode) handler.info, ((LabelNode) exit.info).getPrevious())); }
From source file:org.jacoco.core.internal.analysis.filter.SyntheticFilterTest.java
License:Open Source License
@Test public void should_filter_synthetic_method_with_prefix_anonfun_in_non_Scala_classes() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "$anonfun$main$1", "()V", null, null); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output);//w w w.j a v a 2 s .c om assertMethodIgnored(m); }
From source file:org.jacoco.core.internal.analysis.filter.SyntheticFilterTest.java
License:Open Source License
@Test public void should_not_filter_synthetic_method_with_prefix_anonfun_in_Scala_classes() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "$anonfun$main$1", "()V", null, null); m.visitInsn(Opcodes.RETURN); context.classAttributes.add("ScalaSig"); filter.filter(m, context, output);/*from ww w .java 2s . c o m*/ assertIgnored(); }