Bug 708901 - Migrate to nsTHashSet in startupcache. r=dthayer

Depends on D109325

Differential Revision: https://phabricator.services.mozilla.com/D109326
This commit is contained in:
Simon Giesecke 2021-03-23 10:36:39 +00:00
Родитель 022093b8c4
Коммит 146858a245
2 изменённых файлов: 7 добавлений и 8 удалений

Просмотреть файл

@ -858,16 +858,14 @@ bool StartupCacheDebugOutputStream::CheckReferences(nsISupports* aObject) {
NS_ENSURE_SUCCESS(rv, false);
if (flags & nsIClassInfo::SINGLETON) return true;
nsISupportsHashKey* key = mObjectMap->GetEntry(aObject);
if (key) {
bool inserted = mObjectMap->EnsureInserted(aObject);
if (!inserted) {
NS_ERROR(
"non-singleton aObject is referenced multiple times in this"
"serialization, we don't support that.");
return false;
}
mObjectMap->PutEntry(aObject);
return true;
return inserted;
}
// nsIObjectOutputStream implementation

Просмотреть файл

@ -11,6 +11,7 @@
#include "nsClassHashtable.h"
#include "nsComponentManagerUtils.h"
#include "nsTArray.h"
#include "nsTHashSet.h"
#include "nsTStringHasher.h" // mozilla::DefaultHasher<nsCString>
#include "nsZipArchive.h"
#include "nsITimer.h"
@ -235,7 +236,7 @@ class StartupCache : public nsIMemoryReporter {
PRThread* mPrefetchThread;
UniquePtr<Compression::LZ4FrameDecompressionContext> mDecompressionContext;
#ifdef DEBUG
nsTHashtable<nsISupportsHashKey> mWriteObjectMap;
nsTHashSet<nsCOMPtr<nsISupports>> mWriteObjectMap;
#endif
};
@ -250,7 +251,7 @@ class StartupCacheDebugOutputStream final : public nsIObjectOutputStream {
NS_DECL_NSIOBJECTOUTPUTSTREAM
StartupCacheDebugOutputStream(nsIObjectOutputStream* binaryStream,
nsTHashtable<nsISupportsHashKey>* objectMap)
nsTHashSet<nsCOMPtr<nsISupports>>* objectMap)
: mBinaryStream(binaryStream), mObjectMap(objectMap) {}
NS_FORWARD_SAFE_NSIBINARYOUTPUTSTREAM(mBinaryStream)
@ -259,7 +260,7 @@ class StartupCacheDebugOutputStream final : public nsIObjectOutputStream {
bool CheckReferences(nsISupports* aObject);
nsCOMPtr<nsIObjectOutputStream> mBinaryStream;
nsTHashtable<nsISupportsHashKey>* mObjectMap;
nsTHashSet<nsCOMPtr<nsISupports>>* mObjectMap;
};
#endif // DEBUG