@@ -35,25 +35,25 @@ pub fn analyze_source_file(
3535
3636cfg_match! {
3737 cfg(any(target_arch = "x86", target_arch = "x86_64")) => {
38- fn analyze_source_file_dispatch(src: &str,
39- lines: &mut Vec<RelativeBytePos>,
40- multi_byte_chars: &mut Vec<MultiByteChar>,
41- non_narrow_chars: &mut Vec<NonNarrowChar>) {
38+ fn analyze_source_file_dispatch(
39+ src: &str,
40+ lines: &mut Vec<RelativeBytePos>,
41+ multi_byte_chars: &mut Vec<MultiByteChar>,
42+ non_narrow_chars: &mut Vec<NonNarrowChar>,
43+ ) {
4244 if is_x86_feature_detected!("sse2") {
4345 unsafe {
44- analyze_source_file_sse2(src,
45- lines,
46- multi_byte_chars,
47- non_narrow_chars);
46+ analyze_source_file_sse2(src, lines, multi_byte_chars, non_narrow_chars);
4847 }
4948 } else {
50- analyze_source_file_generic(src,
51- src.len(),
52- RelativeBytePos::from_u32(0),
53- lines,
54- multi_byte_chars,
55- non_narrow_chars);
56-
49+ analyze_source_file_generic(
50+ src,
51+ src.len(),
52+ RelativeBytePos::from_u32(0),
53+ lines,
54+ multi_byte_chars,
55+ non_narrow_chars,
56+ );
5757 }
5858 }
5959
@@ -62,10 +62,12 @@ cfg_match! {
6262 /// function falls back to the generic implementation. Otherwise it uses
6363 /// SSE2 intrinsics to quickly find all newlines.
6464 #[target_feature(enable = "sse2")]
65- unsafe fn analyze_source_file_sse2(src: &str,
66- lines: &mut Vec<RelativeBytePos>,
67- multi_byte_chars: &mut Vec<MultiByteChar>,
68- non_narrow_chars: &mut Vec<NonNarrowChar>) {
65+ unsafe fn analyze_source_file_sse2(
66+ src: &str,
67+ lines: &mut Vec<RelativeBytePos>,
68+ multi_byte_chars: &mut Vec<MultiByteChar>,
69+ non_narrow_chars: &mut Vec<NonNarrowChar>,
70+ ) {
6971 #[cfg(target_arch = "x86")]
7072 use std::arch::x86::*;
7173 #[cfg(target_arch = "x86_64")]
@@ -83,7 +85,7 @@ cfg_match! {
8385 // handled it.
8486 let mut intra_chunk_offset = 0;
8587
86- for chunk_index in 0 .. chunk_count {
88+ for chunk_index in 0.. chunk_count {
8789 let ptr = src_bytes.as_ptr() as *const __m128i;
8890 // We don't know if the pointer is aligned to 16 bytes, so we
8991 // use `loadu`, which supports unaligned loading.
@@ -126,7 +128,7 @@ cfg_match! {
126128
127129 if index >= CHUNK_SIZE as u32 {
128130 // We have arrived at the end of the chunk.
129- break
131+ break;
130132 }
131133
132134 lines.push(RelativeBytePos(index) + output_offset);
@@ -137,58 +139,63 @@ cfg_match! {
137139
138140 // We are done for this chunk. All control characters were
139141 // newlines and we took care of those.
140- continue
142+ continue;
141143 } else {
142144 // Some of the control characters are not newlines,
143145 // fall through to the slow path below.
144146 }
145147 } else {
146148 // No control characters, nothing to record for this chunk
147- continue
149+ continue;
148150 }
149151 }
150152
151153 // The slow path.
152154 // There are control chars in here, fallback to generic decoding.
153155 let scan_start = chunk_index * CHUNK_SIZE + intra_chunk_offset;
154156 intra_chunk_offset = analyze_source_file_generic(
155- &src[scan_start .. ],
157+ &src[scan_start.. ],
156158 CHUNK_SIZE - intra_chunk_offset,
157159 RelativeBytePos::from_usize(scan_start),
158160 lines,
159161 multi_byte_chars,
160- non_narrow_chars
162+ non_narrow_chars,
161163 );
162164 }
163165
164166 // There might still be a tail left to analyze
165167 let tail_start = chunk_count * CHUNK_SIZE + intra_chunk_offset;
166168 if tail_start < src.len() {
167- analyze_source_file_generic(&src[tail_start ..],
168- src.len() - tail_start,
169- RelativeBytePos::from_usize(tail_start),
170- lines,
171- multi_byte_chars,
172- non_narrow_chars);
169+ analyze_source_file_generic(
170+ &src[tail_start..],
171+ src.len() - tail_start,
172+ RelativeBytePos::from_usize(tail_start),
173+ lines,
174+ multi_byte_chars,
175+ non_narrow_chars,
176+ );
173177 }
174178 }
175179 }
176180 _ => {
177181 // The target (or compiler version) does not support SSE2 ...
178- fn analyze_source_file_dispatch(src: &str,
179- lines: &mut Vec<RelativeBytePos>,
180- multi_byte_chars: &mut Vec<MultiByteChar>,
181- non_narrow_chars: &mut Vec<NonNarrowChar>) {
182- analyze_source_file_generic(src,
183- src.len(),
184- RelativeBytePos::from_u32(0),
185- lines,
186- multi_byte_chars,
187- non_narrow_chars);
182+ fn analyze_source_file_dispatch(
183+ src: &str,
184+ lines: &mut Vec<RelativeBytePos>,
185+ multi_byte_chars: &mut Vec<MultiByteChar>,
186+ non_narrow_chars: &mut Vec<NonNarrowChar>,
187+ ) {
188+ analyze_source_file_generic(
189+ src,
190+ src.len(),
191+ RelativeBytePos::from_u32(0),
192+ lines,
193+ multi_byte_chars,
194+ non_narrow_chars,
195+ );
188196 }
189197 }
190198}
191-
192199// `scan_len` determines the number of bytes in `src` to scan. Note that the
193200// function can read past `scan_len` if a multi-byte character start within the
194201// range but extends past it. The overflow is returned by the function.
0 commit comments