From 4dbdadf94dbfa7eaf89e54d849ae6287de6b89c5 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Mon, 24 Feb 2020 19:03:15 +0300 Subject: [PATCH] rustc_metadata: Use binary search from standard library instead of a hand rolled one. --- src/librustc_metadata/rmeta/decoder.rs | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/librustc_metadata/rmeta/decoder.rs b/src/librustc_metadata/rmeta/decoder.rs index 01fd637b20e..3dacd2cbe95 100644 --- a/src/librustc_metadata/rmeta/decoder.rs +++ b/src/librustc_metadata/rmeta/decoder.rs @@ -408,20 +408,12 @@ impl<'a, 'tcx> SpecializedDecoder for DecodeContext<'a, 'tcx> { { last_source_file } else { - let mut a = 0; - let mut b = imported_source_files.len(); + let index = imported_source_files + .binary_search_by_key(&lo, |source_file| source_file.original_start_pos) + .unwrap_or_else(|index| index - 1); - while b - a > 1 { - let m = (a + b) / 2; - if imported_source_files[m].original_start_pos > lo { - b = m; - } else { - a = m; - } - } - - self.last_source_file_index = a; - &imported_source_files[a] + self.last_source_file_index = index; + &imported_source_files[index] } };