Ejemplo n.º 1
0
        protected override void RunTest(Program program, TextWriter writer)
        {
            var eventListener = new FakeDecompilerEventListener();
            var sc            = new ServiceContainer();

            sc.AddService <DecompilerEventListener>(eventListener);
            var dfa = new DataFlowAnalysis(
                program,
                dynamicLinker.Object,
                sc);

            program.User.Procedures = userSigs;
            var usb = new UserSignatureBuilder(program);

            usb.BuildSignatures(eventListener);

            IntraBlockDeadRegisters.Apply(program, eventListener);

            var ssts = dfa.RewriteProceduresToSsa();

            // Discover ssaId's that are live out at each call site.
            // Delete all others.
            var uvr = new UnusedOutValuesRemover(
                program,
                ssts.Select(sst => sst.SsaState),
                dfa.ProgramDataFlow,
                dynamicLinker.Object,
                eventListener);

            uvr.Transform();
            DumpProcedureFlows(program, dfa, writer);
        }
 private void RunTest(Action<ProcedureBuilder> m)
 {
     var builder = new ProcedureBuilder();
     m(builder);
     var ibdr = new IntraBlockDeadRegisters();
     var block = builder.Procedure.EntryBlock.Succ[0];
     ibdr.Apply(block);
     var sw = new StringWriter();
     block.WriteStatements(sw);
     sw.Flush();
     testResult = sw.ToString();
 }
Ejemplo n.º 3
0
        private void RunTest(Action <ProcedureBuilder> m)
        {
            var builder = new ProcedureBuilder();

            m(builder);
            var ibdr  = new IntraBlockDeadRegisters();
            var block = builder.Procedure.EntryBlock.Succ[0];

            ibdr.Apply(block);
            var sw = new StringWriter();

            block.WriteStatements(sw);
            sw.Flush();
            testResult = sw.ToString();
        }