Skip to content

Commit

Permalink
perf(parser): use - not saturating_sub (#4561)
Browse files Browse the repository at this point in the history
Follow-on after #4304. Avoid using `saturating_sub` when plain `-` will do. `-` is cheaper - it's a single assembly instruction, whereas `saturating_sub` is usually 3 instructions.

https://godbolt.org/z/fo8Tcx6bK
  • Loading branch information
overlookmotel committed Jul 31, 2024
1 parent 7585e16 commit ab8509e
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions crates/oxc_parser/src/lexer/source.rs
Original file line number Diff line number Diff line change
Expand Up @@ -501,9 +501,11 @@ impl<'a> Source<'a> {
/// Peek next two bytes of source without consuming them.
#[inline]
pub(super) fn peek_2_bytes(&self) -> Option<[u8; 2]> {
if (self.end as usize).saturating_sub(self.ptr as usize) >= 2 {
// `end` is always >= `ptr` so `end - ptr` cannot wrap around.
// No need to use checked/saturating subtraction here.
if (self.end as usize) - (self.ptr as usize) >= 2 {
// SAFETY: The check above ensures that there are at least 2 bytes to
// read from `self.ptr` without overflowing past `self.end`.
// read from `self.ptr` without reading past `self.end`
let bytes = unsafe { self.position().read2() };
Some(bytes)
} else {
Expand Down

0 comments on commit ab8509e

Please sign in to comment.