Bitcoin Core  27.99.0
P2P Digital Currency
validation_cache_args.cpp
Go to the documentation of this file.
1 // Copyright (c) 2022 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
6 
8 
9 #include <common/args.h>
10 
11 #include <algorithm>
12 #include <cstddef>
13 #include <cstdint>
14 #include <memory>
15 #include <optional>
16 
18 
19 namespace node {
20 void ApplyArgsManOptions(const ArgsManager& argsman, ValidationCacheSizes& cache_sizes)
21 {
22  if (auto max_size = argsman.GetIntArg("-maxsigcachesize")) {
23  // 1. When supplied with a max_size of 0, both InitSignatureCache and
24  // InitScriptExecutionCache create the minimum possible cache (2
25  // elements). Therefore, we can use 0 as a floor here.
26  // 2. Multiply first, divide after to avoid integer truncation.
27  size_t clamped_size_each = std::max<int64_t>(*max_size, 0) * (1 << 20) / 2;
28  cache_sizes = {
29  .signature_cache_bytes = clamped_size_each,
30  .script_execution_cache_bytes = clamped_size_each,
31  };
32  }
33 }
34 } // namespace node
int64_t GetIntArg(const std::string &strArg, int64_t nDefault) const
Return integer argument or default value.
Definition: args.cpp:480
Definition: init.h:25
util::Result< void > ApplyArgsManOptions(const ArgsManager &args, BlockManager::Options &opts)