@Override public Object visitF0x(SmaliParser.F0xContext ctx) { scv.visitStmt0R(getOp(ctx.op)); return null; }
/* package */void dArrayData(int length, byte[] obj) { addCare(new ArrayDataStmt(length, obj)); }
/* package */void dSparseSwitch(int[] cases, DexLabel[] labels) { addCare(new SparseSwitchStmt(cases, labels)); }
public void baksmaliMethod(DexMethodNode m, BufferedWriter writer) { baksmaliMethod(m, new BaksmaliDumpOut(writer)); }
public void baksmaliClass(DexClassNode n, BufferedWriter writer) { baksmaliClass(n, new BaksmaliDumpOut(writer)); }
@Override public Object visitFf1c(SmaliParser.Ff1cContext ctx) { int r = m.pareReg(ctx.r1.getText()); Field field = parseFieldAndUnescape(ctx.fld.getText()); scv.visitFieldStmt(getOp(ctx.op), r, 0, field); return null; }
@Override public Object visitF1t(SmaliParser.F1tContext ctx) { scv.visitJumpStmt(getOp(ctx.op), m.pareReg(ctx.r1.getText()), 0, getLabel(ctx.label.getText())); return null; }
@Override public Object visitFt2c(SmaliParser.Ft2cContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); scv.visitTypeStmt(getOp(ctx.op), r1, r2, unEscapeId(ctx.type.getText())); return null; }
@Override public Object visitF2sb(SmaliParser.F2sbContext ctx) { scv.visitStmt2R1N(getOp(ctx.op), m.pareReg(ctx.r1.getText()), m.pareReg(ctx.r2.getText()), parseInt(ctx.lit.getText())); return null; }
@Override public Object visitF31t(SmaliParser.F31tContext ctx) { scv.visitF31tStmt(getOp(ctx.op), m.pareReg(ctx.r1.getText()), getLabel(ctx.label.getText())); return null; }
@Override public Object visitF1x(SmaliParser.F1xContext ctx) { scv.visitStmt1R(getOp(ctx.op), m.pareReg(ctx.r1.getText())); return null; }
@Override public Object visitF0t(SmaliParser.F0tContext ctx) { scv.visitJumpStmt(getOp(ctx.op), 0, 0, getLabel(ctx.target.getText())); return null; }
@Override public Object visitF2x(SmaliParser.F2xContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); scv.visitStmt2R(getOp(ctx.op), r1, r2); return null; }
@Override public Object visitF3x(SmaliParser.F3xContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); int r3 = m.pareReg(ctx.r3.getText()); scv.visitStmt3R(getOp(ctx.op), r1, r2, r3); return null; }
@Override public Object visitFcache(SmaliParser.FcacheContext ctx) { scv.visitTryCatch(getLabel(ctx.start.getText()), getLabel(ctx.end.getText()), new DexLabel[]{getLabel(ctx.handle.getText())}, new String[]{unEscapeId(ctx.type.getText())} ); return null; }
void dPackedSwitch(int first, DexLabel[] labels) { addCare(new PackedSwitchStmt(first, labels)); }
@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)); } }
private static void dumpAnns(List<DexAnnotationNode> anns, Out out) { for (DexAnnotationNode ann : anns) { dumpAnn(ann, out); } }
@Override public Object visitFf2c(SmaliParser.Ff2cContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); scv.visitFieldStmt(getOp(ctx.op), r1, r2, parseFieldAndUnescape(ctx.fld.getText())); return null; }
@Override public Object visitF2t(SmaliParser.F2tContext ctx) { scv.visitJumpStmt(getOp(ctx.op), m.pareReg(ctx.r1.getText()), m.pareReg(ctx.r2.getText()), getLabel(ctx.label.getText())); return null; }