private void EnableMoves(List <Node> nodes) { foreach (Node n in nodes) { foreach (Move m in NodeMoves(n)) { if (ActiveMoves.Contains(m)) { ActiveMoves.Remove(m); WorklistMoves.Add(m); } } } }
private void FreezeMoves(Node u) { foreach (Move m in NodeMoves(u)) { Node x = GetNodeByTemp(m.Dst); Node y = GetNodeByTemp(m.Src); Node v; if (GetAlias(y) == GetAlias(u)) { v = GetAlias(x); } else { v = GetAlias(y); } ActiveMoves.Remove(m); FrozenMoves.Add(m); if (NodeMoves(v).Count == 0 && v.Degree < K) { FreezeWorklist.Remove(v); SimplifyWorklist.Add(v); } } }