mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 16:18:52 +00:00
Make runtime.heap_alloc contextless
This commit is contained in:
@@ -97,14 +97,14 @@ heap_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
heap_alloc :: proc "contextless" (size: int, zero_memory := true) -> rawptr {
|
||||||
return _heap_alloc(size, zero_memory)
|
return _heap_alloc(size, zero_memory)
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
heap_resize :: proc "contextless" (ptr: rawptr, new_size: int) -> rawptr {
|
||||||
return _heap_resize(ptr, new_size)
|
return _heap_resize(ptr, new_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_free :: proc(ptr: rawptr) {
|
heap_free :: proc "contextless" (ptr: rawptr) {
|
||||||
_heap_free(ptr)
|
_heap_free(ptr)
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@ foreign {
|
|||||||
@(link_name="realloc") _orca_realloc :: proc "c" (ptr: rawptr, size: int) -> rawptr ---
|
@(link_name="realloc") _orca_realloc :: proc "c" (ptr: rawptr, size: int) -> rawptr ---
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
_heap_alloc :: proc "contextless" (size: int, zero_memory := true) -> rawptr {
|
||||||
if size <= 0 {
|
if size <= 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -20,10 +20,10 @@ _heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
_heap_resize :: proc "contextless" (ptr: rawptr, new_size: int) -> rawptr {
|
||||||
return _orca_realloc(ptr, new_size)
|
return _orca_realloc(ptr, new_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_free :: proc(ptr: rawptr) {
|
_heap_free :: proc "contextless" (ptr: rawptr) {
|
||||||
_orca_free(ptr)
|
_orca_free(ptr)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
//+private
|
//+private
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
_heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
_heap_alloc :: proc "contextless" (size: int, zero_memory := true) -> rawptr {
|
||||||
unimplemented("base:runtime 'heap_alloc' procedure is not supported on this platform")
|
unimplemented("base:runtime 'heap_alloc' procedure is not supported on this platform")
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
_heap_resize :: proc "contextless" (ptr: rawptr, new_size: int) -> rawptr {
|
||||||
unimplemented("base:runtime 'heap_resize' procedure is not supported on this platform")
|
unimplemented("base:runtime 'heap_resize' procedure is not supported on this platform")
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_free :: proc(ptr: rawptr) {
|
_heap_free :: proc "contextless" (ptr: rawptr) {
|
||||||
unimplemented("base:runtime 'heap_free' procedure is not supported on this platform")
|
unimplemented("base:runtime 'heap_free' procedure is not supported on this platform")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ foreign libc {
|
|||||||
@(link_name="realloc") _unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr ---
|
@(link_name="realloc") _unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr ---
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
_heap_alloc :: proc "contextless" (size: int, zero_memory := true) -> rawptr {
|
||||||
if size <= 0 {
|
if size <= 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -27,12 +27,12 @@ _heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
_heap_resize :: proc "contextless" (ptr: rawptr, new_size: int) -> rawptr {
|
||||||
// NOTE: _unix_realloc doesn't guarantee new memory will be zeroed on
|
// NOTE: _unix_realloc doesn't guarantee new memory will be zeroed on
|
||||||
// POSIX platforms. Ensure your caller takes this into account.
|
// POSIX platforms. Ensure your caller takes this into account.
|
||||||
return _unix_realloc(ptr, new_size)
|
return _unix_realloc(ptr, new_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_free :: proc(ptr: rawptr) {
|
_heap_free :: proc "contextless" (ptr: rawptr) {
|
||||||
_unix_free(ptr)
|
_unix_free(ptr)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ foreign kernel32 {
|
|||||||
HeapFree :: proc(hHeap: rawptr, dwFlags: u32, lpMem: rawptr) -> b32 ---
|
HeapFree :: proc(hHeap: rawptr, dwFlags: u32, lpMem: rawptr) -> b32 ---
|
||||||
}
|
}
|
||||||
|
|
||||||
_heap_alloc :: proc(size: int, zero_memory := true) -> rawptr {
|
_heap_alloc :: proc "contextless" (size: int, zero_memory := true) -> rawptr {
|
||||||
HEAP_ZERO_MEMORY :: 0x00000008
|
HEAP_ZERO_MEMORY :: 0x00000008
|
||||||
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY if zero_memory else 0, uint(size))
|
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY if zero_memory else 0, uint(size))
|
||||||
}
|
}
|
||||||
_heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
_heap_resize :: proc "contextless" (ptr: rawptr, new_size: int) -> rawptr {
|
||||||
if new_size == 0 {
|
if new_size == 0 {
|
||||||
_heap_free(ptr)
|
_heap_free(ptr)
|
||||||
return nil
|
return nil
|
||||||
@@ -30,7 +30,7 @@ _heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
|||||||
HEAP_ZERO_MEMORY :: 0x00000008
|
HEAP_ZERO_MEMORY :: 0x00000008
|
||||||
return HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, ptr, uint(new_size))
|
return HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, ptr, uint(new_size))
|
||||||
}
|
}
|
||||||
_heap_free :: proc(ptr: rawptr) {
|
_heap_free :: proc "contextless" (ptr: rawptr) {
|
||||||
if ptr == nil {
|
if ptr == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user