92 93 public Integer visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) { 94 print("#" + info.class_index + ".#" + info.name_and_type_index); 95 tab(); 96 println("// " + stringValue(info)); 97 return 1; 98 } 99 100 public Integer visitInvokeDynamic(CONSTANT_InvokeDynamic_info info, Void p) { 101 print("#" + info.bootstrap_method_attr_index + ":#" + info.name_and_type_index); 102 tab(); 103 println("// " + stringValue(info)); 104 return 1; 105 } 106 107 public Integer visitLong(CONSTANT_Long_info info, Void p) { 108 println(stringValue(info)); 109 return 2; 110 } 111 112 public Integer visitNameAndType(CONSTANT_NameAndType_info info, Void p) { 113 print("#" + info.name_index + ":#" + info.type_index); 114 tab(); 115 println("// " + stringValue(info)); 116 return 1; 117 } 118 119 public Integer visitMethodref(CONSTANT_Methodref_info info, Void p) { 120 print("#" + info.class_index + ".#" + info.name_and_type_index); 121 tab(); 122 println("// " + stringValue(info)); 123 return 1; 124 } 125 126 public Integer visitMethodHandle(CONSTANT_MethodHandle_info info, Void p) { 127 print(info.reference_kind.tag + ":#" + info.reference_index); 128 tab(); 129 println("// " + stringValue(info)); 130 return 1; 131 } 132 133 public Integer visitMethodType(CONSTANT_MethodType_info info, Void p) { 134 print("#" + info.descriptor_index); 135 tab(); 136 println("// " + stringValue(info)); 137 return 1; 138 } 139 140 public Integer visitString(CONSTANT_String_info info, Void p) { 141 print("#" + info.string_index); 142 tab(); 143 println("// " + stringValue(info)); 144 return 1; 145 } 146 147 public Integer visitUtf8(CONSTANT_Utf8_info info, Void p) { 148 println(stringValue(info)); 149 return 1; 150 } 151 152 }; 153 println("Constant pool:"); 154 indent(+1); 155 int width = String.valueOf(constant_pool.size()).length() + 1; 156 int cpx = 1; 157 while (cpx < constant_pool.size()) { 158 print(String.format("%" + width + "s", ("#" + cpx))); 159 try { 287 return String.valueOf(info.value); 288 } 289 290 public String visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) { 291 return visitRef(info, p); 292 } 293 294 public String visitInvokeDynamic(CONSTANT_InvokeDynamic_info info, Void p) { 295 try { 296 String callee = stringValue(info.getNameAndTypeInfo()); 297 return "#" + info.bootstrap_method_attr_index + ":" + callee; 298 } catch (ConstantPoolException e) { 299 return report(e); 300 } 301 } 302 303 public String visitLong(CONSTANT_Long_info info, Void p) { 304 return info.value + "l"; 305 } 306 307 public String visitNameAndType(CONSTANT_NameAndType_info info, Void p) { 308 return getCheckedName(info) + ":" + getType(info); 309 } 310 311 String getCheckedName(CONSTANT_NameAndType_info info) { 312 try { 313 return checkName(info.getName()); 314 } catch (ConstantPoolException e) { 315 return report(e); 316 } 317 } 318 319 String getType(CONSTANT_NameAndType_info info) { 320 try { 321 return info.getType(); 322 } catch (ConstantPoolException e) { 323 return report(e); 324 } 325 } 326 327 public String visitMethodHandle(CONSTANT_MethodHandle_info info, Void p) { 328 try { 329 return info.reference_kind + " " + stringValue(info.getCPRefInfo()); 330 } catch (ConstantPoolException e) { 331 return report(e); 332 } 333 } 334 335 public String visitMethodType(CONSTANT_MethodType_info info, Void p) { 336 try { 337 return info.getType(); 338 } catch (ConstantPoolException e) { | 92 93 public Integer visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) { 94 print("#" + info.class_index + ".#" + info.name_and_type_index); 95 tab(); 96 println("// " + stringValue(info)); 97 return 1; 98 } 99 100 public Integer visitInvokeDynamic(CONSTANT_InvokeDynamic_info info, Void p) { 101 print("#" + info.bootstrap_method_attr_index + ":#" + info.name_and_type_index); 102 tab(); 103 println("// " + stringValue(info)); 104 return 1; 105 } 106 107 public Integer visitLong(CONSTANT_Long_info info, Void p) { 108 println(stringValue(info)); 109 return 2; 110 } 111 112 public Integer visitMethodref(CONSTANT_Methodref_info info, Void p) { 113 print("#" + info.class_index + ".#" + info.name_and_type_index); 114 tab(); 115 println("// " + stringValue(info)); 116 return 1; 117 } 118 119 public Integer visitMethodHandle(CONSTANT_MethodHandle_info info, Void p) { 120 print(info.reference_kind.tag + ":#" + info.reference_index); 121 tab(); 122 println("// " + stringValue(info)); 123 return 1; 124 } 125 126 public Integer visitMethodType(CONSTANT_MethodType_info info, Void p) { 127 print("#" + info.descriptor_index); 128 tab(); 129 println("// " + stringValue(info)); 130 return 1; 131 } 132 133 public Integer visitModule(CONSTANT_Module_info info, Void p) { 134 print("#" + info.name_index); 135 tab(); 136 println("// " + stringValue(info)); 137 return 1; 138 } 139 140 public Integer visitNameAndType(CONSTANT_NameAndType_info info, Void p) { 141 print("#" + info.name_index + ":#" + info.type_index); 142 tab(); 143 println("// " + stringValue(info)); 144 return 1; 145 } 146 147 public Integer visitPackage(CONSTANT_Package_info info, Void p) { 148 print("#" + info.name_index); 149 tab(); 150 println("// " + stringValue(info)); 151 return 1; 152 } 153 154 public Integer visitString(CONSTANT_String_info info, Void p) { 155 print("#" + info.string_index); 156 tab(); 157 println("// " + stringValue(info)); 158 return 1; 159 } 160 161 public Integer visitUtf8(CONSTANT_Utf8_info info, Void p) { 162 println(stringValue(info)); 163 return 1; 164 } 165 166 }; 167 println("Constant pool:"); 168 indent(+1); 169 int width = String.valueOf(constant_pool.size()).length() + 1; 170 int cpx = 1; 171 while (cpx < constant_pool.size()) { 172 print(String.format("%" + width + "s", ("#" + cpx))); 173 try { 301 return String.valueOf(info.value); 302 } 303 304 public String visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) { 305 return visitRef(info, p); 306 } 307 308 public String visitInvokeDynamic(CONSTANT_InvokeDynamic_info info, Void p) { 309 try { 310 String callee = stringValue(info.getNameAndTypeInfo()); 311 return "#" + info.bootstrap_method_attr_index + ":" + callee; 312 } catch (ConstantPoolException e) { 313 return report(e); 314 } 315 } 316 317 public String visitLong(CONSTANT_Long_info info, Void p) { 318 return info.value + "l"; 319 } 320 321 public String visitModule(CONSTANT_Module_info info, Void p) { 322 try { 323 return checkName(info.getName()); 324 } catch (ConstantPoolException e) { 325 return report(e); 326 } 327 } 328 329 public String visitNameAndType(CONSTANT_NameAndType_info info, Void p) { 330 return getCheckedName(info) + ":" + getType(info); 331 } 332 333 String getCheckedName(CONSTANT_NameAndType_info info) { 334 try { 335 return checkName(info.getName()); 336 } catch (ConstantPoolException e) { 337 return report(e); 338 } 339 } 340 341 public String visitPackage(CONSTANT_Package_info info, Void p) { 342 try { 343 return checkName(info.getName()); 344 } catch (ConstantPoolException e) { 345 return report(e); 346 } 347 } 348 349 String getType(CONSTANT_NameAndType_info info) { 350 try { 351 return info.getType(); 352 } catch (ConstantPoolException e) { 353 return report(e); 354 } 355 } 356 357 public String visitMethodHandle(CONSTANT_MethodHandle_info info, Void p) { 358 try { 359 return info.reference_kind + " " + stringValue(info.getCPRefInfo()); 360 } catch (ConstantPoolException e) { 361 return report(e); 362 } 363 } 364 365 public String visitMethodType(CONSTANT_MethodType_info info, Void p) { 366 try { 367 return info.getType(); 368 } catch (ConstantPoolException e) { |