KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > asm > test > cases > Debug


1 /***
2  * ASM tests
3  * Copyright (c) 2002-2005 France Telecom
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  * 3. Neither the name of the copyright holders nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28  * THE POSSIBILITY OF SUCH DAMAGE.
29  */

30 package org.objectweb.asm.test.cases;
31
32 import java.io.IOException JavaDoc;
33
34 import org.objectweb.asm.ClassWriter;
35 import org.objectweb.asm.FieldVisitor;
36 import org.objectweb.asm.Label;
37 import org.objectweb.asm.MethodVisitor;
38
39 /**
40  * Generates a class with debug information. Covers line number tables, local
41  * variable tables, source file, source debug, etc. Also covers the
42  * serialVersionUID field (to cover a branch in SerialVersionUIDAdder).
43  *
44  * @author Eric Bruneton
45  */

46 public class Debug extends Generator {
47
48     public void generate(final String JavaDoc dir) throws IOException JavaDoc {
49         generate(dir, "pkg/Debug.class", dump());
50     }
51
52     public byte[] dump() {
53         ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
54
55         cw.visit(V1_5,
56                 ACC_PUBLIC + ACC_SUPER,
57                 "pkg/Debug",
58                 null,
59                 "java/lang/Object",
60                 new String JavaDoc[] { "java/io/Serializable" });
61
62         cw.visitSource("Debug.java", "source-debug");
63
64         FieldVisitor fv = cw.visitField(ACC_FINAL + ACC_STATIC,
65                 "serialVersionUID",
66                 "J",
67                 null,
68                 new Long JavaDoc(1L));
69         fv.visitEnd();
70
71         MethodVisitor mv = cw.visitMethod(ACC_PUBLIC,
72                 "<init>",
73                 "()V",
74                 null,
75                 null);
76         mv.visitCode();
77         Label l0 = new Label();
78         Label l1 = new Label();
79         Label l2 = new Label();
80         mv.visitLabel(l0);
81         mv.visitLineNumber(3, l0);
82         mv.visitVarInsn(ALOAD, 0);
83         mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
84         mv.visitInsn(ICONST_0);
85         mv.visitJumpInsn(IFEQ, l1);
86         mv.visitJumpInsn(GOTO, l1);
87         mv.visitLabel(l1);
88         mv.visitLineNumber(3, l1);
89         mv.visitInsn(RETURN);
90         mv.visitLabel(l2);
91         mv.visitLocalVariable("this", "Lpkg/Debug;", "Lpkg/Debug;", l0, l2, 0);
92         mv.visitMaxs(0, 0);
93         mv.visitEnd();
94
95         cw.visitEnd();
96
97         return cw.toByteArray();
98     }
99 }
100
Popular Tags