Add RecursiveDynamicUsage overload for std::shared_ptr

This simplifies a few usage expressions.
This commit is contained in:
Russell Yanofsky 2016-11-21 11:47:12 -05:00 committed by Suhas Daftuar
parent 71f1903353
commit c1235e3f2d
3 changed files with 9 additions and 4 deletions

View file

@ -63,4 +63,9 @@ static inline size_t RecursiveDynamicUsage(const CBlockLocator& locator) {
return memusage::DynamicUsage(locator.vHave); return memusage::DynamicUsage(locator.vHave);
} }
template<typename X>
static inline size_t RecursiveDynamicUsage(const std::shared_ptr<X>& p) {
return p ? memusage::DynamicUsage(p) + RecursiveDynamicUsage(*p) : 0;
}
#endif // BITCOIN_CORE_MEMUSAGE_H #endif // BITCOIN_CORE_MEMUSAGE_H

View file

@ -23,7 +23,7 @@ CTxMemPoolEntry::CTxMemPoolEntry(const CTransactionRef& _tx, const CAmount& _nFe
spendsCoinbase(_spendsCoinbase), sigOpCost(_sigOpsCost), lockPoints(lp) spendsCoinbase(_spendsCoinbase), sigOpCost(_sigOpsCost), lockPoints(lp)
{ {
nTxWeight = GetTransactionWeight(*tx); nTxWeight = GetTransactionWeight(*tx);
nUsageSize = RecursiveDynamicUsage(*tx) + memusage::DynamicUsage(tx); nUsageSize = RecursiveDynamicUsage(tx);
nCountWithDescendants = 1; nCountWithDescendants = 1;
nSizeWithDescendants = GetTxSize(); nSizeWithDescendants = GetTxSize();

View file

@ -740,7 +740,7 @@ struct DisconnectedBlockTransactions {
void addTransaction(const CTransactionRef& tx) void addTransaction(const CTransactionRef& tx)
{ {
queuedTx.insert(tx); queuedTx.insert(tx);
cachedInnerUsage += RecursiveDynamicUsage(*tx) + memusage::DynamicUsage(tx); cachedInnerUsage += RecursiveDynamicUsage(tx);
} }
// Remove entries based on txid_index, and update memory usage. // Remove entries based on txid_index, and update memory usage.
@ -753,7 +753,7 @@ struct DisconnectedBlockTransactions {
for (auto const &tx : vtx) { for (auto const &tx : vtx) {
auto it = queuedTx.find(tx->GetHash()); auto it = queuedTx.find(tx->GetHash());
if (it != queuedTx.end()) { if (it != queuedTx.end()) {
cachedInnerUsage -= RecursiveDynamicUsage(**it) + memusage::DynamicUsage(*it); cachedInnerUsage -= RecursiveDynamicUsage(*it);
queuedTx.erase(it); queuedTx.erase(it);
} }
} }
@ -762,7 +762,7 @@ struct DisconnectedBlockTransactions {
// Remove an entry by insertion_order index, and update memory usage. // Remove an entry by insertion_order index, and update memory usage.
void removeEntry(indexed_disconnected_transactions::index<insertion_order>::type::iterator entry) void removeEntry(indexed_disconnected_transactions::index<insertion_order>::type::iterator entry)
{ {
cachedInnerUsage -= RecursiveDynamicUsage(**entry) + memusage::DynamicUsage(*entry); cachedInnerUsage -= RecursiveDynamicUsage(*entry);
queuedTx.get<insertion_order>().erase(entry); queuedTx.get<insertion_order>().erase(entry);
} }