Implement futex_wait and futex_wake. by m-ou-se · Pull Request #1568 · rust-lang/miri (original) (raw)
Wait, didn't you say that this point may in fact be dangling?
I did! I (mis)interpreted your comment above ..
Then later you can use
this.read_scalar(futex_val_place.offset)
to read the actual data, andfutex_val_place.ptr.assert_ptr()
to get thePointer
. (deref_operand
does the necessary int-to-ptr conversion.)
.. as that only read_scalar()
requires the address to be readable, and that deref_operand
only does the conversion to a pointer.
Anyway, this was the reason I kept the original addr
around as a TyOp
, separate from the Pointer
, such that the FUTEX_WAIT path can still call deref_operand
(or read_scalar_at_offset
, which already does deref_operand
) on it.
What's a good way to do this? Both operations need addr
as Pointer
, but one also needs to dereference the pointer (as i32).