|
@@ -10,6 +10,9 @@ when ODIN_OS == .Windows {
|
|
foreign import libc "system:c"
|
|
foreign import libc "system:c"
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+@(require)
|
|
|
|
+import "base:runtime"
|
|
|
|
+
|
|
when ODIN_OS == .Windows {
|
|
when ODIN_OS == .Windows {
|
|
RAND_MAX :: 0x7fff
|
|
RAND_MAX :: 0x7fff
|
|
|
|
|
|
@@ -145,6 +148,10 @@ aligned_alloc :: #force_inline proc "c" (alignment, size: size_t) -> rawptr {
|
|
_aligned_malloc :: proc(size, alignment: size_t) -> rawptr ---
|
|
_aligned_malloc :: proc(size, alignment: size_t) -> rawptr ---
|
|
}
|
|
}
|
|
return _aligned_malloc(size=size, alignment=alignment)
|
|
return _aligned_malloc(size=size, alignment=alignment)
|
|
|
|
+ } else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
|
|
|
|
+ context = runtime.default_context()
|
|
|
|
+ data, _ := runtime.mem_alloc_bytes(auto_cast size, auto_cast alignment)
|
|
|
|
+ return raw_data(data)
|
|
} else {
|
|
} else {
|
|
foreign libc {
|
|
foreign libc {
|
|
aligned_alloc :: proc(alignment, size: size_t) -> rawptr ---
|
|
aligned_alloc :: proc(alignment, size: size_t) -> rawptr ---
|
|
@@ -160,6 +167,9 @@ aligned_free :: #force_inline proc "c" (ptr: rawptr) {
|
|
_aligned_free :: proc(ptr: rawptr) ---
|
|
_aligned_free :: proc(ptr: rawptr) ---
|
|
}
|
|
}
|
|
_aligned_free(ptr)
|
|
_aligned_free(ptr)
|
|
|
|
+ } else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
|
|
|
|
+ context = runtime.default_context()
|
|
|
|
+ runtime.mem_free(ptr)
|
|
} else {
|
|
} else {
|
|
free(ptr)
|
|
free(ptr)
|
|
}
|
|
}
|