aboutsummaryrefslogtreecommitdiff
path: root/base/runtime/heap_allocator_orca.odin
blob: be032a207209e1f838bc472404eb63d28eff8d11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#+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)
}