mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
perf(parser): make not at EOF the hot path in Source methods (#4576)
Reverse `if` arms in 2 very commonly-called methods in `Source` so that "not at EOF" is the first branch. This will encourage compiler to treat EOF as the cold branch (which it should be, as we're almost never at EOF).
This commit is contained in:
parent
e68ed628b8
commit
56ae615b6e
1 changed files with 8 additions and 6 deletions
|
|
@ -438,11 +438,12 @@ impl<'a> Source<'a> {
|
|||
#[allow(dead_code)]
|
||||
#[inline]
|
||||
unsafe fn next_byte(&mut self) -> Option<u8> {
|
||||
if self.is_eof() {
|
||||
None
|
||||
} else {
|
||||
#[allow(clippy::if_not_else)] // Hot path first
|
||||
if !self.is_eof() {
|
||||
// SAFETY: Safe to read from `ptr` as we just checked it's not out of bounds
|
||||
Some(self.next_byte_unchecked())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -503,11 +504,12 @@ impl<'a> Source<'a> {
|
|||
/// Peek next byte of source without consuming it.
|
||||
#[inline]
|
||||
pub(super) fn peek_byte(&self) -> Option<u8> {
|
||||
if self.is_eof() {
|
||||
None
|
||||
} else {
|
||||
#[allow(clippy::if_not_else)] // Hot path first
|
||||
if !self.is_eof() {
|
||||
// SAFETY: Safe to read from `ptr` as we just checked it's not out of bounds
|
||||
Some(unsafe { self.peek_byte_unchecked() })
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue