diff options
Diffstat (limited to 'src/test/ui/allocator/auxiliary/custom.rs')
-rw-r--r-- | src/test/ui/allocator/auxiliary/custom.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/ui/allocator/auxiliary/custom.rs b/src/test/ui/allocator/auxiliary/custom.rs new file mode 100644 index 000000000..b0ec9ab09 --- /dev/null +++ b/src/test/ui/allocator/auxiliary/custom.rs @@ -0,0 +1,21 @@ +// no-prefer-dynamic + +#![feature(allocator_api)] +#![crate_type = "rlib"] + +use std::alloc::{GlobalAlloc, System, Layout}; +use std::sync::atomic::{AtomicUsize, Ordering}; + +pub struct A(pub AtomicUsize); + +unsafe impl GlobalAlloc for A { + unsafe fn alloc(&self, layout: Layout) -> *mut u8 { + self.0.fetch_add(1, Ordering::SeqCst); + System.alloc(layout) + } + + unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { + self.0.fetch_add(1, Ordering::SeqCst); + System.dealloc(ptr, layout) + } +} |