Handle size_of_val for slice types.
This commit is contained in:
parent
6d9a748858
commit
b9c37124be
4 changed files with 26 additions and 10 deletions
|
@ -580,7 +580,17 @@ impl<'a, 'b, 'mir, 'tcx> FnEvalContext<'a, 'b, 'mir, 'tcx> {
|
|||
let size = self.type_size(ty) as u64;
|
||||
self.memory.write_uint(dest, size, dest_size)?;
|
||||
} else {
|
||||
panic!("unimplemented: size_of_val::<{:?}>", ty);
|
||||
match ty.sty {
|
||||
ty::TySlice(_) | ty::TyStr => {
|
||||
let elem_ty = ty.sequence_element_type(self.tcx);
|
||||
let elem_size = self.type_size(elem_ty) as u64;
|
||||
let ptr_size = self.memory.pointer_size as isize;
|
||||
let n = self.memory.read_usize(args[0].offset(ptr_size))?;
|
||||
self.memory.write_uint(dest, n * elem_size, dest_size)?;
|
||||
}
|
||||
|
||||
_ => panic!("unimplemented: size_of_val::<{:?}>", ty),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue