Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.objectweb.asm.*;
- public class TestDump implements Opcodes {
- public static void main(String[] args) throws Exception {
- ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
- FieldVisitor fv;
- MethodVisitor mv;
- AnnotationVisitor av0;
- cw.visit(V1_7, ACC_PUBLIC + ACC_SUPER, "test/Test", null,
- "java/lang/Object", null);
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
- mv.visitCode();
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
- "()V", false);
- mv.visitInsn(RETURN);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- }
- {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main",
- "([Ljava/lang/String;)V", null, null);
- mv.visitCode();
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Runtime", "getRuntime",
- "()Ljava/lang/Runtime;", false);
- mv.visitVarInsn(ASTORE, 1);
- mv.visitIntInsn(BIPUSH, 10);
- mv.visitVarInsn(ISTORE, 2);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "toString",
- "(I)Ljava/lang/String;", false);
- mv.visitVarInsn(ASTORE, 3);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitIntInsn(BIPUSH, 10);
- Label l0 = new Label();
- mv.visitJumpInsn(IF_ICMPNE, l0);
- mv.visitLdcInsn("x");
- mv.visitVarInsn(ASTORE, 3);
- mv.visitLabel(l0);
- mv.visitLdcInsn("y");
- mv.visitMethodInsn(INVOKESTATIC, "test/Test", "foo",
- "(Ljava/lang/String;)V", false);
- mv.visitInsn(RETURN);
- mv.visitMaxs(0, 0);
- mv.visitEnd();
- }
- {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "foo",
- "(Ljava/lang/String;)V", null, null);
- mv.visitCode();
- mv.visitInsn(RETURN);
- mv.visitMaxs(0, 1);
- mv.visitEnd();
- }
- cw.visitEnd();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement