KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > asm2 > Calculator1Dump


1 /*
2  * Manage Java 5 annotations using ASM toolkit
3  * Copyright (c) 2004, Eugene Kuleshov
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19
20 package asm2;
21
22 import org.objectweb.asm.*;
23 import org.objectweb.asm.attrs.*;
24 import java.util.*;
25
26
27 public class Calculator1Dump implements Constants {
28
29 public static byte[] dump () throws Exception JavaDoc {
30
31 ClassWriter cw = new ClassWriter(false);
32 CodeVisitor cv;
33
34 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER,
35     "Calculator1", "java/lang/Object", null,
36     "Calculator1.java");
37
38 cw.visitField(ACC_PRIVATE, "result", "I",
39     null, null);
40
41 {
42 cv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V",
43     null, null);
44 cv.visitVarInsn(ALOAD, 0);
45 cv.visitMethodInsn(INVOKESPECIAL,
46     "java/lang/Object", "<init>", "()V");
47 cv.visitInsn(RETURN);
48 cv.visitMaxs(1, 1);
49 }
50 {
51 cv = cw.visitMethod(ACC_PRIVATE, "sum", "(II)V",
52     null, null);
53 cv.visitVarInsn(ALOAD, 0);
54 cv.visitVarInsn(ILOAD, 1);
55 cv.visitVarInsn(ILOAD, 2);
56 cv.visitInsn(IADD);
57 cv.visitFieldInsn(PUTFIELD, "Calculator1",
58     "result", "I");
59 cv.visitInsn(RETURN);
60 cv.visitMaxs(3, 3);
61 }
62 cw.visitEnd();
63
64 return cw.toByteArray();
65 }
66 }
67
Popular Tags