private bool AddToMarkStack(DependencyNodeCore <DependencyContextType> node, string reason, DependencyNodeCore <DependencyContextType> reason1, DependencyNodeCore <DependencyContextType> reason2) { if (_marker.MarkNode(node, reason1, reason2, reason)) { if (PerfEventSource.Log.IsEnabled()) { PerfEventSource.Log.AddedNodeToMarkStack(); } // Pop the top node of the mark stack if (_stackPopRandomizer == null) { _markStack.Push(node); } else { // // Expose output file determinism bugs in our system by randomizing the order nodes are pushed // on to the mark stack. // int randomNodeIndex = _stackPopRandomizer.Next(_markStack.Count); var tempStack = new Stack <DependencyNodeCore <DependencyContextType> >(); for (int i = 0; i < randomNodeIndex; i++) { tempStack.Push(_markStack.Pop()); } _markStack.Push(node); while (tempStack.Count > 0) { _markStack.Push(tempStack.Pop()); } } _markedNodes.Add(node); node.CallOnMarked(_dependencyContext); if (NewMarkedNode != null) { NewMarkedNode(node); } return(true); } return(false); }
private bool AddToMarkStack(DependencyNodeCore <DependencyContextType> node, string reason, DependencyNodeCore <DependencyContextType> reason1, DependencyNodeCore <DependencyContextType> reason2) { if (_marker.MarkNode(node, reason1, reason2, reason)) { _markStack.Push(node); _markedNodes.Add(node); node.CallOnMarked(_dependencyContext); if (NewMarkedNode != null) { NewMarkedNode(node); } return(true); } return(false); }