| 142 | }; |
| 143 | |
| 144 | void TopoSorter::DFSDepDiscover::add_opr(OperatorNodeBase* endpoint) { |
| 145 | m_prev_return_trait = nullptr; |
| 146 | m_cur_frame = nullptr; |
| 147 | |
| 148 | m_stack_buf.clear(); |
| 149 | push_stack(endpoint, &DFSDepDiscover::proc_empty); |
| 150 | while (m_cur_frame) { |
| 151 | auto cont = m_cur_frame->cont_addr; |
| 152 | (this->*cont)(); |
| 153 | } |
| 154 | } |
| 155 | |
| 156 | void TopoSorter::DFSDepDiscover::push_stack(OperatorNodeBase* opr, Proc resume) { |
| 157 | auto&& trait = m_topo_sorter->m_state->opr_trait[opr]; |