Skip to content

Commit f595e60

Browse files
committed
Auto merge of rust-lang#16290 - Veykril:chalk, r=Veykril
internal: Reduce vec cloning in mir lowering/eval
2 parents e9ae0b7 + 5ac0c14 commit f595e60

File tree

12 files changed

+309
-257
lines changed

12 files changed

+309
-257
lines changed

crates/hir-ty/src/consteval.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,15 @@ pub fn intern_const_ref(
142142
LiteralConstRef::Int(i) => {
143143
// FIXME: We should handle failure of layout better.
144144
let size = layout.map(|it| it.size.bytes_usize()).unwrap_or(16);
145-
ConstScalar::Bytes(i.to_le_bytes()[0..size].to_vec(), MemoryMap::default())
145+
ConstScalar::Bytes(i.to_le_bytes()[0..size].into(), MemoryMap::default())
146146
}
147147
LiteralConstRef::UInt(i) => {
148148
let size = layout.map(|it| it.size.bytes_usize()).unwrap_or(16);
149-
ConstScalar::Bytes(i.to_le_bytes()[0..size].to_vec(), MemoryMap::default())
149+
ConstScalar::Bytes(i.to_le_bytes()[0..size].into(), MemoryMap::default())
150150
}
151-
LiteralConstRef::Bool(b) => ConstScalar::Bytes(vec![*b as u8], MemoryMap::default()),
151+
LiteralConstRef::Bool(b) => ConstScalar::Bytes(Box::new([*b as u8]), MemoryMap::default()),
152152
LiteralConstRef::Char(c) => {
153-
ConstScalar::Bytes((*c as u32).to_le_bytes().to_vec(), MemoryMap::default())
153+
ConstScalar::Bytes((*c as u32).to_le_bytes().into(), MemoryMap::default())
154154
}
155155
LiteralConstRef::Unknown => ConstScalar::Unknown,
156156
};

crates/hir-ty/src/display.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ fn render_const_scalar(
515515
TyKind::Dyn(_) => {
516516
let addr = usize::from_le_bytes(b[0..b.len() / 2].try_into().unwrap());
517517
let ty_id = usize::from_le_bytes(b[b.len() / 2..].try_into().unwrap());
518-
let Ok(t) = memory_map.vtable.ty(ty_id) else {
518+
let Ok(t) = memory_map.vtable_ty(ty_id) else {
519519
return f.write_str("<ty-missing-in-vtable-map>");
520520
};
521521
let Ok(layout) = f.db.layout_of_ty(t.clone(), trait_env) else {

crates/hir-ty/src/infer/closure.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Inference of closure parameter types based on the closure's expected type.
22
3-
use std::{cmp, collections::HashMap, convert::Infallible, mem};
3+
use std::{cmp, convert::Infallible, mem};
44

55
use chalk_ir::{
66
cast::Cast,
@@ -778,7 +778,7 @@ impl InferenceContext<'_> {
778778

779779
fn minimize_captures(&mut self) {
780780
self.current_captures.sort_by_key(|it| it.place.projections.len());
781-
let mut hash_map = HashMap::<HirPlace, usize>::new();
781+
let mut hash_map = FxHashMap::<HirPlace, usize>::default();
782782
let result = mem::take(&mut self.current_captures);
783783
for item in result {
784784
let mut lookup_place = HirPlace { local: item.place.local, projections: vec![] };

0 commit comments

Comments
 (0)