Initial project import

This commit is contained in:
Agila Forge Importer committed 2026-07-13 15:20:32 +00:00
commit 23f2d29e32
11957 files changed
+1754577

No files matched your search

+62
View File
@@ -0,0 +1,62 @@
@[has_globals]
module dlmalloc
__global global = new(get_system_allocator())
// malloc allocates `size` bytes.
// It returns a null pointer if allocation fails.
// It returns a valid pointer otherwise.
@[unsafe]
pub fn malloc(size usize) voidptr {
unsafe {
return global.malloc(size)
}
}
// free deallocates a `ptr`.
@[unsafe]
pub fn free(ptr voidptr) {
unsafe {
global.free_(ptr)
}
}
// Same as `malloc`, except if the allocation succeeds it's guaranteed to
// point to `size` bytes of zeros.
@[unsafe]
pub fn calloc(size usize) voidptr {
unsafe {
return global.calloc(size)
}
}
// realloc reallocates `ptr`, a previous allocation with `old_size` and
// to have `new_size`.
//
//
// Returns a null pointer if the memory couldn't be reallocated, but `ptr`
// is still valid. Returns a valid pointer and frees `ptr` if the request
// is satisfied.
@[unsafe]
pub fn realloc(ptr voidptr, oldsize usize, newsize usize) voidptr {
unsafe {
_ := oldsize
return global.realloc(ptr, newsize)
}
}
// memalign allocates `size` bytes with `align` align.
//
//
// Returns a null pointer if allocation fails. Returns a valid pointer otherwise.
@[unsafe]
pub fn memalign(size usize, align usize) voidptr {
unsafe {
if align <= malloc_alignment() {
return global.malloc(size)
} else {
return global.memalign(align, size)
}
}
}