- adjust align() in RawBlockTraits impl for Stack
- ensure ptr is always aligned in RawBlock::allock
#[inline]
fn align() -> usize {
- mem::align_of::<HeapCellValue>()
+ mem::align_of::<OrFrame>()
+ .max(mem::align_of::<AndFrame>())
+ .max(mem::align_of::<HeapCellValue>())
}
}
use crate::machine::mock_wam::*;
#[test]
- #[cfg_attr(miri, ignore = "blocked on stack.rs UB")]
fn stack_tests() {
let mut wam = MockWAM::new();
}
pub unsafe fn alloc(&self, size: usize) -> *mut u8 {
- if self.free_space() >= size {
+ let aligned_size = size.next_multiple_of(size);
+ if self.free_space() >= aligned_size {
let ptr = *self.ptr.get();
- *self.ptr.get() = ptr.add(size) as *mut _;
+ *self.ptr.get() = ptr.add(aligned_size) as *mut _;
ptr
} else {
ptr::null_mut()