mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-28 17:04:34 +00:00
30 lines
763 B
Odin
30 lines
763 B
Odin
#+build orca
|
|
#+private
|
|
package runtime
|
|
|
|
foreign {
|
|
@(link_name="malloc") _orca_malloc :: proc "c" (size: int) -> rawptr ---
|
|
@(link_name="calloc") _orca_calloc :: proc "c" (num, size: int) -> rawptr ---
|
|
@(link_name="free") _orca_free :: proc "c" (ptr: rawptr) ---
|
|
@(link_name="realloc") _orca_realloc :: proc "c" (ptr: rawptr, size: int) -> rawptr ---
|
|
}
|
|
|
|
_heap_alloc :: proc "contextless" (size: int, zero_memory := true) -> rawptr {
|
|
if size <= 0 {
|
|
return nil
|
|
}
|
|
if zero_memory {
|
|
return _orca_calloc(1, size)
|
|
} else {
|
|
return _orca_malloc(size)
|
|
}
|
|
}
|
|
|
|
_heap_resize :: proc "contextless" (ptr: rawptr, new_size: int) -> rawptr {
|
|
return _orca_realloc(ptr, new_size)
|
|
}
|
|
|
|
_heap_free :: proc "contextless" (ptr: rawptr) {
|
|
_orca_free(ptr)
|
|
}
|