public void Transform() { var wl = WorkList.Create(ssa.Procedure.Statements); while (wl.TryGetWorkItem(out var stm)) { var prjf = new ProjectionFilter(ssa, stm, sac); var instr = stm.Instruction.Accept(prjf); stm.Instruction = instr; wl.AddRange(prjf.NewStatements); } }
public void Transform() { var prjf = new ProjectionFilter(arch, ssa, sac); var wl = new WorkList <Statement>(ssa.Procedure.Statements); while (wl.GetWorkItem(out var stm)) { prjf.Statement = stm; var instr = stm.Instruction.Accept(prjf); stm.Instruction = instr; wl.AddRange(prjf.NewStatements); prjf.NewStatements.Clear(); } }