From f8be9c62fb9c73357265c22b5ca33eec01ce7dbc Mon Sep 17 00:00:00 2001 From: Alexander McCord Date: Sat, 8 Jun 2024 19:13:30 -0700 Subject: [PATCH] This is hot loop. --- EqSat/include/Luau/EGraph.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/EqSat/include/Luau/EGraph.h b/EqSat/include/Luau/EGraph.h index b2286801..3f686895 100644 --- a/EqSat/include/Luau/EGraph.h +++ b/EqSat/include/Luau/EGraph.h @@ -145,8 +145,11 @@ private: } eclass.parents.clear(); - for (auto& [enode, id] : map) - eclass.parents.push_back({std::move(enode), id}); + for (auto it = map.begin(); it != map.end();) + { + auto node = map.extract(it++); + eclass.parents.emplace_back(std::move(node.key()), node.mapped()); + } } public: @@ -186,7 +189,7 @@ public: unionfind.merge(id1, id2); EClass& eclass1 = get(id1); - EClass eclass2 = get(id2); + EClass eclass2 = std::move(get(id2)); classes.erase(id2); worklist.reserve(worklist.size() + eclass2.parents.size());