Advertisement
Guest User

StackOverflow 30234329

a guest
May 14th, 2015
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.75 KB | None | 0 0
  1. import org.objectweb.asm.*;
  2.  
  3. public class TestDump implements Opcodes {
  4.  
  5.     public static void main(String[] args) throws Exception {
  6.         ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  7.         FieldVisitor fv;
  8.         MethodVisitor mv;
  9.         AnnotationVisitor av0;
  10.  
  11.         cw.visit(V1_7, ACC_PUBLIC + ACC_SUPER, "test/Test", null,
  12.                 "java/lang/Object", null);
  13.  
  14.         {
  15.             mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
  16.             mv.visitCode();
  17.             mv.visitVarInsn(ALOAD, 0);
  18.             mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
  19.                     "()V", false);
  20.             mv.visitInsn(RETURN);
  21.             mv.visitMaxs(1, 1);
  22.             mv.visitEnd();
  23.         }
  24.         {
  25.             mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main",
  26.                     "([Ljava/lang/String;)V", null, null);
  27.             mv.visitCode();
  28.             mv.visitMethodInsn(INVOKESTATIC, "java/lang/Runtime", "getRuntime",
  29.                     "()Ljava/lang/Runtime;", false);
  30.             mv.visitVarInsn(ASTORE, 1);
  31.             mv.visitIntInsn(BIPUSH, 10);
  32.             mv.visitVarInsn(ISTORE, 2);
  33.             mv.visitVarInsn(ILOAD, 2);
  34.             mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "toString",
  35.                     "(I)Ljava/lang/String;", false);
  36.             mv.visitVarInsn(ASTORE, 3);
  37.             mv.visitVarInsn(ILOAD, 2);
  38.             mv.visitIntInsn(BIPUSH, 10);
  39.             Label l0 = new Label();
  40.             mv.visitJumpInsn(IF_ICMPNE, l0);
  41.             mv.visitLdcInsn("x");
  42.             mv.visitVarInsn(ASTORE, 3);
  43.             mv.visitLabel(l0);
  44.             mv.visitLdcInsn("y");
  45.             mv.visitMethodInsn(INVOKESTATIC, "test/Test", "foo",
  46.                     "(Ljava/lang/String;)V", false);
  47.             mv.visitInsn(RETURN);
  48.             mv.visitMaxs(0, 0);
  49.             mv.visitEnd();
  50.         }
  51.         {
  52.             mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "foo",
  53.                     "(Ljava/lang/String;)V", null, null);
  54.             mv.visitCode();
  55.             mv.visitInsn(RETURN);
  56.             mv.visitMaxs(0, 1);
  57.             mv.visitEnd();
  58.         }
  59.         cw.visitEnd();
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement