summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/expression/expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/build_engine/expression/expression.cpp')
-rw-r--r--src/buildtool/build_engine/expression/expression.cpp11
1 files changed, 1 insertions, 10 deletions
diff --git a/src/buildtool/build_engine/expression/expression.cpp b/src/buildtool/build_engine/expression/expression.cpp
index 679ebcbd..763f51f8 100644
--- a/src/buildtool/build_engine/expression/expression.cpp
+++ b/src/buildtool/build_engine/expression/expression.cpp
@@ -149,16 +149,7 @@ auto Expression::ToString() const -> std::string {
// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::ToHash() const noexcept -> std::string {
- if (hash_.load() == nullptr) {
- if (not hash_loading_.exchange(true)) {
- hash_ = std::make_shared<std::string>(ComputeHash());
- hash_.notify_all();
- }
- else {
- hash_.wait(nullptr);
- }
- }
- return *hash_.load();
+ return hash_.SetOnceAndGet([this] { return ComputeHash(); });
}
// NOLINTNEXTLINE(misc-no-recursion)