public void disassemble(ClassFile cf, PrintWriter out) { disassemble(cf, out, ""); }
private void disassemble(ConstantInfo constant) { disassemble(constant, false); }
private void disassemble(String indent, Annotation[] annotations) { for (int i=0; i<annotations.length; i++) { print(indent); disassemble(indent, annotations[i]); println(); } }
private void disassemble(String indent, Annotation ann) { print("@"); print(ann.getType().getFullName()); Map mvMap = ann.getMemberValues(); if (mvMap.size() == 0) { return; } print("("); Iterator it = mvMap.entrySet().iterator(); int ordinal = 0; while (it.hasNext()) { if (ordinal++ > 0) { print(", "); } Map.Entry entry = (Map.Entry)it.next(); String name = (String)entry.getKey(); if (!"value".equals(name)) { print(name); print("="); } disassemble(indent, (Annotation.MemberValue)entry.getValue()); } print(")"); }
private void disassemble(LocalVariable var) { if (var != null) { print(" // "); print(var.getName()); print(": "); disassemble(var.getType()); } }
private void disassemble(String indent, FieldInfo field) { SignatureAttr sig = field.getSignatureAttr(); if (field.isDeprecated() || field.isSynthetic() || sig != null) { println(indent, "/**"); if (field.isDeprecated()) { println(indent, " * @deprecated"); } if (field.isSynthetic()) { println(indent, " * @synthetic"); } if (sig != null) { println(indent, " * @signature " + sig.getSignature().getValue()); } println(indent, " */"); } disassemble(indent, field.getRuntimeVisibleAnnotations()); disassemble(indent, field.getRuntimeInvisibleAnnotations()); print(indent); disassemble(field.getModifiers()); disassemble(field.getType()); print(" "); print(field.getName()); ConstantInfo constant = field.getConstantValue(); if (constant != null) { print(" = "); disassemble(constant); } println(";"); }
private void disassemble(ConstantInfo constant) { disassemble(constant, false); }
public void disassemble(ClassFile cf, PrintWriter out) { disassemble(cf, out, ""); }
private void locateLabel(String indent) { int labelKey = mAddress; Object labelValue = mLabels.get(labelKey); if (labelValue == null) { return; } int len = indent.length() - 4; if (len > 0) { print(indent.substring(0, len)); } print(labelValue); println(":"); List<ExceptionHandler> handlers = mCatchLocations.get(labelKey); if (handlers != null) { for (int i=0; i<handlers.size(); i++) { ExceptionHandler handler = handlers.get(i); print(indent, "try ("); print(getLabel(handler.getStartLocation().getLocation())); print(".."); print(getLabel(handler.getEndLocation().getLocation())); print(") catch ("); if (handler.getCatchType() == null) { print("..."); } else { disassemble(handler.getCatchType()); } println(")"); } } }
case Annotation.MEMBER_TAG_STRING: case Annotation.MEMBER_TAG_CLASS: disassemble((ConstantInfo)value, true); break; case Annotation.MEMBER_TAG_CHAR: { break; case Annotation.MEMBER_TAG_ANNOTATION: disassemble(indent, (Annotation)value); break; case Annotation.MEMBER_TAG_ARRAY: print(indent); disassemble(indent, mvs[j]); if (j + 1 < mvs.length) { print(",");
disassemble(cci.getType()); if (showClassLiteral) { print(".class");
disassemble(indent, method.getRuntimeVisibleAnnotations()); disassemble(indent, method.getRuntimeInvisibleAnnotations()); disassemble(modifiers); print(md.toMethodSignature(method.getName(), varargs)); disassemble(indent + " ", code); println(indent, "}");
disassemble(indent, mClassFile.getRuntimeVisibleAnnotations()); disassemble(indent, mClassFile.getRuntimeInvisibleAnnotations()); disassemble(mClassFile.getModifiers()); boolean isInterface = mClassFile.getModifiers().isInterface(); if (!isInterface) { disassemble(innerIndent, (FieldInfo)members[i]); } else { disassemble(innerIndent, (MethodInfo)members[i]); printer.disassemble(innerClasses[i], mOut, innerIndent);
case Opcode.DLOAD_0: case Opcode.ALOAD_0: disassemble(code.getLocalVariable(mAddress, 0)); println(); continue; case Opcode.DSTORE_0: case Opcode.ASTORE_0: disassemble(code.getLocalVariable(mAddress + 1, 0)); println(); continue; case Opcode.DLOAD_1: case Opcode.ALOAD_1: disassemble(code.getLocalVariable(mAddress, 1)); println(); continue; case Opcode.DSTORE_1: case Opcode.ASTORE_1: disassemble(code.getLocalVariable(mAddress + 1, 1)); println(); continue; case Opcode.DLOAD_2: case Opcode.ALOAD_2: disassemble(code.getLocalVariable(mAddress, 2)); println(); continue;
private void disassemble(String indent, Annotation[] annotations) { for (int i=0; i<annotations.length; i++) { print(indent); disassemble(indent, annotations[i]); println(); } }
private void disassemble(String indent, Annotation ann) { print("@"); print(ann.getType().getFullName()); Map mvMap = ann.getMemberValues(); if (mvMap.size() == 0) { return; } print("("); Iterator it = mvMap.entrySet().iterator(); int ordinal = 0; while (it.hasNext()) { if (ordinal++ > 0) { print(", "); } Map.Entry entry = (Map.Entry)it.next(); String name = (String)entry.getKey(); if (!"value".equals(name)) { print(name); print("="); } disassemble(indent, (Annotation.MemberValue)entry.getValue()); } print(")"); }
private void disassemble(LocalVariable var) { if (var != null) { print(" // "); print(var.getName()); print(": "); disassemble(var.getType()); } }
private void disassemble(String indent, FieldInfo field) { SignatureAttr sig = field.getSignatureAttr(); if (field.isDeprecated() || field.isSynthetic() || sig != null) { println(indent, "/**"); if (field.isDeprecated()) { println(indent, " * @deprecated"); } if (field.isSynthetic()) { println(indent, " * @synthetic"); } if (sig != null) { println(indent, " * @signature " + sig.getSignature().getValue()); } println(indent, " */"); } disassemble(indent, field.getRuntimeVisibleAnnotations()); disassemble(indent, field.getRuntimeInvisibleAnnotations()); print(indent); disassemble(field.getModifiers()); disassemble(field.getType()); print(" "); print(field.getName()); ConstantInfo constant = field.getConstantValue(); if (constant != null) { print(" = "); disassemble(constant); } println(";"); }
private void locateLabel(String indent) { int labelKey = mAddress; Object labelValue = mLabels.get(labelKey); if (labelValue == null) { return; } int len = indent.length() - 4; if (len > 0) { print(indent.substring(0, len)); } print(labelValue); println(":"); List<ExceptionHandler> handlers = mCatchLocations.get(labelKey); if (handlers != null) { for (int i=0; i<handlers.size(); i++) { ExceptionHandler handler = handlers.get(i); print(indent, "try ("); print(getLabel(handler.getStartLocation().getLocation())); print(".."); print(getLabel(handler.getEndLocation().getLocation())); print(") catch ("); if (handler.getCatchType() == null) { print("..."); } else { disassemble(handler.getCatchType()); } println(")"); } } }
disassemble(cci.getType()); if (showClassLiteral) { print(".class");