protected void RunAnalysis() { switch (_worklistMethodName) { case "FIFOWorklist": _worklist = new FIFOWorklist(_flow); break; case "LIFOWorklist": _worklist = new LIFOWorklist(_flow); break; case "ChaoticIteration": _worklist = new ChaoticIteration(_flow.Shuffle(3)); break; case "RoundRobin": DepthFirstSpanningTree dfst = new DepthFirstSpanningTree(new FlowGraph(_program)); _worklist = new RoundRobin(_flow, dfst.GetRP()); break; default: break; } WorkThroughWorklist(_worklist); var labels = FlowUtil.Labels(_blocks); foreach (var lab in labels) { var edges = _flow.Where(x => x.Dest == lab); _analysisFilled[lab] = TransferFunctions(lab); } }
private int WorkThroughWorklist(IWorkList _workList) { int numberOfOperations = 0; List <(int, string)> analysisCircleList = new List <(int, string)>(); foreach (int lab in FlowUtil.Labels(_blocks)) { analysisCircleList.Add((lab, _analysisCircle[lab].ToString()));