зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1483062 - Rename some HashTable methods. r=luke
Specifically: - checkOverloaded -> rehashIfOverloaded - checkUnderloaded -> shrinkIfUnderloaded - checkOverRemoved -> rehashIfOverRemoved Because I've always found that the `check` prefix doesn't clearly explain that the table might be changed, And: - shouldCompressTable -> overRemoved Because that matches `overloaded` and `underloaded`. --HG-- extra : rebase_source : 56e9edd012f4a400ac366895d05ea93fb09ec6b3
This commit is contained in:
Родитель
d378adb5b7
Коммит
d12003b7e5
|
@ -1444,7 +1444,7 @@ public:
|
||||||
{
|
{
|
||||||
if (mRekeyed) {
|
if (mRekeyed) {
|
||||||
mTable.mGen++;
|
mTable.mGen++;
|
||||||
mTable.checkOverRemoved();
|
mTable.rehashIfOverRemoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mRemoved) {
|
if (mRemoved) {
|
||||||
|
@ -1870,7 +1870,7 @@ private:
|
||||||
return Rehashed;
|
return Rehashed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool shouldCompressTable()
|
bool overRemoved()
|
||||||
{
|
{
|
||||||
// Succeed if a quarter or more of all entries are removed. Note that this
|
// Succeed if a quarter or more of all entries are removed. Note that this
|
||||||
// always succeeds if capacity() == 0 (i.e. entry storage has not been
|
// always succeeds if capacity() == 0 (i.e. entry storage has not been
|
||||||
|
@ -1879,23 +1879,24 @@ private:
|
||||||
return mRemovedCount >= (capacity() >> 2);
|
return mRemovedCount >= (capacity() >> 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
RebuildStatus checkOverloaded(FailureBehavior aReportFailure = ReportFailure)
|
RebuildStatus rehashIfOverloaded(
|
||||||
|
FailureBehavior aReportFailure = ReportFailure)
|
||||||
{
|
{
|
||||||
if (!overloaded()) {
|
if (!overloaded()) {
|
||||||
return NotOverloaded;
|
return NotOverloaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t newCapacity = shouldCompressTable()
|
uint32_t newCapacity = overRemoved()
|
||||||
? rawCapacity()
|
? rawCapacity()
|
||||||
: rawCapacity() * 2;
|
: rawCapacity() * 2;
|
||||||
return changeTableSize(newCapacity, aReportFailure);
|
return changeTableSize(newCapacity, aReportFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Infallibly rehash the table if we are overloaded with removals.
|
// Infallibly rehash the table if we are overloaded with removals.
|
||||||
void checkOverRemoved()
|
void rehashIfOverRemoved()
|
||||||
{
|
{
|
||||||
if (overloaded()) {
|
if (overloaded()) {
|
||||||
if (checkOverloaded(DontReportFailure) == RehashFailed) {
|
if (rehashIfOverloaded(DontReportFailure) == RehashFailed) {
|
||||||
rehashTableInPlace();
|
rehashTableInPlace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1917,7 +1918,7 @@ private:
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkUnderloaded()
|
void shrinkIfUnderloaded()
|
||||||
{
|
{
|
||||||
if (underloaded()) {
|
if (underloaded()) {
|
||||||
(void)changeTableSize(capacity() / 2, DontReportFailure);
|
(void)changeTableSize(capacity() / 2, DontReportFailure);
|
||||||
|
@ -2008,7 +2009,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize the table down to the smallest capacity that doesn't overload the
|
// Resize the table down to the smallest capacity that doesn't overload the
|
||||||
// table. Since we call checkUnderloaded() on every remove, you only need
|
// table. Since we call shrinkIfUnderloaded() on every remove, you only need
|
||||||
// to call this after a bulk removal of items done without calling remove().
|
// to call this after a bulk removal of items done without calling remove().
|
||||||
void compact()
|
void compact()
|
||||||
{
|
{
|
||||||
|
@ -2169,7 +2170,7 @@ public:
|
||||||
aPtr.mKeyHash |= sCollisionBit;
|
aPtr.mKeyHash |= sCollisionBit;
|
||||||
} else {
|
} else {
|
||||||
// Preserve the validity of |aPtr.mEntry|.
|
// Preserve the validity of |aPtr.mEntry|.
|
||||||
RebuildStatus status = checkOverloaded();
|
RebuildStatus status = rehashIfOverloaded();
|
||||||
if (status == RehashFailed) {
|
if (status == RehashFailed) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2212,7 +2213,7 @@ public:
|
||||||
if (!EnsureHash<HashPolicy>(aLookup)) {
|
if (!EnsureHash<HashPolicy>(aLookup)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (checkOverloaded() == RehashFailed) {
|
if (rehashIfOverloaded() == RehashFailed) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
putNewInfallible(aLookup, std::forward<Args>(aArgs)...);
|
putNewInfallible(aLookup, std::forward<Args>(aArgs)...);
|
||||||
|
@ -2250,7 +2251,7 @@ public:
|
||||||
MOZ_ASSERT(aPtr.found());
|
MOZ_ASSERT(aPtr.found());
|
||||||
MOZ_ASSERT(aPtr.mGeneration == generation());
|
MOZ_ASSERT(aPtr.mGeneration == generation());
|
||||||
remove(*aPtr.mEntry);
|
remove(*aPtr.mEntry);
|
||||||
checkUnderloaded();
|
shrinkIfUnderloaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
void rekeyWithoutRehash(Ptr aPtr, const Lookup& aLookup, const Key& aKey)
|
void rekeyWithoutRehash(Ptr aPtr, const Lookup& aLookup, const Key& aKey)
|
||||||
|
@ -2268,7 +2269,7 @@ public:
|
||||||
void rekeyAndMaybeRehash(Ptr aPtr, const Lookup& aLookup, const Key& aKey)
|
void rekeyAndMaybeRehash(Ptr aPtr, const Lookup& aLookup, const Key& aKey)
|
||||||
{
|
{
|
||||||
rekeyWithoutRehash(aPtr, aLookup, aKey);
|
rekeyWithoutRehash(aPtr, aLookup, aKey);
|
||||||
checkOverRemoved();
|
rehashIfOverRemoved();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче