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.hua.ast.visitors.BytecodeGeneratorASTVisitor.java
@Override public void visit(WriteStatement node) throws ASTVisitorException { Type type = ASTUtils.getSafeType(node.getExpression()); LocalIndexPool lip = ASTUtils.getSafeLocalIndexPool(node); int li = lip.getLocalIndex(type); mn.instructions/*from w w w . j ava 2 s.co m*/ .add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;")); System.out.println( "***************************************************************-------------------------------------------------------------- " + li); mn.instructions.add(new VarInsnNode(type.getOpcode(Opcodes.ILOAD), 0)); node.getExpression().accept(this); mn.instructions.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "print", Type.getMethodType(Type.VOID_TYPE, type).toString(), false)); lip.freeLocalIndex(li, type); }
From source file:org.jacoco.core.internal.analysis.AC_MethodAnalyzerTest.java
License:Open Source License
private void createIfBranch() { final Label l0 = new Label(); method.visitLabel(l0);//from w ww. ja v a 2s .c om method.visitLineNumber(1001, l0); method.visitVarInsn(Opcodes.ILOAD, 1); Label l1 = new Label(); method.visitJumpInsn(Opcodes.IFEQ, l1); final Label l2 = new Label(); method.visitLabel(l2); method.visitLineNumber(1002, l2); method.visitLdcInsn("a"); method.visitInsn(Opcodes.ARETURN); method.visitLabel(l1); method.visitLineNumber(1003, l1); method.visitLdcInsn("b"); method.visitInsn(Opcodes.ARETURN); }
From source file:org.jacoco.core.internal.analysis.AC_MethodAnalyzerTest.java
License:Open Source License
private void createIfBranchMerge() { final Label l0 = new Label(); method.visitLabel(l0);/*from w w w.j av a 2 s. c o m*/ method.visitLineNumber(1001, l0); method.visitVarInsn(Opcodes.ILOAD, 1); Label l1 = new Label(); method.visitJumpInsn(Opcodes.IFEQ, l1); final Label l2 = new Label(); method.visitLabel(l2); method.visitLineNumber(1002, l2); method.visitInsn(Opcodes.NOP); method.visitLabel(l1); method.visitLineNumber(1003, l1); method.visitInsn(Opcodes.RETURN); }
From source file:org.jacoco.core.internal.analysis.AC_MethodAnalyzerTest.java
License:Open Source License
private void createLoop() { final Label l0 = new Label(); method.visitLabel(l0);//from w ww . java2 s . c o m method.visitLineNumber(1001, l0); method.visitInsn(Opcodes.ICONST_0); method.visitVarInsn(Opcodes.ISTORE, 1); final Label l1 = new Label(); method.visitLabel(l1); method.visitLineNumber(1002, l1); method.visitVarInsn(Opcodes.ILOAD, 1); method.visitInsn(Opcodes.ICONST_5); final Label l2 = new Label(); method.visitJumpInsn(Opcodes.IF_ICMPGE, l2); method.visitIincInsn(1, 1); method.visitJumpInsn(Opcodes.GOTO, l1); method.visitLabel(l2); method.visitLineNumber(1003, l2); method.visitInsn(Opcodes.RETURN); }
From source file:org.jacoco.core.internal.analysis.filter.AbstractMatcherTest.java
License:Open Source License
@Test public void nextIsVar() { m.visitInsn(Opcodes.NOP);//from ww w . j a v a 2 s. co m m.visitVarInsn(Opcodes.ILOAD, 42); // should set cursor to null when opcode mismatch matcher.cursor = m.instructions.getFirst(); matcher.nextIsVar(Opcodes.ALOAD, "name"); assertNull(matcher.cursor); // should set cursor to next instruction when match matcher.cursor = m.instructions.getFirst(); matcher.nextIsVar(Opcodes.ILOAD, "name"); assertSame(m.instructions.getLast(), matcher.cursor); // should set cursor to null when var mismatch matcher.cursor = m.instructions.getFirst(); matcher.vars.put("name", new VarInsnNode(Opcodes.ILOAD, 13)); matcher.nextIsVar(Opcodes.ILOAD, "name"); assertNull(matcher.cursor); // should set cursor to next instruction when match matcher.cursor = m.instructions.getFirst(); matcher.vars.put("name", new VarInsnNode(Opcodes.ILOAD, 42)); matcher.nextIsVar(Opcodes.ILOAD, "name"); assertSame(m.instructions.getLast(), matcher.cursor); // should not do anything when cursor is null matcher.cursor = null; matcher.nextIsVar(Opcodes.ILOAD, "name"); }
From source file:org.jacoco.core.internal.analysis.filter.EnumEmptyConstructorFilterTest.java
License:Open Source License
@Test public void should_filter() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_PRIVATE, "<init>", "(Ljava/lang/String;I)V", null, null); m.visitVarInsn(Opcodes.ALOAD, 0);/*from w w w .j a v a 2s. c om*/ m.visitVarInsn(Opcodes.ALOAD, 1); m.visitVarInsn(Opcodes.ILOAD, 2); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Enum", "<init>", "(Ljava/lang/String;I)V", false); m.visitInsn(Opcodes.RETURN); context.superClassName = "java/lang/Enum"; filter.filter(m, context, output); assertIgnored(new Range(m.instructions.getFirst(), m.instructions.getLast())); }
From source file:org.jacoco.core.internal.analysis.filter.EnumEmptyConstructorFilterTest.java
License:Open Source License
/** * <code><pre>/*from w w w.j ava2s .com*/ * enum E { * ; * private E() { * ... * } * } * </pre></code> */ @Test public void should_not_filter_non_empty_constructor() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_PRIVATE, "<init>", "(Ljava/lang/String;I)V", null, null); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitVarInsn(Opcodes.ILOAD, 2); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Enum", "<init>", "(Ljava/lang/String;I)V", false); m.visitInsn(Opcodes.NOP); m.visitInsn(Opcodes.RETURN); context.superClassName = "java/lang/Enum"; filter.filter(m, context, output); assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.EnumEmptyConstructorFilterTest.java
License:Open Source License
/** * <code><pre>/*from w w w. ja va 2 s . c o m*/ * enum E { * ; * private E(long p) { * } * } * </pre></code> */ @Test public void should_not_filter_constructor_with_additional_parameters() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_PRIVATE, "<init>", "(Ljava/lang/String;IJ)V", null, null); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ALOAD, 1); m.visitVarInsn(Opcodes.ILOAD, 2); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Enum", "<init>", "(Ljava/lang/String;I)V", false); m.visitInsn(Opcodes.RETURN); context.superClassName = "java/lang/Enum"; filter.filter(m, context, output); assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
private static MethodNode createMethod(final int access, final String name, final String descriptor) { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, access, name, descriptor, null, null); m.visitVarInsn(Opcodes.ILOAD, 2); m.visitInsn(Opcodes.ICONST_1);/* w w w . j a v a 2s. c o m*/ 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, "Target", "origin", "(I)V", false); m.visitInsn(Opcodes.RETURN); return m; }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
/** * <pre>//from w w w . j a v a 2 s .com * open class Open { * open fun foo(a: Int = 42) { * } * } * </pre> */ @Test public void should_filter_open_functions() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "foo$default", "(LOpen;IILjava/lang/Object;)V", null, null); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); { m.visitVarInsn(Opcodes.ALOAD, 3); final Label label = new Label(); m.visitJumpInsn(Opcodes.IFNULL, label); m.visitTypeInsn(Opcodes.NEW, "java/lang/UnsupportedOperationException"); m.visitInsn(Opcodes.DUP); m.visitLdcInsn("Super calls with default arguments not supported in this target, function: foo"); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/UnsupportedOperationException", "<init>", "(Ljava/lang/String;)V", false); m.visitInsn(Opcodes.ATHROW); m.visitLabel(label); } { m.visitVarInsn(Opcodes.ILOAD, 2); 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, "Open", "foo", "(I)V", false); m.visitInsn(Opcodes.RETURN); } filter.filter(m, context, output); assertIgnored(new Range(m.instructions.getFirst(), m.instructions.get(6)), new Range(m.instructions.get(11), m.instructions.get(11))); }