Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit 2427b20

Browse files
authored
Implement traverse nodes with pointers (#3205)
1 parent 9b3d573 commit 2427b20

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

src/ngraph/graph_util.cpp

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -69,39 +69,34 @@ void ngraph::traverse_nodes(const NodeVector& subgraph_results,
6969
bool include_control_deps,
7070
const NodeVector& subgraph_params)
7171
{
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)
7775
{
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());
7981
}
8082

8183
while (stack.size() > 0)
8284
{
83-
std::shared_ptr<Node> n = stack.front();
85+
Node* n = stack.front();
8486
stack.pop_front();
85-
if (instances_seen.count(n) == 0)
87+
if (instances_seen.insert(n).second)
8688
{
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())
9091
{
91-
if (instances_seen.count(arg) == 0)
92-
{
93-
stack.push_front(arg);
94-
}
92+
stack.push_front(arg.get());
9593
}
9694

9795
if (include_control_deps)
9896
{
99-
for (auto cdep : n->get_control_dependencies())
97+
for (auto& cdep : n->get_control_dependencies())
10098
{
101-
if (instances_seen.count(cdep) == 0)
102-
{
103-
stack.push_front(cdep);
104-
}
99+
stack.push_front(cdep.get());
105100
}
106101
}
107102
}

0 commit comments

Comments
 (0)