Avoid adjusting file positions twice.
`imported_source_files` adjusts lots of file positions, and then calls `new_imported_source_file`, which then adjust them all again. This commit combines the two adjustments into one, for a small perf win.
This commit is contained in:
parent
3e810c64d0
commit
2b91c40c19
2 changed files with 18 additions and 29 deletions
|
@ -1639,10 +1639,10 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
|
|||
src_hash,
|
||||
start_pos,
|
||||
end_pos,
|
||||
mut lines,
|
||||
mut multibyte_chars,
|
||||
mut non_narrow_chars,
|
||||
mut normalized_pos,
|
||||
lines,
|
||||
multibyte_chars,
|
||||
non_narrow_chars,
|
||||
normalized_pos,
|
||||
name_hash,
|
||||
..
|
||||
} = source_file_to_import;
|
||||
|
@ -1679,24 +1679,6 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
|
|||
|
||||
let source_length = (end_pos - start_pos).to_usize();
|
||||
|
||||
// Translate line-start positions and multibyte character
|
||||
// position into frame of reference local to file.
|
||||
// `SourceMap::new_imported_source_file()` will then translate those
|
||||
// coordinates to their new global frame of reference when the
|
||||
// offset of the SourceFile is known.
|
||||
for pos in &mut lines {
|
||||
*pos = *pos - start_pos;
|
||||
}
|
||||
for mbc in &mut multibyte_chars {
|
||||
mbc.pos = mbc.pos - start_pos;
|
||||
}
|
||||
for swc in &mut non_narrow_chars {
|
||||
*swc = *swc - start_pos;
|
||||
}
|
||||
for np in &mut normalized_pos {
|
||||
np.pos = np.pos - start_pos;
|
||||
}
|
||||
|
||||
let local_version = sess.source_map().new_imported_source_file(
|
||||
name,
|
||||
src_hash,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue