diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2014-09-02 21:21:15 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2014-09-03 14:24:52 +0200 |
commit | 629d75faac84bc0a00533d01dd291a4e6394a51f (patch) | |
tree | b855afa03cefc473be513288880dbc1da34d8d1a /src/coins.h | |
parent | b8d92236f61699846f67d8ce6cb55458a46f9de1 (diff) |
Combine CCoinsViewCache's HaveCoins and const GetCoins into AccessCoins.
The efficient version of CCoinsViewCache::GetCoins only works for known-to-exist
cache entries, requiring a separate HaveCoins call beforehand. This is
inefficient as both perform a hashtable lookup.
Replace the non-mutable GetCoins with AccessCoins, which returns a potentially-NULL
pointer. This also decreases the overloading of GetCoins.
Also replace some copying (inefficient) GetCoins calls with equivalent AccessCoins,
decreasing the copying.
Diffstat (limited to 'src/coins.h')
-rw-r--r-- | src/coins.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/coins.h b/src/coins.h index d338e3172e..c25393f1e0 100644 --- a/src/coins.h +++ b/src/coins.h @@ -344,11 +344,13 @@ public: bool SetBestBlock(const uint256 &hashBlock); bool BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock); + // Return a pointer to CCoins in the cache, or NULL if not found. This is + // more efficient than GetCoins. Modifications to other cache entries are + // allowed while accessing the returned pointer. + const CCoins* AccessCoins(const uint256 &txid) const; + // Return a modifiable reference to a CCoins. Check HaveCoins first. - // Many methods explicitly require a CCoinsViewCache because of this method, to reduce - // copying. CCoins &GetCoins(const uint256 &txid); - const CCoins &GetCoins(const uint256 &txid) const; // Push the modifications applied to this cache to its base. // Failure to call this method before destruction will cause the changes to be forgotten. |