Implement atomic_{load,store}.

This commit is contained in:
Scott Olson 2016-10-14 03:49:02 -06:00
parent 5f65ee2713
commit 8143a05812

View File

@ -75,6 +75,20 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
}
}
"atomic_load" |
"volatile_load" => {
let ty = substs.type_at(0);
let ptr = args_ptrs[0].read_ptr(&self.memory)?;
self.write_value(Value::ByRef(ptr), dest, ty)?;
}
"atomic_store" |
"volatile_store" => {
let ty = substs.type_at(0);
let dest = args_ptrs[0].read_ptr(&self.memory)?;
self.write_value_to_ptr(args_ptrs[1], dest, ty)?;
}
"breakpoint" => unimplemented!(), // halt miri
"copy" |
@ -246,18 +260,6 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
self.memory.mark_definedness(dest, size, false)?;
}
"volatile_load" => {
let ty = substs.type_at(0);
let ptr = args_ptrs[0].read_ptr(&self.memory)?;
self.write_value(Value::ByRef(ptr), dest, ty)?;
}
"volatile_store" => {
let ty = substs.type_at(0);
let dest = args_ptrs[0].read_ptr(&self.memory)?;
self.write_value_to_ptr(args_ptrs[1], dest, ty)?;
}
name => return Err(EvalError::Unimplemented(format!("unimplemented intrinsic: {}", name))),
}