Issue #2828 - Part 4: Move cache key storage to ResolvedRuleCascades

This commit is contained in:
Francis Dominic Fajardo 2025-07-19 22:29:50 +08:00 committed by roytam1
commit aab9cdf9bd
3 changed files with 32 additions and 24 deletions

View file

@ -786,7 +786,7 @@ AtomSelector_CIMatchEntry(const PLDHashEntryHdr* hdr, const void* key)
AtomSelector_InitEntry
};
RuleCascadeData::RuleCascadeData(nsIAtom* aMedium, bool aQuirksMode)
RuleCascadeData::RuleCascadeData(bool aQuirksMode)
: mRuleHash(aQuirksMode)
, mStateSelectors()
, mSelectorDocumentStates(0)
@ -803,7 +803,6 @@ RuleCascadeData::RuleCascadeData(nsIAtom* aMedium, bool aQuirksMode)
, mXULTreeRules(&RuleHash::TagTable_Ops, sizeof(RuleHashTagTableEntry))
, mKeyframesRuleTable()
, mCounterStyleRuleTable()
, mCacheKey(aMedium)
, mQuirksMode(aQuirksMode)
{
memset(mPseudoElementRuleHashes, 0, sizeof(mPseudoElementRuleHashes));
@ -1559,7 +1558,8 @@ CascadeEnumData::CascadeEnumData(nsPresContext* aPresContext,
nsTArray<css::DocumentRule*>& aDocumentRules,
nsDocumentRuleResultCacheKey& aDocumentKey,
SheetType aSheetType,
bool aMustGatherDocumentRules)
bool aMustGatherDocumentRules,
nsMediaQueryResultCacheKey& aCacheKey)
: mPresContext(aPresContext)
, mName(aName)
, mIsAnonymous(mName.IsEmpty())
@ -1575,6 +1575,7 @@ CascadeEnumData::CascadeEnumData(nsPresContext* aPresContext,
, mSheetType(aSheetType)
, mMustGatherDocumentRules(aMustGatherDocumentRules)
, mRulesByWeight(&sRulesByWeightOps, sizeof(RuleByWeightEntry), 32)
, mCacheKey(aCacheKey)
{
Initialize();
}
@ -1584,7 +1585,8 @@ CascadeEnumData::CascadeEnumData(nsPresContext* aPresContext,
nsTArray<css::DocumentRule*>& aDocumentRules,
nsDocumentRuleResultCacheKey& aDocumentKey,
SheetType aSheetType,
bool aMustGatherDocumentRules)
bool aMustGatherDocumentRules,
nsMediaQueryResultCacheKey& aCacheKey)
: mPresContext(aPresContext)
, mContainer(aContainer)
, mIsAnonymous(false)
@ -1599,6 +1601,7 @@ CascadeEnumData::CascadeEnumData(nsPresContext* aPresContext,
, mSheetType(aSheetType)
, mMustGatherDocumentRules(aMustGatherDocumentRules)
, mRulesByWeight(&sRulesByWeightOps, sizeof(RuleByWeightEntry), 32)
, mCacheKey(aCacheKey)
{
Initialize();
}
@ -1630,7 +1633,8 @@ CascadeEnumData::CreateNamedChildLayer(const nsTArray<nsString>& aPath)
mDocumentRules,
mDocumentCacheKey,
mSheetType,
mMustGatherDocumentRules);
mMustGatherDocumentRules,
mCacheKey);
mPreLayers.AppendElement(childLayer);
mLayers.Put(name, childLayer);
}
@ -1660,7 +1664,8 @@ CascadeEnumData::CreateAnonymousChildLayer()
mDocumentRules,
mDocumentCacheKey,
mSheetType,
mMustGatherDocumentRules);
mMustGatherDocumentRules,
mCacheKey);
mPreLayers.AppendElement(childLayer);
return childLayer;
}
@ -1773,8 +1778,7 @@ CascadeEnumData::Flatten()
void
CascadeEnumData::Initialize()
{
mData = new RuleCascadeData(mPresContext->Medium(),
eCompatibility_NavQuirks ==
mData = new RuleCascadeData(eCompatibility_NavQuirks ==
mPresContext->CompatibilityMode());
// Initialize our arena