mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
mark FIXMES for all the places found that are probably offset_from
This commit is contained in:
parent
5f720fa55e
commit
28576e9c51
@ -217,6 +217,8 @@ impl<T> TypedArena<T> {
|
|||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn can_allocate(&self, additional: usize) -> bool {
|
fn can_allocate(&self, additional: usize) -> bool {
|
||||||
|
// FIXME: this should *likely* use `offset_from`, but more
|
||||||
|
// investigation is needed (including running tests in miri).
|
||||||
let available_bytes = self.end.get().addr() - self.ptr.get().addr();
|
let available_bytes = self.end.get().addr() - self.ptr.get().addr();
|
||||||
let additional_bytes = additional.checked_mul(mem::size_of::<T>()).unwrap();
|
let additional_bytes = additional.checked_mul(mem::size_of::<T>()).unwrap();
|
||||||
available_bytes >= additional_bytes
|
available_bytes >= additional_bytes
|
||||||
@ -263,6 +265,8 @@ impl<T> TypedArena<T> {
|
|||||||
// If a type is `!needs_drop`, we don't need to keep track of how many elements
|
// If a type is `!needs_drop`, we don't need to keep track of how many elements
|
||||||
// the chunk stores - the field will be ignored anyway.
|
// the chunk stores - the field will be ignored anyway.
|
||||||
if mem::needs_drop::<T>() {
|
if mem::needs_drop::<T>() {
|
||||||
|
// FIXME: this should *likely* use `offset_from`, but more
|
||||||
|
// investigation is needed (including running tests in miri).
|
||||||
let used_bytes = self.ptr.get().addr() - last_chunk.start().addr();
|
let used_bytes = self.ptr.get().addr() - last_chunk.start().addr();
|
||||||
last_chunk.entries = used_bytes / mem::size_of::<T>();
|
last_chunk.entries = used_bytes / mem::size_of::<T>();
|
||||||
}
|
}
|
||||||
@ -300,6 +304,8 @@ impl<T> TypedArena<T> {
|
|||||||
// Recall that `end` was incremented for each allocated value.
|
// Recall that `end` was incremented for each allocated value.
|
||||||
end - start
|
end - start
|
||||||
} else {
|
} else {
|
||||||
|
// FIXME: this should *likely* use `offset_from`, but more
|
||||||
|
// investigation is needed (including running tests in miri).
|
||||||
(end - start) / mem::size_of::<T>()
|
(end - start) / mem::size_of::<T>()
|
||||||
};
|
};
|
||||||
// Pass that to the `destroy` method.
|
// Pass that to the `destroy` method.
|
||||||
|
@ -269,6 +269,8 @@ where
|
|||||||
// Returns the number of elements between pointers `l` (inclusive) and `r` (exclusive).
|
// Returns the number of elements between pointers `l` (inclusive) and `r` (exclusive).
|
||||||
fn width<T>(l: *mut T, r: *mut T) -> usize {
|
fn width<T>(l: *mut T, r: *mut T) -> usize {
|
||||||
assert!(mem::size_of::<T>() > 0);
|
assert!(mem::size_of::<T>() > 0);
|
||||||
|
// FIXME: this should *likely* use `offset_from`, but more
|
||||||
|
// investigation is needed (including running tests in miri).
|
||||||
(r.addr() - l.addr()) / mem::size_of::<T>()
|
(r.addr() - l.addr()) / mem::size_of::<T>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ pub fn memrchr(needle: u8, haystack: &[u8]) -> Option<usize> {
|
|||||||
haystack.len(),
|
haystack.len(),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
// FIXME: this should *likely* use `offset_from`, but more
|
||||||
|
// investigation is needed (including running tests in miri).
|
||||||
if p.is_null() { None } else { Some(p.addr() - haystack.as_ptr().addr()) }
|
if p.is_null() { None } else { Some(p.addr() - haystack.as_ptr().addr()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user