internal BTValueCreators this[AnnotatingVisitor visitor] { get { BTValueCreators creators = this.hash[visitor] as BTValueCreators; if (creators == null) this.hash[visitor] = creators = new BTValueCreators(); return creators; } }
internal static void UpdateCreators(State state, AnnotatingVisitor visitor, Node upNode) { for (int i = 0; i < state.Stack.Count; i++) { BTValue val = state.Stack[i] as BTValue; if (val is PrimitiveBTValue) val.Creators[visitor].AddCreator(upNode, i); } foreach (Variable var in state.Pool.GetVariables()) { BTValue val = state.Pool[var].Val as BTValue; if (val is PrimitiveBTValue) val.Creators[visitor].AddCreator(upNode, var); } }
internal ControllingVisitor(AnnotatedAssemblyHolder holder, AnnotatedMethod method, UpAndDownNodes upDownNodes, MethodBodyBlock mbbUp, out AnnotatingVisitor aVisitor, out LiftingVisitor lVisitor) : base(holder.GraphProcessor, 2) { this.holder = holder; this.method = method; this.method.ControllingVisitor = this; this.aVisitor = aVisitor = new AnnotatingVisitor(holder, method, this, upDownNodes); this.lVisitor = lVisitor = new LiftingVisitor(holder, this, aVisitor, upDownNodes); this.upDownNodes = upDownNodes; this.mbbUp = mbbUp; this.users = 0; }
internal LiftingVisitor(AnnotatedAssemblyHolder holder, ControllingVisitor cVisitor, AnnotatingVisitor aVisitor, UpAndDownNodes upDownNodes) : base(holder.GraphProcessor, 1) { this.cVisitor = cVisitor; this.aVisitor = aVisitor; this.upDownNodes = upDownNodes; }