public StatementProcessor(MethodDescriptor m, PropGraphNodeDescriptor rv, PropGraphNodeDescriptor thisRef, IEnumerable <PropGraphNodeDescriptor> parameters) // , // ICodeProvider codeProvider) { // this.containerEntity = containerEntity; this.ReturnVariable = rv; this.Method = m; this.ParameterNodes = parameters; this.ThisRef = thisRef; this.PropagationGraph = new PropagationGraph(); this.InstantiatedTypes = new HashSet <TypeDescriptor>(); this.RemovedTypes = new HashSet <TypeDescriptor>(); if (rv != null) { PropagationGraph.AddRet(rv); } if (thisRef != null) { PropagationGraph.Add(thisRef); } foreach (var parameter in this.ParameterNodes) { if (parameter != null) { PropagationGraph.Add(parameter); } } //this.dispatcher = dispatcher; }
public void RegisterAssignment(PropGraphNodeDescriptor lhs, PropGraphNodeDescriptor rhs) { if (lhs != null && rhs != null) { PropagationGraph.AddEdge(rhs, lhs); if (!rhs.Type.IsConcreteType) { PropagationGraph.Add(rhs, rhs.Type); PropagationGraph.AddToWorkList(rhs); } } }
public void RegisterLocalVariable(PropGraphNodeDescriptor v) { PropagationGraph.Add(v); }