mirror of
https://github.com/vulkano-rs/vulkano.git
synced 2024-11-22 06:45:23 +00:00
Fix Miri warnings when running the suballocator tests (#2330)
This commit is contained in:
parent
7d63f8e697
commit
771aa30bbe
@ -243,6 +243,7 @@ use parking_lot::Mutex;
|
||||
use std::{
|
||||
error::Error,
|
||||
fmt::{Debug, Display, Error as FmtError, Formatter},
|
||||
mem,
|
||||
ops::BitOr,
|
||||
ptr,
|
||||
sync::Arc,
|
||||
@ -728,6 +729,24 @@ pub struct AllocationHandle(pub *mut ());
|
||||
unsafe impl Send for AllocationHandle {}
|
||||
unsafe impl Sync for AllocationHandle {}
|
||||
|
||||
impl AllocationHandle {
|
||||
/// Stores a index inside an `AllocationHandle`.
|
||||
#[allow(clippy::useless_transmute)]
|
||||
#[inline]
|
||||
pub const fn from_index(index: usize) -> Self {
|
||||
// SAFETY: `usize` and `*mut ()` have the same layout.
|
||||
AllocationHandle(unsafe { mem::transmute::<usize, *mut ()>(index) })
|
||||
}
|
||||
|
||||
/// Retrieves a previously-stored index from the `AllocationHandle`.
|
||||
#[allow(clippy::transmutes_expressible_as_ptr_casts)]
|
||||
#[inline]
|
||||
pub const fn into_index(self) -> usize {
|
||||
// SAFETY: `usize` and `*mut ()` have the same layout.
|
||||
unsafe { mem::transmute::<*mut (), usize>(self.0) }
|
||||
}
|
||||
}
|
||||
|
||||
/// Error that can be returned when creating an [allocation] using a [memory allocator].
|
||||
///
|
||||
/// [allocation]: MemoryAlloc
|
||||
|
@ -409,7 +409,7 @@ unsafe impl Suballocator for FreeListAllocator {
|
||||
offset,
|
||||
size,
|
||||
allocation_type,
|
||||
handle: AllocationHandle(id.get() as _),
|
||||
handle: AllocationHandle::from_index(id.get()),
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -431,7 +431,7 @@ unsafe impl Suballocator for FreeListAllocator {
|
||||
unsafe fn deallocate(&self, suballocation: Suballocation) {
|
||||
// SAFETY: The caller must guarantee that `suballocation` refers to a currently allocated
|
||||
// allocation of `self`.
|
||||
let node_id = SlotId::new(suballocation.handle.0 as _);
|
||||
let node_id = SlotId::new(suballocation.handle.into_index());
|
||||
|
||||
let state = unsafe { &mut *self.state.get() };
|
||||
let node = state.nodes.get_mut(node_id);
|
||||
@ -891,7 +891,7 @@ unsafe impl Suballocator for BuddyAllocator {
|
||||
offset,
|
||||
size: layout.size(),
|
||||
allocation_type,
|
||||
handle: AllocationHandle(min_order as _),
|
||||
handle: AllocationHandle::from_index(min_order),
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -908,7 +908,7 @@ unsafe impl Suballocator for BuddyAllocator {
|
||||
#[inline]
|
||||
unsafe fn deallocate(&self, suballocation: Suballocation) {
|
||||
let mut offset = suballocation.offset;
|
||||
let order = suballocation.handle.0 as usize;
|
||||
let order = suballocation.handle.into_index();
|
||||
|
||||
let min_order = order;
|
||||
let state = unsafe { &mut *self.state.get() };
|
||||
|
Loading…
Reference in New Issue
Block a user