From c1235e3f2dd5b01b63b020d1b8f7283e8badaf09 Mon Sep 17 00:00:00 2001 From: Russell Yanofsky Date: Mon, 21 Nov 2016 11:47:12 -0500 Subject: Add RecursiveDynamicUsage overload for std::shared_ptr This simplifies a few usage expressions. --- src/core_memusage.h | 5 +++++ src/txmempool.cpp | 2 +- src/txmempool.h | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core_memusage.h b/src/core_memusage.h index 5e10182075..e4ccd54c42 100644 --- a/src/core_memusage.h +++ b/src/core_memusage.h @@ -63,4 +63,9 @@ static inline size_t RecursiveDynamicUsage(const CBlockLocator& locator) { return memusage::DynamicUsage(locator.vHave); } +template +static inline size_t RecursiveDynamicUsage(const std::shared_ptr& p) { + return p ? memusage::DynamicUsage(p) + RecursiveDynamicUsage(*p) : 0; +} + #endif // BITCOIN_CORE_MEMUSAGE_H diff --git a/src/txmempool.cpp b/src/txmempool.cpp index ac842da6bf..45980bb60e 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -23,7 +23,7 @@ CTxMemPoolEntry::CTxMemPoolEntry(const CTransactionRef& _tx, const CAmount& _nFe spendsCoinbase(_spendsCoinbase), sigOpCost(_sigOpsCost), lockPoints(lp) { nTxWeight = GetTransactionWeight(*tx); - nUsageSize = RecursiveDynamicUsage(*tx) + memusage::DynamicUsage(tx); + nUsageSize = RecursiveDynamicUsage(tx); nCountWithDescendants = 1; nSizeWithDescendants = GetTxSize(); diff --git a/src/txmempool.h b/src/txmempool.h index 4a83c3f844..ff90b4eda5 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -740,7 +740,7 @@ struct DisconnectedBlockTransactions { void addTransaction(const CTransactionRef& tx) { queuedTx.insert(tx); - cachedInnerUsage += RecursiveDynamicUsage(*tx) + memusage::DynamicUsage(tx); + cachedInnerUsage += RecursiveDynamicUsage(tx); } // Remove entries based on txid_index, and update memory usage. @@ -753,7 +753,7 @@ struct DisconnectedBlockTransactions { for (auto const &tx : vtx) { auto it = queuedTx.find(tx->GetHash()); if (it != queuedTx.end()) { - cachedInnerUsage -= RecursiveDynamicUsage(**it) + memusage::DynamicUsage(*it); + cachedInnerUsage -= RecursiveDynamicUsage(*it); queuedTx.erase(it); } } @@ -762,7 +762,7 @@ struct DisconnectedBlockTransactions { // Remove an entry by insertion_order index, and update memory usage. void removeEntry(indexed_disconnected_transactions::index::type::iterator entry) { - cachedInnerUsage -= RecursiveDynamicUsage(**entry) + memusage::DynamicUsage(*entry); + cachedInnerUsage -= RecursiveDynamicUsage(*entry); queuedTx.get().erase(entry); } -- cgit v1.2.3