From 0ffcccdae5a8948021f9592a9dedc8ad411a7a4f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 8 Nov 2017 22:05:51 +0000 Subject: [PATCH] Add Source_Code_Location parameter Allocator_Proc (#138) --- core/_preload.odin | 20 +++++++++++--------- core/mem.odin | 2 +- 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;