From 0ca3aecffb8c3c8162ba7b8cf4d16a2e34a7ac3e Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Wed, 26 Jun 2024 09:09:03 +0200 Subject: Capture TargetCache by pointer in AnalyseContext --- src/buildtool/build_engine/target_map/absent_target_map.cpp | 4 ++-- src/buildtool/build_engine/target_map/export.cpp | 5 +++-- src/buildtool/main/analyse_context.hpp | 8 ++++---- src/buildtool/main/main.cpp | 2 +- src/buildtool/serve_api/serve_service/target.cpp | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/buildtool/build_engine/target_map/absent_target_map.cpp b/src/buildtool/build_engine/target_map/absent_target_map.cpp index b21f426c..fd786539 100644 --- a/src/buildtool/build_engine/target_map/absent_target_map.cpp +++ b/src/buildtool/build_engine/target_map/absent_target_map.cpp @@ -64,7 +64,7 @@ void WithFlexibleVariables( /*fatal=*/true); return; } - auto target_cache_key = context->target_cache.ComputeKey( + auto target_cache_key = context->target_cache->ComputeKey( *repo_key, target_name, effective_config); if (not target_cache_key) { (*logger)(fmt::format("Could not produce cache key for target {}", @@ -74,7 +74,7 @@ void WithFlexibleVariables( } std::optional> target_cache_value{std::nullopt}; - target_cache_value = context->target_cache.Read(*target_cache_key); + target_cache_value = context->target_cache->Read(*target_cache_key); bool from_just_serve = false; if (not target_cache_value and context->serve) { auto task = fmt::format("[{},{}]", diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp index 23a70cd4..f3f4e97a 100644 --- a/src/buildtool/build_engine/target_map/export.cpp +++ b/src/buildtool/build_engine/target_map/export.cpp @@ -131,13 +131,14 @@ void ExportRule( auto const& target_name = key.target.GetNamedTarget(); auto repo_key = context->repo_config->RepositoryKey(target_name.repository); auto target_cache_key = repo_key - ? context->target_cache.ComputeKey( + ? context->target_cache->ComputeKey( *repo_key, target_name, effective_config) : std::nullopt; if (target_cache_key) { // first try to get value from local target cache - auto target_cache_value = context->target_cache.Read(*target_cache_key); + auto target_cache_value = + context->target_cache->Read(*target_cache_key); bool from_just_serve{false}; #ifndef BOOTSTRAP_BUILD_TOOL diff --git a/src/buildtool/main/analyse_context.hpp b/src/buildtool/main/analyse_context.hpp index d5022d4b..de3b4980 100644 --- a/src/buildtool/main/analyse_context.hpp +++ b/src/buildtool/main/analyse_context.hpp @@ -25,10 +25,10 @@ #include "src/buildtool/storage/target_cache.hpp" struct AnalyseContext final { - gsl::not_null repo_config; - ActiveTargetCache const& target_cache; - gsl::not_null statistics; - gsl::not_null progress; + gsl::not_null const repo_config; + gsl::not_null const target_cache; + gsl::not_null const statistics; + gsl::not_null const progress; std::optional const& serve; }; diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index 457bfcd1..1e956cc8 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -1007,7 +1007,7 @@ auto main(int argc, char* argv[]) -> int { Progress exports_progress{}; AnalyseContext analyse_ctx{ .repo_config = &repo_config, - .target_cache = Storage::Instance().TargetCache(), + .target_cache = &Storage::Instance().TargetCache(), .statistics = &stats, .progress = &exports_progress, .serve = serve}; diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp index a87648dc..d7e48402 100644 --- a/src/buildtool/serve_api/serve_service/target.cpp +++ b/src/buildtool/serve_api/serve_service/target.cpp @@ -451,7 +451,7 @@ auto TargetService::ServeTarget( Logger logger{"serve-target", {LogSinkFile::CreateFactory(tmp_log)}}; AnalyseContext analyse_ctx{.repo_config = &repository_config, - .target_cache = tc, + .target_cache = &tc, .statistics = &stats, .progress = &progress, .serve = serve_}; -- cgit v1.2.3