From d762bfa1953933dfac0a29a74523c25719396b8c Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Sat, 15 Apr 2023 16:28:33 +0200 Subject: imports: Switch to Microsoft GSL implementation ... with two minor code base changes compared to previous use of gsl-lite: - dag.hpp: ActionNode::Ptr and ArtifactNode::Ptr are not wrapped in gsl::not_null<> anymore, due to lack of support for wrapping std::unique_ptr<>. More specifically, the move constructor is missing, rendering it impossible to use std::vector<>::emplace_back(). - utils/cpp/gsl.hpp: New header file added to implement the macros ExpectsAudit() and EnsureAudit(), asserts running only in debug builds, which were available in gsl-lite but are missing in MS GSL. --- src/buildtool/multithreading/TARGETS | 17 ++++++----------- src/buildtool/multithreading/async_map.hpp | 2 +- src/buildtool/multithreading/async_map_consumer.hpp | 2 +- src/buildtool/multithreading/async_map_node.hpp | 5 +++-- src/buildtool/multithreading/notification_queue.hpp | 8 ++++---- src/buildtool/multithreading/task_system.cpp | 4 ++-- 6 files changed, 17 insertions(+), 21 deletions(-) (limited to 'src/buildtool/multithreading') diff --git a/src/buildtool/multithreading/TARGETS b/src/buildtool/multithreading/TARGETS index 2e5467f4..2d758589 100644 --- a/src/buildtool/multithreading/TARGETS +++ b/src/buildtool/multithreading/TARGETS @@ -9,8 +9,7 @@ { "type": ["@", "rules", "CC", "library"] , "name": ["notification_queue"] , "hdrs": ["notification_queue.hpp"] - , "deps": - ["task", ["src/utils/cpp", "atomic"], ["@", "gsl-lite", "", "gsl-lite"]] + , "deps": ["task", ["src/utils/cpp", "atomic"], ["@", "gsl", "", "gsl"]] , "stage": ["src", "buildtool", "multithreading"] } , "task_system": @@ -18,7 +17,7 @@ , "name": ["task_system"] , "hdrs": ["task_system.hpp"] , "srcs": ["task_system.cpp"] - , "deps": ["notification_queue", ["@", "gsl-lite", "", "gsl-lite"]] + , "deps": ["notification_queue", ["@", "gsl", "", "gsl"]] , "stage": ["src", "buildtool", "multithreading"] , "private-deps": ["task"] } @@ -26,19 +25,15 @@ { "type": ["@", "rules", "CC", "library"] , "name": ["async_map_node"] , "hdrs": ["async_map_node.hpp"] - , "deps": ["task", "task_system", ["@", "gsl-lite", "", "gsl-lite"]] + , "deps": + ["task", "task_system", ["src/utils/cpp", "gsl"], ["@", "gsl", "", "gsl"]] , "stage": ["src", "buildtool", "multithreading"] } , "async_map": { "type": ["@", "rules", "CC", "library"] , "name": ["async_map"] , "hdrs": ["async_map.hpp"] - , "deps": - [ "task" - , "task_system" - , "async_map_node" - , ["@", "gsl-lite", "", "gsl-lite"] - ] + , "deps": ["task", "task_system", "async_map_node", ["@", "gsl", "", "gsl"]] , "stage": ["src", "buildtool", "multithreading"] } , "async_map_consumer": @@ -50,7 +45,7 @@ , "task_system" , "async_map_node" , "async_map" - , ["@", "gsl-lite", "", "gsl-lite"] + , ["@", "gsl", "", "gsl"] ] , "stage": ["src", "buildtool", "multithreading"] } diff --git a/src/buildtool/multithreading/async_map.hpp b/src/buildtool/multithreading/async_map.hpp index 91ffd8c2..3267b312 100644 --- a/src/buildtool/multithreading/async_map.hpp +++ b/src/buildtool/multithreading/async_map.hpp @@ -23,7 +23,7 @@ #include // std::make_pair to use std::unordered_map's emplace() #include -#include "gsl-lite/gsl-lite.hpp" +#include "gsl/gsl" #include "src/buildtool/multithreading/async_map_node.hpp" #include "src/buildtool/multithreading/task.hpp" #include "src/buildtool/multithreading/task_system.hpp" diff --git a/src/buildtool/multithreading/async_map_consumer.hpp b/src/buildtool/multithreading/async_map_consumer.hpp index 3dcc0eff..0de6b36f 100644 --- a/src/buildtool/multithreading/async_map_consumer.hpp +++ b/src/buildtool/multithreading/async_map_consumer.hpp @@ -25,7 +25,7 @@ #include #include -#include "gsl-lite/gsl-lite.hpp" +#include "gsl/gsl" #include "src/buildtool/multithreading/async_map.hpp" #include "src/buildtool/multithreading/async_map_node.hpp" #include "src/buildtool/multithreading/task.hpp" diff --git a/src/buildtool/multithreading/async_map_node.hpp b/src/buildtool/multithreading/async_map_node.hpp index c729582d..2c07f11b 100644 --- a/src/buildtool/multithreading/async_map_node.hpp +++ b/src/buildtool/multithreading/async_map_node.hpp @@ -19,9 +19,10 @@ #include #include -#include "gsl-lite/gsl-lite.hpp" +#include "gsl/gsl" #include "src/buildtool/multithreading/task.hpp" #include "src/buildtool/multithreading/task_system.hpp" +#include "src/utils/cpp/gsl.hpp" // Wrapper around Value to enable async access to it in a continuation-style // programming way @@ -154,7 +155,7 @@ class AsyncMapNode { // Not thread safe, do not use unless the value has been already set [[nodiscard]] auto GetValue() const& noexcept -> Value const& { // Will only be checked in debug build - gsl_ExpectsAudit(value_.has_value()); + ExpectsAudit(value_.has_value()); return *value_; } [[nodiscard]] auto GetValue() && noexcept = delete; diff --git a/src/buildtool/multithreading/notification_queue.hpp b/src/buildtool/multithreading/notification_queue.hpp index 1df5d659..9d2f06eb 100644 --- a/src/buildtool/multithreading/notification_queue.hpp +++ b/src/buildtool/multithreading/notification_queue.hpp @@ -22,7 +22,7 @@ #include #include // std::forward -#include "gsl-lite/gsl-lite.hpp" +#include "gsl/gsl" #include "src/buildtool/multithreading/task.hpp" #include "src/utils/cpp/atomic.hpp" @@ -67,14 +67,14 @@ class WaitableZeroCounter { class NotificationQueue { public: explicit NotificationQueue( - gsl::not_null total_workload) - : total_workload_{std::move(total_workload)} {} + gsl::not_null const& total_workload) + : total_workload_{total_workload} {} NotificationQueue(NotificationQueue const& other) = delete; NotificationQueue(NotificationQueue&& other) noexcept : queue_{std::move(other.queue_)}, done_{other.done_}, - total_workload_{std::move(other.total_workload_)} {} + total_workload_{other.total_workload_} {} ~NotificationQueue() = default; [[nodiscard]] auto operator=(NotificationQueue const& other) diff --git a/src/buildtool/multithreading/task_system.cpp b/src/buildtool/multithreading/task_system.cpp index cf9ed543..13c3caec 100644 --- a/src/buildtool/multithreading/task_system.cpp +++ b/src/buildtool/multithreading/task_system.cpp @@ -14,7 +14,7 @@ #include "src/buildtool/multithreading/task_system.hpp" -#include "gsl-lite/gsl-lite.hpp" +#include "gsl/gsl" #include "src/buildtool/multithreading/task.hpp" TaskSystem::TaskSystem() : TaskSystem(std::thread::hardware_concurrency()) {} @@ -59,7 +59,7 @@ void TaskSystem::Finish() noexcept { } void TaskSystem::Run(std::size_t idx) { - gsl_Expects(thread_count_ > 0); + Expects(thread_count_ > 0); while (not shutdown_) { std::optional t{}; -- cgit v1.2.3