mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-11 16:17:54 +02:00
Merge bitcoin/bitcoin#34164: validation: add reusable coins view for ConnectBlock
3e0fd0e4ddrefactor: rename will_reuse_cache to reallocate_cache (Andrew Toth)44b4ee194dvalidation: reuse same CCoinsViewCache for every ConnectBlock call (Andrew Toth)8fb6043231coins: introduce CCoinsViewCache::ResetGuard (Andrew Toth)041758f5edcoins: use hashBlock setter internally for CCoinsViewCache methods (Andrew Toth)8dd9200fc9coins: add Reset on CCoinsViewCache (Andrew Toth) Pull request description: This is the first commit of #31132, which can be merged as an independent change. It has a small benefit on its own, but will help in moving the parent PR forward. Add a `Reset()` method to `CCoinsViewCache` that clears `cacheCoins`, `cachedCoinsUsage`, and `hashBlock` without flushing to the `base` view. This allows efficiently reusing a cache instance across multiple blocks. Add `CCoinsViewCache::CreateResetGuard` method to return a `CCoinsViewCache::ResetGuard`. The `ResetGuard` automatically calls `Reset()` on destruction. This RAII pattern ensures the cache is always properly reset between blocks. Add `m_connect_block_view` as a persistent `CCoinsViewCache` for `ConnectBlock`, avoiding repeated memory allocations. ACKs for top commit: l0rinc: ACK3e0fd0e4ddachow101: ACK3e0fd0e4ddsedited: ACK3e0fd0e4ddTree-SHA512: a95feaa062a9eb7cf7514425a7e7adffd347cd1f7b32b4c1fefcde30002141757c184174702b3104a029dcd33194f8bd734159deebb2e668716089305b42cb00
This commit is contained in:
@@ -489,6 +489,10 @@ public:
|
||||
//! can fit per the dbcache setting.
|
||||
std::unique_ptr<CCoinsViewCache> m_cacheview GUARDED_BY(cs_main);
|
||||
|
||||
//! Temporary CCoinsViewCache layered on top of m_cacheview and passed to ConnectBlock().
|
||||
//! Reset between calls and flushed only on success, so invalid blocks don't pollute the underlying cache.
|
||||
std::unique_ptr<CCoinsViewCache> m_connect_block_view GUARDED_BY(cs_main);
|
||||
|
||||
//! This constructor initializes CCoinsViewDB and CCoinsViewErrorCatcher instances, but it
|
||||
//! *does not* create a CCoinsViewCache instance by default. This is done separately because the
|
||||
//! presence of the cache has implications on whether or not we're allowed to flush the cache's
|
||||
|
||||
Reference in New Issue
Block a user