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/TARGETS | 2 +- src/buildtool/execution_api/common/content_blob_container.hpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src/buildtool/execution_api/common') diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index 956fb3a3..50e556a9 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -96,6 +96,6 @@ , "name": ["content_blob_container"] , "hdrs": ["content_blob_container.hpp"] , "stage": ["src", "buildtool", "execution_api", "common"] - , "deps": [["src/utils/cpp", "transformed_range"]] + , "deps": [["src/utils/cpp", "transformed_range"], ["@", "gsl", "", "gsl"]] } } 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