Bug 1326457: Remove redundant check for eCSSKeyword_UNKNOWN at callsites to nsCSSProps::FindKeyword(). r=xidorn

nsCSSProps::FindKeyword() has always failed when passed eCSSKeyword_UNKNOWN,
but it didn't used to have a fast-path for this sentinel value -- it used to
walk the whole array before failing. So it used to make sense to have a
dedicated check for it at the callsites, to avoid an unnecessary array
traversal. But now, there's an early-return in FindKeyword() (or actually in
its helper, FindIndexOfKeyword()) which catches eCSSKeyword_UNKNOWN right away,
before it walks the array. So there's no benefit to having a dedicated check at
the callsites anymore.

MozReview-Commit-ID: FOX48YZMomd

--HG--
extra : rebase_source : 2309d5f3f15e3cad2e4ae5ebe14af1c6beb43ebc
This commit is contained in:
Daniel Holbert 2016-12-30 12:03:08 -08:00
parent b40b591cec
commit b6f1645a45
3 changed files with 24 additions and 35 deletions

View File

@ -13398,8 +13398,7 @@ nsGlobalWindow::SetCursorOuter(const nsAString& aCursor, ErrorResult& aError)
cursor = NS_STYLE_CURSOR_AUTO;
else {
nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(aCursor);
if (eCSSKeyword_UNKNOWN == keyword ||
!nsCSSProps::FindKeyword(keyword, nsCSSProps::kCursorKTable, cursor)) {
if (!nsCSSProps::FindKeyword(keyword, nsCSSProps::kCursorKTable, cursor)) {
return;
}
}

View File

@ -4226,8 +4226,7 @@ CSSParserImpl::ParseFontFeatureValueSet(nsCSSFontFeatureValuesRule
// which font-specific variant of font-variant-alternates
int32_t whichVariant;
nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(mToken.mIdent);
if (keyword == eCSSKeyword_UNKNOWN ||
!nsCSSProps::FindKeyword(keyword,
if (!nsCSSProps::FindKeyword(keyword,
nsCSSProps::kFontVariantAlternatesFuncsKTable,
whichVariant))
{
@ -6733,12 +6732,10 @@ CSSParserImpl::ParseColor(nsCSSValue& aValue)
}
else {
nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(tk->mIdent);
if (eCSSKeyword_UNKNOWN < keyword) { // known keyword
int32_t value;
if (nsCSSProps::FindKeyword(keyword, nsCSSProps::kColorKTable, value)) {
aValue.SetIntValue(value, eCSSUnit_EnumColor);
return CSSParseResult::Ok;
}
int32_t value;
if (nsCSSProps::FindKeyword(keyword, nsCSSProps::kColorKTable, value)) {
aValue.SetIntValue(value, eCSSUnit_EnumColor);
return CSSParseResult::Ok;
}
}
break;
@ -7556,12 +7553,10 @@ CSSParserImpl::ParseEnum(nsCSSValue& aValue,
return false;
}
nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(*ident);
if (eCSSKeyword_UNKNOWN < keyword) {
int32_t value;
if (nsCSSProps::FindKeyword(keyword, aKeywordTable, value)) {
aValue.SetIntValue(value, eCSSUnit_Enumerated);
return true;
}
int32_t value;
if (nsCSSProps::FindKeyword(keyword, aKeywordTable, value)) {
aValue.SetIntValue(value, eCSSUnit_Enumerated);
return true;
}
// Put the unknown identifier back and return
@ -7591,16 +7586,14 @@ CSSParserImpl::ParseAlignEnum(nsCSSValue& aValue,
}
keyword = nsCSSKeywords::LookupKeyword(*ident);
}
if (eCSSKeyword_UNKNOWN < keyword) {
int32_t value;
if (nsCSSProps::FindKeyword(keyword, aKeywordTable, value)) {
if (baselinePrefix == eCSSKeyword_last &&
keyword == eCSSKeyword_baseline) {
value = NS_STYLE_ALIGN_LAST_BASELINE;
}
aValue.SetIntValue(value, eCSSUnit_Enumerated);
return true;
int32_t value;
if (nsCSSProps::FindKeyword(keyword, aKeywordTable, value)) {
if (baselinePrefix == eCSSKeyword_last &&
keyword == eCSSKeyword_baseline) {
value = NS_STYLE_ALIGN_LAST_BASELINE;
}
aValue.SetIntValue(value, eCSSUnit_Enumerated);
return true;
}
// Put the unknown identifier back and return
@ -10659,8 +10652,7 @@ CSSParserImpl::IsLegacyGradientLine(const nsCSSTokenType& aType,
// This is only a gradient line if it's a box position keyword.
nsCSSKeyword kw = nsCSSKeywords::LookupKeyword(aId);
int32_t junk;
if (kw != eCSSKeyword_UNKNOWN &&
nsCSSProps::FindKeyword(kw, nsCSSProps::kImageLayerPositionKTable,
if (nsCSSProps::FindKeyword(kw, nsCSSProps::kImageLayerPositionKTable,
junk)) {
haveGradientLine = true;
}
@ -14469,12 +14461,11 @@ CSSParserImpl::ParseSingleAlternate(int32_t& aWhichFeature,
// function ==> e.g. swash(flowing) styleset(alt-g, alt-m)
nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(mToken.mIdent);
if (!(eCSSKeyword_UNKNOWN < keyword &&
nsCSSProps::FindKeyword(keyword,
(isIdent ?
nsCSSProps::kFontVariantAlternatesKTable :
nsCSSProps::kFontVariantAlternatesFuncsKTable),
aWhichFeature)))
if (!nsCSSProps::FindKeyword(keyword,
(isIdent ?
nsCSSProps::kFontVariantAlternatesKTable :
nsCSSProps::kFontVariantAlternatesFuncsKTable),
aWhichFeature))
{
// failed, pop token
UngetToken();

View File

@ -516,8 +516,7 @@ nsStyleUtil::ComputeFunctionalAlternates(const nsCSSValueList* aList,
NS_ASSERTION(key != eCSSKeyword_UNKNOWN, "unknown alternate property value");
int32_t alternate;
if (key == eCSSKeyword_UNKNOWN ||
!nsCSSProps::FindKeyword(key,
if (!nsCSSProps::FindKeyword(key,
nsCSSProps::kFontVariantAlternatesFuncsKTable,
alternate)) {
NS_NOTREACHED("keyword not a font-variant-alternates value");