| 255 | } |
| 256 | |
| 257 | void Visit(ExecNode* node) { |
| 258 | if (visited.count(node) != 0) return; |
| 259 | |
| 260 | for (auto input : node->inputs()) { |
| 261 | // Ensure that producers are inserted before this consumer |
| 262 | Visit(input); |
| 263 | } |
| 264 | |
| 265 | sorted[visited.size()] = node; |
| 266 | visited.insert(node); |
| 267 | } |
| 268 | }; |
| 269 | |
| 270 | return std::move(Impl{nodes_}.sorted); |