equal
deleted
inserted
replaced
983 // Use one stack to keep both: child's node/state and parent's node/index |
983 // Use one stack to keep both: child's node/state and parent's node/index |
984 MStack mstack(max_stack * 2 * 2); // C->unique() * 2 * 2 |
984 MStack mstack(max_stack * 2 * 2); // C->unique() * 2 * 2 |
985 mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root |
985 mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root |
986 |
986 |
987 while (mstack.is_nonempty()) { |
987 while (mstack.is_nonempty()) { |
|
988 C->check_node_count(NodeLimitFudgeFactor, "too many nodes matching instructions"); |
|
989 if (C->failing()) return NULL; |
988 n = mstack.node(); // Leave node on stack |
990 n = mstack.node(); // Leave node on stack |
989 Node_State nstate = mstack.state(); |
991 Node_State nstate = mstack.state(); |
990 if (nstate == Visit) { |
992 if (nstate == Visit) { |
991 mstack.set_state(Post_Visit); |
993 mstack.set_state(Post_Visit); |
992 Node *oldn = n; |
994 Node *oldn = n; |