예제 #1
0
        /// <summary>
        /// Entry point method for performing escape analysis.
        /// </summary>
        /// <param name="cfg"></param>
        /// <param name="method"></param>
        /// <param name="results"></param>
        /// <returns></returns>
        private NaiveScopeMayEscapeAnalysis DoEscapeAnalysis(ControlFlowGraph cfg, IMethodDefinition method, ScopeMethodAnalysisResult results)
        {
            Utils.WriteLine("Running escape analysis...");
            var escAnalysis = new NaiveScopeMayEscapeAnalysis(cfg, method, mhost, rowType, rowSetType);

            results.EscapeSummary = escAnalysis.Analyze()[cfg.Exit.Id].Output;
            //Utils.WriteLine(results.EscapeSummary.ToString());
            Utils.WriteLine("Something escaped: " + escAnalysis.InterestingRowEscaped);
            Utils.WriteLine("Done with escape analysis");
            return(escAnalysis);
        }
예제 #2
0
 public NaiveScopeEscapeInfoProvider(NaiveScopeMayEscapeAnalysis ans)
 {
     analysis = ans;
     info     = analysis.PostResults;
 }