summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/common/content_blob_container.hpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-05-27 16:16:26 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-05-28 16:19:19 +0200
commitc0b46b2f4e47fc017beeae34ff555418d198e1d4 (patch)
tree6a4319a1b974fd6113fab80dd1047c1a8cb7be18 /src/buildtool/execution_api/common/content_blob_container.hpp
parentfd8ad0f561dd253bf7399ce9a4594242e918ca25 (diff)
downloadjustbuild-c0b46b2f4e47fc017beeae34ff555418d198e1d4.tar.gz
Use shared_ptr for data in ContentBlob
...to reduce the "price" of copying.
Diffstat (limited to 'src/buildtool/execution_api/common/content_blob_container.hpp')
-rw-r--r--src/buildtool/execution_api/common/content_blob_container.hpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/buildtool/execution_api/common/content_blob_container.hpp b/src/buildtool/execution_api/common/content_blob_container.hpp
index fcd10f09..f2d7476e 100644
--- a/src/buildtool/execution_api/common/content_blob_container.hpp
+++ b/src/buildtool/execution_api/common/content_blob_container.hpp
@@ -16,22 +16,29 @@
#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CONTENT_BLOB_CONTAINER_HPP
#include <cstddef>
+#include <memory>
#include <string>
#include <unordered_map>
#include <utility> //std::move
#include <vector>
+#include "gsl/gsl"
#include "src/utils/cpp/transformed_range.hpp"
template <typename TDigest>
struct ContentBlob final {
ContentBlob(TDigest mydigest, std::string mydata, bool is_exec) noexcept
: digest{std::move(mydigest)},
- data{std::move(mydata)},
+ data{std::make_shared<std::string>(std::move(mydata))},
is_exec{is_exec} {}
+ ContentBlob(TDigest mydigest,
+ gsl::not_null<std::shared_ptr<std::string>> const& mydata,
+ bool is_exec) noexcept
+ : digest{std::move(mydigest)}, data(mydata), is_exec{is_exec} {}
+
TDigest digest{};
- std::string data{};
+ std::shared_ptr<std::string> data{};
bool is_exec{};
};