oxc_allocator/
allocator_api2.rs1#![expect(clippy::inline_always, clippy::undocumented_unsafe_blocks)]
4
5use std::{alloc::Layout, ptr::NonNull};
6
7use allocator_api2::alloc::{AllocError, Allocator};
8
9unsafe impl Allocator for &crate::Allocator {
12 #[inline(always)]
13 fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError> {
14 self.bump().allocate(layout)
15 }
16
17 #[inline(always)]
18 unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: Layout) {
19 unsafe {
20 self.bump().deallocate(ptr, layout);
21 }
22 }
23
24 #[inline(always)]
25 unsafe fn shrink(
26 &self,
27 ptr: NonNull<u8>,
28 old_layout: Layout,
29 new_layout: Layout,
30 ) -> Result<NonNull<[u8]>, AllocError> {
31 unsafe { self.bump().shrink(ptr, old_layout, new_layout) }
32 }
33
34 #[inline(always)]
35 unsafe fn grow(
36 &self,
37 ptr: NonNull<u8>,
38 old_layout: Layout,
39 new_layout: Layout,
40 ) -> Result<NonNull<[u8]>, AllocError> {
41 unsafe { self.bump().grow(ptr, old_layout, new_layout) }
42 }
43
44 #[inline(always)]
45 unsafe fn grow_zeroed(
46 &self,
47 ptr: NonNull<u8>,
48 old_layout: Layout,
49 new_layout: Layout,
50 ) -> Result<NonNull<[u8]>, AllocError> {
51 unsafe { self.bump().grow_zeroed(ptr, old_layout, new_layout) }
52 }
53}