public static String escapeField(Field f) { String owner = f.getOwner(); if (owner == null) { owner = f.getType(); } return escapeType(owner) + "->" + f.getName() + ":" + escapeType(f.getType()); }
@Override public void visitTypeStmt(Op op, int a, int b, String type) { if (op.format == InstructionFormat.kFmt21c) { out.s("%s %s, %s", op.displayName, reg(a), BaksmaliDumper.escapeType(type)); } else { out.s("%s %s, %s, %s", op.displayName, reg(a), reg(b), BaksmaliDumper.escapeType(type)); } }
@Override public void visitFilledNewArrayStmt(Op op, int[] args, String type) { if (args.length > 0) { if (op.format == InstructionFormat.kFmt3rc) { // invoke-x/range out.s("%s { %d .. %d }, %s", op.displayName, reg(args[0]), reg(args[args.length - 1]), BaksmaliDumper.escapeType(type)); } else { StringBuilder buff = new StringBuilder(); boolean first = true; for (int i : args) { if (first) { first = false; } else { buff.append(", "); } buff.append(reg(i)); } out.s("%s { %s }, %s", op.displayName, buff, BaksmaliDumper.escapeType(type)); } } else { out.s("%s { }, %s", op.displayName, BaksmaliDumper.escapeType(type)); } }
return escapeType(((DexType) obj).desc); owner = f.getType(); return ".enum " + escapeType(owner) + "->" + f.getName() + ":" + escapeType(f.getType());
static String escapeMethod(Method method) { return BaksmaliDumper.escapeType(method.getOwner()) + "->" + BaksmaliDumper.escapeId(method.getName()) + BaksmaliDumper.escapeMethodDesc(method); } static String escapeMethodDesc(Method m) {
buff.append(".class "); appendAccess(n.access, buff); buff.append(escapeType(n.className)); out.s(buff.toString()); if (n.superClass != null) { out.s(".super %s", escapeType(n.superClass)); out.s(".implements %s", escapeType(itf)); appendAccess(f.access | ACCESS_FIELD, buff); Field field = f.field; buff.append(escapeId(f.field.getName())).append(":").append(escapeType(field.getType())); if (f.cst != null) { buff.append(" = ");
private static void dumpAnn(DexAnnotationNode ann, Out out) { out.s(".annotation %s %s", ann.visibility.displayName(), escapeType(ann.type)); out.push(); for (Item item : ann.items) { dumpItem(item.name, item.value, out, false); } out.pop(); out.s(".end annotation"); }
DexAnnotationNode dexAnnotationNode = (DexAnnotationNode) o; if (name != null) { out.s(escapeId(name) + " = .subannotation " + escapeType(dexAnnotationNode.type)); } else { out.s(".subannotation " + escapeType(dexAnnotationNode.type));