Skip to content

Commit 41c2aa6

Browse files
author
David Renshaw
committed
simplify write_bytes() by using memory.write_repeat()
1 parent 4cae50c commit 41c2aa6

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/terminator/intrinsic.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -405,13 +405,13 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
405405
"write_bytes" => {
406406
let u8 = self.tcx.types.u8;
407407
let ty = substs.type_at(0);
408+
let ty_align = self.type_align(ty)?;
409+
let val_byte = self.value_to_primval(arg_vals[1], u8)?.to_u128()? as u8;
408410
let size = self.type_size(ty)?.expect("write_bytes() type must be sized");
409-
let mut ptr = arg_vals[0].read_ptr(&self.memory)?;
411+
let ptr = arg_vals[0].read_ptr(&self.memory)?;
410412
let count = self.value_to_primval(arg_vals[2], usize)?.to_u64()?;
411-
for _ in 0..(count * size) {
412-
self.write_value_to_ptr(arg_vals[1], ptr, u8)?;
413-
ptr = ptr.offset(1);
414-
}
413+
self.memory.check_align(ptr, size * count, ty_align)?;
414+
self.memory.write_repeat(ptr, val_byte, size * count)?;
415415
}
416416

417417
name => return Err(EvalError::Unimplemented(format!("unimplemented intrinsic: {}", name))),

0 commit comments

Comments
 (0)