aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2017-11-08 22:05:51 +0000
committergingerBill <bill@gingerbill.org>2017-11-08 22:05:51 +0000
commit0ffcccdae5a8948021f9592a9dedc8ad411a7a4f (patch)
tree9c0c3b1267ce440dc81a4eeb5aa01ad65a2ff161
parent4777bd607ee74687b5adc471fa957f37dda7775a (diff)
Add Source_Code_Location parameter Allocator_Proc (#138)
-rw-r--r--core/_preload.odin20
-rw-r--r--core/mem.odin2
2 files changed, 12 insertions, 10 deletions
diff --git a/core/_preload.odin b/core/_preload.odin
index 4a274470e..4a95b2ed7 100644
--- a/core/_preload.odin
+++ b/core/_preload.odin
@@ -141,6 +141,15 @@ __argv__: ^^u8;
// IMPORTANT NOTE(bill): Must be in this order (as the compiler relies upon it)
+
+Source_Code_Location :: struct #ordered {
+ file_path: string,
+ line, column: i64,
+ procedure: string,
+}
+
+
+
Allocator_Mode :: enum u8 {
Alloc,
Free,
@@ -151,7 +160,7 @@ Allocator_Mode :: enum u8 {
Allocator_Proc :: #type proc(allocator_data: rawptr, mode: Allocator_Mode,
size, alignment: int,
- old_memory: rawptr, old_size: int, flags: u64 = 0) -> rawptr;
+ old_memory: rawptr, old_size: int, flags: u64 = 0, location := #caller_location) -> rawptr;
Allocator :: struct #ordered {
@@ -172,13 +181,6 @@ Context :: struct #ordered {
DEFAULT_ALIGNMENT :: align_of([vector 4]f32);
-Source_Code_Location :: struct #ordered {
- file_path: string,
- line, column: i64,
- procedure: string,
-}
-
-
__INITIAL_MAP_CAP :: 16;
__Map_Key :: struct #ordered {
@@ -576,7 +578,7 @@ default_resize_align :: proc(old_memory: rawptr, old_size, new_size, alignment:
default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
size, alignment: int,
- old_memory: rawptr, old_size: int, flags: u64) -> rawptr {
+ old_memory: rawptr, old_size: int, flags: u64, location := #caller_location) -> rawptr {
using Allocator_Mode;
switch mode {
diff --git a/core/mem.odin b/core/mem.odin
index ea13e8a20..9b3330e48 100644
--- a/core/mem.odin
+++ b/core/mem.odin
@@ -135,7 +135,7 @@ import "core:fmt.odin";
arena_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
size, alignment: int,
- old_memory: rawptr, old_size: int, flags: u64) -> rawptr {
+ old_memory: rawptr, old_size: int, flags: u64, location := #caller_location) -> rawptr {
using Allocator_Mode;
arena := cast(^Arena)allocator_data;