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:
Masayuki Nakano 2018-07-13 16:56:29 +09:00
parent e8cc1dc6df
commit 78077d5b3c
2 changed files with 25 additions and 21 deletions

View File

@ -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);

View File

@ -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);