From c0b46b2f4e47fc017beeae34ff555418d198e1d4 Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Mon, 27 May 2024 16:16:26 +0200 Subject: Use shared_ptr for data in ContentBlob ...to reduce the "price" of copying. --- src/buildtool/execution_api/common/content_blob_container.hpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/buildtool/execution_api/common/content_blob_container.hpp') 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 +#include #include #include #include //std::move #include +#include "gsl/gsl" #include "src/utils/cpp/transformed_range.hpp" template 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::move(mydata))}, is_exec{is_exec} {} + ContentBlob(TDigest mydigest, + gsl::not_null> const& mydata, + bool is_exec) noexcept + : digest{std::move(mydigest)}, data(mydata), is_exec{is_exec} {} + TDigest digest{}; - std::string data{}; + std::shared_ptr data{}; bool is_exec{}; }; -- cgit v1.2.3