diff --git a/libyul/YulString.h b/libyul/YulString.h index 80d58f3ed788..c2b4932b17aa 100644 --- a/libyul/YulString.h +++ b/libyul/YulString.h @@ -23,8 +23,9 @@ #include -#include +#include #include +#include #include #include #include @@ -59,15 +60,15 @@ class YulStringRepository std::uint64_t h = hash(_string); auto range = m_hashToID.equal_range(h); for (auto it = range.first; it != range.second; ++it) - if (*m_strings[it->second] == _string) + if (m_strings[it->second] == _string) return Handle{it->second, h}; - m_strings.emplace_back(std::make_shared(_string)); + m_strings.emplace_back(_string); size_t id = m_strings.size() - 1; m_hashToID.emplace_hint(range.second, std::make_pair(h, id)); return Handle{id, h}; } - std::string const& idToString(size_t _id) const { return *m_strings.at(_id); } + std::string const& idToString(size_t _id) const { return m_strings.at(_id); } static std::uint64_t hash(std::string_view const v) { @@ -115,7 +116,7 @@ class YulStringRepository return callbacks; } - std::vector> m_strings = {std::make_shared()}; + std::deque m_strings = {""}; std::unordered_multimap m_hashToID = {{emptyHash(), 0}}; };