Bug 1352874 - Improve nsHtml5AtomTable performance, r=hsivonen
This commit is contained in:
@@ -24,6 +24,7 @@ nsHtml5AtomEntry::~nsHtml5AtomEntry()
|
||||
}
|
||||
|
||||
nsHtml5AtomTable::nsHtml5AtomTable()
|
||||
: mRecentlyUsedParserAtoms{}
|
||||
{
|
||||
#ifdef DEBUG
|
||||
NS_GetMainThread(getter_AddRefs(mPermittedLookupThread));
|
||||
@@ -44,13 +45,23 @@ nsHtml5AtomTable::GetAtom(const nsAString& aKey)
|
||||
NS_ASSERTION(mPermittedLookupThread == currentThread, "Wrong thread!");
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32_t index = mozilla::HashString(aKey) % RECENTLY_USED_PARSER_ATOMS_SIZE;
|
||||
nsIAtom* cachedAtom = mRecentlyUsedParserAtoms[index];
|
||||
if (cachedAtom && cachedAtom->Equals(aKey)) {
|
||||
return cachedAtom;
|
||||
}
|
||||
|
||||
nsIAtom* atom = NS_GetStaticAtom(aKey);
|
||||
if (atom) {
|
||||
mRecentlyUsedParserAtoms[index] = atom;
|
||||
return atom;
|
||||
}
|
||||
nsHtml5AtomEntry* entry = mTable.PutEntry(aKey);
|
||||
if (!entry) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
mRecentlyUsedParserAtoms[index] = entry->GetAtom();
|
||||
return entry->GetAtom();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user