1
Fork 0

Optimize check_keyword_case.

`to_lowercase` allocates, but `eq_ignore_ascii_case` doesn't. This path
is hot enough that this makes a small but noticeable difference in
benchmarking.
This commit is contained in:
Nicholas Nethercote 2024-11-07 16:09:39 +11:00
parent f7273e0044
commit 99d02fb40f

View file

@ -641,9 +641,10 @@ impl<'a> Parser<'a> {
return true; return true;
} }
// Do an ASCII case-insensitive match, because all keywords are ASCII.
if case == Case::Insensitive if case == Case::Insensitive
&& let Some((ident, IdentIsRaw::No)) = self.token.ident() && let Some((ident, IdentIsRaw::No)) = self.token.ident()
&& ident.as_str().to_lowercase() == kw.as_str().to_lowercase() && ident.as_str().eq_ignore_ascii_case(kw.as_str())
{ {
true true
} else { } else {