mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1475461
- part 1: Mark PLDHashTable::Search() and called by it as const r=Ehsan
PLDHashTable::Search() does not modify any members. So, this method and methods called by it should be marked as const. MozReview-Commit-ID: 6g4jrYK1j9E --HG-- extra : rebase_source : eda6c50c538fec0e8c09cb2ba629735eea6ec711
This commit is contained in:
parent
e8cc1dc6df
commit
78077d5b3c
@ -256,14 +256,14 @@ PLDHashTable::operator=(PLDHashTable&& aOther)
|
||||
}
|
||||
|
||||
PLDHashNumber
|
||||
PLDHashTable::Hash1(PLDHashNumber aHash0)
|
||||
PLDHashTable::Hash1(PLDHashNumber aHash0) const
|
||||
{
|
||||
return aHash0 >> mHashShift;
|
||||
}
|
||||
|
||||
void
|
||||
PLDHashTable::Hash2(PLDHashNumber aHash0,
|
||||
uint32_t& aHash2Out, uint32_t& aSizeMaskOut)
|
||||
uint32_t& aHash2Out, uint32_t& aSizeMaskOut) const
|
||||
{
|
||||
uint32_t sizeLog2 = kHashBits - mHashShift;
|
||||
uint32_t sizeMask = (PLDHashNumber(1) << sizeLog2) - 1;
|
||||
@ -293,17 +293,19 @@ PLDHashTable::Hash2(PLDHashNumber aHash0,
|
||||
|
||||
// Match an entry's mKeyHash against an unstored one computed from a key.
|
||||
/* static */ bool
|
||||
PLDHashTable::MatchEntryKeyhash(PLDHashEntryHdr* aEntry, PLDHashNumber aKeyHash)
|
||||
PLDHashTable::MatchEntryKeyhash(const PLDHashEntryHdr* aEntry,
|
||||
const PLDHashNumber aKeyHash)
|
||||
{
|
||||
return (aEntry->mKeyHash & ~kCollisionFlag) == aKeyHash;
|
||||
}
|
||||
|
||||
// Compute the address of the indexed entry in table.
|
||||
PLDHashEntryHdr*
|
||||
PLDHashTable::AddressEntry(uint32_t aIndex)
|
||||
PLDHashTable::AddressEntry(uint32_t aIndex) const
|
||||
{
|
||||
return reinterpret_cast<PLDHashEntryHdr*>(
|
||||
mEntryStore.Get() + aIndex * mEntrySize);
|
||||
return const_cast<PLDHashEntryHdr*>(
|
||||
reinterpret_cast<const PLDHashEntryHdr*>(
|
||||
mEntryStore.Get() + aIndex * mEntrySize));
|
||||
}
|
||||
|
||||
PLDHashTable::~PLDHashTable()
|
||||
@ -354,7 +356,7 @@ PLDHashTable::Clear()
|
||||
// these differences are worthwhile.
|
||||
template <PLDHashTable::SearchReason Reason>
|
||||
PLDHashEntryHdr* NS_FASTCALL
|
||||
PLDHashTable::SearchTable(const void* aKey, PLDHashNumber aKeyHash)
|
||||
PLDHashTable::SearchTable(const void* aKey, PLDHashNumber aKeyHash) const
|
||||
{
|
||||
MOZ_ASSERT(mEntryStore.Get());
|
||||
NS_ASSERTION(!(aKeyHash & kCollisionFlag),
|
||||
@ -421,7 +423,7 @@ PLDHashTable::SearchTable(const void* aKey, PLDHashNumber aKeyHash)
|
||||
// Avoiding the need for |aKey| means we can avoid needing a way to map entries
|
||||
// to keys, which means callers can use complex key types more easily.
|
||||
MOZ_ALWAYS_INLINE PLDHashEntryHdr*
|
||||
PLDHashTable::FindFreeEntry(PLDHashNumber aKeyHash)
|
||||
PLDHashTable::FindFreeEntry(PLDHashNumber aKeyHash) const
|
||||
{
|
||||
MOZ_ASSERT(mEntryStore.Get());
|
||||
NS_ASSERTION(!(aKeyHash & kCollisionFlag),
|
||||
@ -511,7 +513,7 @@ PLDHashTable::ChangeTable(int32_t aDeltaLog2)
|
||||
}
|
||||
|
||||
MOZ_ALWAYS_INLINE PLDHashNumber
|
||||
PLDHashTable::ComputeKeyHash(const void* aKey)
|
||||
PLDHashTable::ComputeKeyHash(const void* aKey) const
|
||||
{
|
||||
MOZ_ASSERT(mEntryStore.Get());
|
||||
|
||||
@ -528,7 +530,7 @@ PLDHashTable::ComputeKeyHash(const void* aKey)
|
||||
}
|
||||
|
||||
PLDHashEntryHdr*
|
||||
PLDHashTable::Search(const void* aKey)
|
||||
PLDHashTable::Search(const void* aKey) const
|
||||
{
|
||||
#ifdef DEBUG
|
||||
AutoReadOp op(mChecker);
|
||||
|
@ -325,7 +325,7 @@ public:
|
||||
//
|
||||
// If |entry| is non-null, |key| was found. If |entry| is null, key was not
|
||||
// found.
|
||||
PLDHashEntryHdr* Search(const void* aKey);
|
||||
PLDHashEntryHdr* Search(const void* aKey) const;
|
||||
|
||||
// To add an entry identified by |key| to table, call:
|
||||
//
|
||||
@ -507,15 +507,15 @@ private:
|
||||
|
||||
static const PLDHashNumber kCollisionFlag = 1;
|
||||
|
||||
static bool EntryIsFree(PLDHashEntryHdr* aEntry)
|
||||
static bool EntryIsFree(const PLDHashEntryHdr* aEntry)
|
||||
{
|
||||
return aEntry->mKeyHash == 0;
|
||||
}
|
||||
static bool EntryIsRemoved(PLDHashEntryHdr* aEntry)
|
||||
static bool EntryIsRemoved(const PLDHashEntryHdr* aEntry)
|
||||
{
|
||||
return aEntry->mKeyHash == 1;
|
||||
}
|
||||
static bool EntryIsLive(PLDHashEntryHdr* aEntry)
|
||||
static bool EntryIsLive(const PLDHashEntryHdr* aEntry)
|
||||
{
|
||||
return aEntry->mKeyHash >= 2;
|
||||
}
|
||||
@ -529,11 +529,13 @@ private:
|
||||
aEntry->mKeyHash = 1;
|
||||
}
|
||||
|
||||
PLDHashNumber Hash1(PLDHashNumber aHash0);
|
||||
void Hash2(PLDHashNumber aHash, uint32_t& aHash2Out, uint32_t& aSizeMaskOut);
|
||||
PLDHashNumber Hash1(PLDHashNumber aHash0) const;
|
||||
void Hash2(PLDHashNumber aHash,
|
||||
uint32_t& aHash2Out, uint32_t& aSizeMaskOut) const;
|
||||
|
||||
static bool MatchEntryKeyhash(PLDHashEntryHdr* aEntry, PLDHashNumber aHash);
|
||||
PLDHashEntryHdr* AddressEntry(uint32_t aIndex);
|
||||
static bool MatchEntryKeyhash(const PLDHashEntryHdr* aEntry,
|
||||
const PLDHashNumber aHash);
|
||||
PLDHashEntryHdr* AddressEntry(uint32_t aIndex) const;
|
||||
|
||||
// We store mHashShift rather than sizeLog2 to optimize the collision-free
|
||||
// case in SearchTable.
|
||||
@ -542,15 +544,15 @@ private:
|
||||
return ((uint32_t)1 << (kHashBits - mHashShift));
|
||||
}
|
||||
|
||||
PLDHashNumber ComputeKeyHash(const void* aKey);
|
||||
PLDHashNumber ComputeKeyHash(const void* aKey) const;
|
||||
|
||||
enum SearchReason { ForSearchOrRemove, ForAdd };
|
||||
|
||||
template <SearchReason Reason>
|
||||
PLDHashEntryHdr* NS_FASTCALL
|
||||
SearchTable(const void* aKey, PLDHashNumber aKeyHash);
|
||||
SearchTable(const void* aKey, PLDHashNumber aKeyHash) const;
|
||||
|
||||
PLDHashEntryHdr* FindFreeEntry(PLDHashNumber aKeyHash);
|
||||
PLDHashEntryHdr* FindFreeEntry(PLDHashNumber aKeyHash) const;
|
||||
|
||||
bool ChangeTable(int aDeltaLog2);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user