From aa29434a2feebc8925307372c27a5f56021620fc Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 14 Apr 2022 14:43:43 +0200 Subject: Add header cache to cc::compile_rule::enter_header() --- libbuild2/cc/module.hxx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'libbuild2/cc/module.hxx') diff --git a/libbuild2/cc/module.hxx b/libbuild2/cc/module.hxx index a91d723..ee9349a 100644 --- a/libbuild2/cc/module.hxx +++ b/libbuild2/cc/module.hxx @@ -4,6 +4,8 @@ #ifndef LIBBUILD2_CC_MODULE_HXX #define LIBBUILD2_CC_MODULE_HXX +#include + #include #include @@ -78,6 +80,15 @@ namespace build2 bool new_config = false; // See guess() and init() for details. + // Header cache (see compile_rule::enter_header()). + // + // We place it into the config module so that we have an option of + // sharing it for the entire weak amalgamation. + // + public: + mutable shared_mutex header_map_mutex; + mutable std::unordered_map header_map; + private: // Defined in gcc.cxx. // @@ -105,10 +116,10 @@ namespace build2 { public: explicit - module (data&& d) + module (data&& d, const scope& rs) : common (move (d)), link_rule (move (d)), - compile_rule (move (d)), + compile_rule (move (d), rs), install_rule (move (d), *this), libux_install_rule (move (d), *this) {} -- cgit v1.1