src/share/classes/com/sun/tools/javap/ConstantWriter.java

changeset 348
743f17b55b44
parent 300
ed989c347b3c
child 354
cba827f72977
equal deleted inserted replaced
347:dbf8a2816201 348:743f17b55b44
60 } 60 }
61 61
62 protected void writeConstantPool(ConstantPool constant_pool) { 62 protected void writeConstantPool(ConstantPool constant_pool) {
63 ConstantPool.Visitor<Integer, Void> v = new ConstantPool.Visitor<Integer,Void>() { 63 ConstantPool.Visitor<Integer, Void> v = new ConstantPool.Visitor<Integer,Void>() {
64 public Integer visitClass(CONSTANT_Class_info info, Void p) { 64 public Integer visitClass(CONSTANT_Class_info info, Void p) {
65 println("#" + info.name_index + ";\t// " + stringValue(info)); 65 print("#" + info.name_index + ";");
66 tab();
67 println("// " + stringValue(info));
66 return 1; 68 return 1;
67 } 69 }
68 70
69 public Integer visitDouble(CONSTANT_Double_info info, Void p) { 71 public Integer visitDouble(CONSTANT_Double_info info, Void p) {
70 println(stringValue(info) + ";"); 72 println(stringValue(info) + ";");
71 return 2; 73 return 2;
72 } 74 }
73 75
74 public Integer visitFieldref(CONSTANT_Fieldref_info info, Void p) { 76 public Integer visitFieldref(CONSTANT_Fieldref_info info, Void p) {
75 println("#" + info.class_index + ".#" + info.name_and_type_index + ";\t// " + stringValue(info)); 77 print("#" + info.class_index + ".#" + info.name_and_type_index + ";");
78 tab();
79 println("// " + stringValue(info));
76 return 1; 80 return 1;
77 } 81 }
78 82
79 public Integer visitFloat(CONSTANT_Float_info info, Void p) { 83 public Integer visitFloat(CONSTANT_Float_info info, Void p) {
80 println(stringValue(info) + ";"); 84 println(stringValue(info) + ";");
85 println(stringValue(info) + ";"); 89 println(stringValue(info) + ";");
86 return 1; 90 return 1;
87 } 91 }
88 92
89 public Integer visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) { 93 public Integer visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) {
90 println("#" + info.class_index + ".#" + info.name_and_type_index + ";\t// " + stringValue(info)); 94 print("#" + info.class_index + ".#" + info.name_and_type_index + ";");
95 tab();
96 println("// " + stringValue(info));
91 return 1; 97 return 1;
92 } 98 }
93 99
94 public Integer visitLong(CONSTANT_Long_info info, Void p) { 100 public Integer visitLong(CONSTANT_Long_info info, Void p) {
95 println(stringValue(info) + ";"); 101 println(stringValue(info) + ";");
96 return 2; 102 return 2;
97 } 103 }
98 104
99 public Integer visitNameAndType(CONSTANT_NameAndType_info info, Void p) { 105 public Integer visitNameAndType(CONSTANT_NameAndType_info info, Void p) {
100 String tab = (options.compat ? "" : "\t"); // BUG 6622232 javap gets whitespace confused 106 print("#" + info.name_index + ":#" + info.type_index + ";");
101 println("#" + info.name_index + ":#" + info.type_index + ";" + tab + "// " + stringValue(info)); 107 tab();
108 println("// " + stringValue(info));
102 return 1; 109 return 1;
103 } 110 }
104 111
105 public Integer visitMethodref(CONSTANT_Methodref_info info, Void p) { 112 public Integer visitMethodref(CONSTANT_Methodref_info info, Void p) {
106 println("#" + info.class_index + ".#" + info.name_and_type_index + ";\t// " + stringValue(info)); 113 print("#" + info.class_index + ".#" + info.name_and_type_index + ";");
114 tab();
115 println("// " + stringValue(info));
107 return 1; 116 return 1;
108 } 117 }
109 118
110 public Integer visitString(CONSTANT_String_info info, Void p) { 119 public Integer visitString(CONSTANT_String_info info, Void p) {
111 println("#" + info.string_index + ";\t// " + stringValue(info)); 120 print("#" + info.string_index + ";");
121 tab();
122 println("// " + stringValue(info));
112 return 1; 123 return 1;
113 } 124 }
114 125
115 public Integer visitUtf8(CONSTANT_Utf8_info info, Void p) { 126 public Integer visitUtf8(CONSTANT_Utf8_info info, Void p) {
116 println(stringValue(info) + ";"); 127 println(stringValue(info) + ";");
117 return 1; 128 return 1;
118 } 129 }
119 130
120 }; 131 };
121 println(" Constant pool:"); 132 println("Constant pool:");
133 indent(+1);
134 int width = String.valueOf(constant_pool.size()).length() + 1;
122 int cpx = 1; 135 int cpx = 1;
123 while (cpx < constant_pool.size()) { 136 while (cpx < constant_pool.size()) {
137 print(String.format("const %" + width + "s", ("#" + cpx)));
124 try { 138 try {
125 CPInfo cpInfo = constant_pool.get(cpx); 139 CPInfo cpInfo = constant_pool.get(cpx);
126 print("const #" + cpx + " = " + tagName(cpInfo.getTag()) + "\t"); 140 print(String.format(" = %-15s ", tagName(cpInfo.getTag())));
127 cpx += cpInfo.accept(v, null); 141 cpx += cpInfo.accept(v, null);
128 } catch (ConstantPool.InvalidIndex ex) { 142 } catch (ConstantPool.InvalidIndex ex) {
129 print("const #" + cpx); // should not happen 143 // should not happen
130 } 144 }
131 } 145 }
146 indent(-1);
132 } 147 }
133 148
134 protected void write(int cpx) { 149 protected void write(int cpx) {
135 ClassFile classFile = classWriter.getClassFile(); 150 ClassFile classFile = classWriter.getClassFile();
136 if (cpx == 0) { 151 if (cpx == 0) {

mercurial