Merge pull request #168 from dwrensha/allocate-zeroed
implement __rust_allocate_zeroed C ABI function
This commit is contained in:
commit
5483806aee
2 changed files with 13 additions and 0 deletions
|
|
@ -493,6 +493,14 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
|
|||
self.write_primval(dest, PrimVal::Ptr(ptr), dest_ty)?;
|
||||
}
|
||||
|
||||
"__rust_allocate_zeroed" => {
|
||||
let size = self.value_to_primval(args[0], usize)?.to_u64()?;
|
||||
let align = self.value_to_primval(args[1], usize)?.to_u64()?;
|
||||
let ptr = self.memory.allocate(size, align)?;
|
||||
self.memory.write_repeat(ptr, 0, size)?;
|
||||
self.write_primval(dest, PrimVal::Ptr(ptr), dest_ty)?;
|
||||
}
|
||||
|
||||
"__rust_deallocate" => {
|
||||
let ptr = args[0].read_ptr(&self.memory)?;
|
||||
// FIXME: insert sanity check for size and align?
|
||||
|
|
|
|||
|
|
@ -13,6 +13,10 @@ fn make_vec_macro_repeat() -> Vec<u8> {
|
|||
vec![42; 5]
|
||||
}
|
||||
|
||||
fn make_vec_macro_repeat_zeroed() -> Vec<u8> {
|
||||
vec![0; 7]
|
||||
}
|
||||
|
||||
fn vec_into_iter() -> u8 {
|
||||
vec![1, 2, 3, 4]
|
||||
.into_iter()
|
||||
|
|
@ -34,4 +38,5 @@ fn main() {
|
|||
assert_eq!(make_vec().capacity(), 4);
|
||||
assert_eq!(make_vec_macro(), [1, 2]);
|
||||
assert_eq!(make_vec_macro_repeat(), [42; 5]);
|
||||
assert_eq!(make_vec_macro_repeat_zeroed(), [0; 7]);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue