From dcfdce5bb75e28aaa5aaa2a8350c0ce77d5966e5 Mon Sep 17 00:00:00 2001 From: Yoni Feng <32789876+YoniFeng@users.noreply.github.com> Date: Sat, 4 Mar 2023 07:46:55 +0200 Subject: [PATCH] refactor(lexer): avoid copying of self in SIMD functions (#104) --- crates/oxc_parser/src/lexer/mod.rs | 6 ++++-- crates/oxc_parser/src/lexer/simd.rs | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/oxc_parser/src/lexer/mod.rs b/crates/oxc_parser/src/lexer/mod.rs index a25e39ffb..60e8d7ef0 100644 --- a/crates/oxc_parser/src/lexer/mod.rs +++ b/crates/oxc_parser/src/lexer/mod.rs @@ -483,7 +483,8 @@ impl<'a> Lexer<'a> { } let remaining = self.remaining().as_bytes(); - let state = SkipWhitespace::new(self.current.token.is_on_new_line).simd(remaining); + let mut state = SkipWhitespace::new(self.current.token.is_on_new_line); + state.simd(remaining); // SAFETY: offset is computed to the boundary self.current.chars = @@ -512,7 +513,8 @@ impl<'a> Lexer<'a> { fn skip_multi_line_comment(&mut self) -> Kind { let remaining = self.remaining().as_bytes(); let newline = self.current.token.is_on_new_line; - let state = SkipMultilineComment::new(newline, remaining).simd(); + let mut state = SkipMultilineComment::new(newline, remaining); + state.simd(); // SAFETY: offset is computed to the boundary self.current.chars = diff --git a/crates/oxc_parser/src/lexer/simd.rs b/crates/oxc_parser/src/lexer/simd.rs index 8df552cb3..41b607a77 100644 --- a/crates/oxc_parser/src/lexer/simd.rs +++ b/crates/oxc_parser/src/lexer/simd.rs @@ -38,7 +38,7 @@ impl SkipWhitespace { } } - pub fn simd(mut self, bytes: &[u8]) -> Self { + pub fn simd(&mut self, bytes: &[u8]) -> &Self { let (chunks, remainder) = bytes.as_chunks::(); for chunk in chunks { @@ -119,7 +119,7 @@ impl<'a> SkipMultilineComment<'a> { } } - pub fn simd(mut self) -> Self { + pub fn simd(&mut self) -> &Self { let (chunks, remainder) = self.remaining.as_chunks::(); for chunk in chunks {