Search in sources :

Example 1 with PackedSwitchPayload

use of soot.toDex.instructions.PackedSwitchPayload in project soot by Sable.

the class StmtVisitor method caseTableSwitchStmt.

@Override
public void caseTableSwitchStmt(TableSwitchStmt stmt) {
    exprV.setOrigStmt(stmt);
    constantV.setOrigStmt(stmt);
    // create payload that references the switch's targets
    int firstKey = stmt.getLowIndex();
    List<Unit> targets = stmt.getTargets();
    PackedSwitchPayload payload = new PackedSwitchPayload(firstKey, targets);
    payloads.add(payload);
    // create packed-switch instruction that references the payload
    Value key = stmt.getKey();
    Stmt defaultTarget = (Stmt) stmt.getDefaultTarget();
    addInsn(buildSwitchInsn(Opcode.PACKED_SWITCH, key, defaultTarget, payload, stmt), stmt);
}
Also used : PackedSwitchPayload(soot.toDex.instructions.PackedSwitchPayload) Value(soot.Value) Unit(soot.Unit) BreakpointStmt(soot.jimple.BreakpointStmt) ReturnVoidStmt(soot.jimple.ReturnVoidStmt) InvokeStmt(soot.jimple.InvokeStmt) EnterMonitorStmt(soot.jimple.EnterMonitorStmt) NopStmt(soot.jimple.NopStmt) GotoStmt(soot.jimple.GotoStmt) RetStmt(soot.jimple.RetStmt) AssignStmt(soot.jimple.AssignStmt) ThrowStmt(soot.jimple.ThrowStmt) IfStmt(soot.jimple.IfStmt) IdentityStmt(soot.jimple.IdentityStmt) TableSwitchStmt(soot.jimple.TableSwitchStmt) MonitorStmt(soot.jimple.MonitorStmt) LookupSwitchStmt(soot.jimple.LookupSwitchStmt) ReturnStmt(soot.jimple.ReturnStmt) ExitMonitorStmt(soot.jimple.ExitMonitorStmt) Stmt(soot.jimple.Stmt)

Aggregations

Unit (soot.Unit)1 Value (soot.Value)1 AssignStmt (soot.jimple.AssignStmt)1 BreakpointStmt (soot.jimple.BreakpointStmt)1 EnterMonitorStmt (soot.jimple.EnterMonitorStmt)1 ExitMonitorStmt (soot.jimple.ExitMonitorStmt)1 GotoStmt (soot.jimple.GotoStmt)1 IdentityStmt (soot.jimple.IdentityStmt)1 IfStmt (soot.jimple.IfStmt)1 InvokeStmt (soot.jimple.InvokeStmt)1 LookupSwitchStmt (soot.jimple.LookupSwitchStmt)1 MonitorStmt (soot.jimple.MonitorStmt)1 NopStmt (soot.jimple.NopStmt)1 RetStmt (soot.jimple.RetStmt)1 ReturnStmt (soot.jimple.ReturnStmt)1 ReturnVoidStmt (soot.jimple.ReturnVoidStmt)1 Stmt (soot.jimple.Stmt)1 TableSwitchStmt (soot.jimple.TableSwitchStmt)1 ThrowStmt (soot.jimple.ThrowStmt)1 PackedSwitchPayload (soot.toDex.instructions.PackedSwitchPayload)1