LCOV - code coverage report
Current view: top level - src - core_memusage.h (source / functions) Hit Total Coverage
Test: coverage.lcov Lines: 29 49 59.2 %
Date: 2021-06-29 14:35:33 Functions: 17 1289 1.3 %
Legend: Modified by patch:
Lines: hit not hit | Branches: + taken - not taken # not executed

Not modified by patch:
Lines: hit not hit | Branches: + taken - not taken # not executed
Branches: 20 22 90.9 %

           Branch data     Line data    Source code
#       1                 :            : // Copyright (c) 2015-2018 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                 :            : 
#       5                 :            : #ifndef BITCOIN_CORE_MEMUSAGE_H
#       6                 :            : #define BITCOIN_CORE_MEMUSAGE_H
#       7                 :            : 
#       8                 :            : #include <primitives/transaction.h>
#       9                 :            : #include <primitives/block.h>
#      10                 :            : #include <memusage.h>
#      11                 :            : 
#      12                 :     376400 : static inline size_t RecursiveDynamicUsage(const CScript& script) {
#      13                 :     376400 :     return memusage::DynamicUsage(script);
#      14                 :     376400 : }
#      15                 :            : 
#      16                 :     138771 : static inline size_t RecursiveDynamicUsage(const COutPoint& out) {
#      17                 :     138771 :     return 0;
#      18                 :     138771 : }
#      19                 :            : 
#      20                 :     138771 : static inline size_t RecursiveDynamicUsage(const CTxIn& in) {
#      21                 :     138771 :     size_t mem = RecursiveDynamicUsage(in.scriptSig) + RecursiveDynamicUsage(in.prevout) + memusage::DynamicUsage(in.scriptWitness.stack);
#      22 [ +  + ][ +  + ]:    1115727 :     for (std::vector<std::vector<unsigned char> >::const_iterator it = in.scriptWitness.stack.begin(); it != in.scriptWitness.stack.end(); it++) {
#                 [ +  + ]
#      23                 :     976956 :          mem += memusage::DynamicUsage(*it);
#      24                 :     976956 :     }
#      25                 :     138771 :     return mem;
#      26                 :     138771 : }
#      27                 :            : 
#      28                 :     237629 : static inline size_t RecursiveDynamicUsage(const CTxOut& out) {
#      29                 :     237629 :     return RecursiveDynamicUsage(out.scriptPubKey);
#      30                 :     237629 : }
#      31                 :            : 
#      32                 :      97025 : static inline size_t RecursiveDynamicUsage(const CTransaction& tx) {
#      33                 :      97025 :     size_t mem = memusage::DynamicUsage(tx.vin) + memusage::DynamicUsage(tx.vout);
#      34 [ +  + ][ +  + ]:     235796 :     for (std::vector<CTxIn>::const_iterator it = tx.vin.begin(); it != tx.vin.end(); it++) {
#                 [ +  + ]
#      35                 :     138771 :         mem += RecursiveDynamicUsage(*it);
#      36                 :     138771 :     }
#      37 [ +  + ][ +  + ]:     334654 :     for (std::vector<CTxOut>::const_iterator it = tx.vout.begin(); it != tx.vout.end(); it++) {
#                 [ +  + ]
#      38                 :     237629 :         mem += RecursiveDynamicUsage(*it);
#      39                 :     237629 :     }
#      40                 :      97025 :     return mem;
#      41                 :      97025 : }
#      42                 :            : 
#      43                 :          0 : static inline size_t RecursiveDynamicUsage(const CMutableTransaction& tx) {
#      44                 :          0 :     size_t mem = memusage::DynamicUsage(tx.vin) + memusage::DynamicUsage(tx.vout);
#      45                 :          0 :     for (std::vector<CTxIn>::const_iterator it = tx.vin.begin(); it != tx.vin.end(); it++) {
#      46                 :          0 :         mem += RecursiveDynamicUsage(*it);
#      47                 :          0 :     }
#      48                 :          0 :     for (std::vector<CTxOut>::const_iterator it = tx.vout.begin(); it != tx.vout.end(); it++) {
#      49                 :          0 :         mem += RecursiveDynamicUsage(*it);
#      50                 :          0 :     }
#      51                 :          0 :     return mem;
#      52                 :          0 : }
#      53                 :            : 
#      54                 :          0 : static inline size_t RecursiveDynamicUsage(const CBlock& block) {
#      55                 :          0 :     size_t mem = memusage::DynamicUsage(block.vtx);
#      56                 :          0 :     for (const auto& tx : block.vtx) {
#      57                 :          0 :         mem += memusage::DynamicUsage(tx) + RecursiveDynamicUsage(*tx);
#      58                 :          0 :     }
#      59                 :          0 :     return mem;
#      60                 :          0 : }
#      61                 :            : 
#      62                 :          0 : static inline size_t RecursiveDynamicUsage(const CBlockLocator& locator) {
#      63                 :          0 :     return memusage::DynamicUsage(locator.vHave);
#      64                 :          0 : }
#      65                 :            : 
#      66                 :            : template<typename X>
#      67                 :      96946 : static inline size_t RecursiveDynamicUsage(const std::shared_ptr<X>& p) {
#      68 [ +  - ][ +  - ]:      96946 :     return p ? memusage::DynamicUsage(p) + RecursiveDynamicUsage(*p) : 0;
#      69                 :      96946 : }
#      70                 :            : 
#      71                 :            : #endif // BITCOIN_CORE_MEMUSAGE_H

Generated by: LCOV version 1.14