@@ -69,39 +69,34 @@ void ngraph::traverse_nodes(const NodeVector& subgraph_results,
69
69
bool include_control_deps,
70
70
const NodeVector& subgraph_params)
71
71
{
72
- std::unordered_set<std::shared_ptr<Node>> instances_seen{subgraph_params.begin (),
73
- subgraph_params.end ()};
74
- std::deque<std::shared_ptr<Node>> stack;
75
-
76
- for (auto r : subgraph_results)
72
+ std::unordered_set<Node*> instances_seen;
73
+ std::deque<Node*> stack;
74
+ for (auto & node_ptr : subgraph_params)
77
75
{
78
- stack.push_front (r);
76
+ instances_seen.insert (node_ptr.get ());
77
+ }
78
+ for (auto & node_ptr : subgraph_results)
79
+ {
80
+ stack.push_front (node_ptr.get ());
79
81
}
80
82
81
83
while (stack.size () > 0 )
82
84
{
83
- std::shared_ptr< Node> n = stack.front ();
85
+ Node* n = stack.front ();
84
86
stack.pop_front ();
85
- if (instances_seen.count (n) == 0 )
87
+ if (instances_seen.insert (n). second )
86
88
{
87
- instances_seen.insert (n);
88
- f (n);
89
- for (auto arg : n->get_arguments ())
89
+ f (n->shared_from_this ());
90
+ for (auto & arg : n->get_arguments ())
90
91
{
91
- if (instances_seen.count (arg) == 0 )
92
- {
93
- stack.push_front (arg);
94
- }
92
+ stack.push_front (arg.get ());
95
93
}
96
94
97
95
if (include_control_deps)
98
96
{
99
- for (auto cdep : n->get_control_dependencies ())
97
+ for (auto & cdep : n->get_control_dependencies ())
100
98
{
101
- if (instances_seen.count (cdep) == 0 )
102
- {
103
- stack.push_front (cdep);
104
- }
99
+ stack.push_front (cdep.get ());
105
100
}
106
101
}
107
102
}
0 commit comments