From 28428646690c759dd3a2df6a525551335ffe9e50 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 21 Jan 2021 08:17:06 -0600 Subject: [PATCH] added logging allocator; `proc` is even more optional --- bin/onyx | Bin 335800 -> 335800 bytes core/alloc.onyx | 1 + core/alloc/logging.onyx | 26 ++++++++++++++++++++++++++ onyx.exe | Bin 389120 -> 389120 bytes src/onyxparser.c | 11 ++++------- 5 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 core/alloc/logging.onyx diff --git a/bin/onyx b/bin/onyx index 273da230c2535210567e80f0cc4f32db2135427d..ddc44fd8d5c55fcc87e23c84ddb3168cccd57be6 100755 GIT binary patch delta 45977 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 diff --git a/core/alloc.onyx b/core/alloc.onyx index 9950f9a4..9d7d25b4 100644 --- a/core/alloc.onyx +++ b/core/alloc.onyx @@ -5,6 +5,7 @@ package core.alloc #load "core/alloc/heap" #load "core/alloc/ring" #load "core/alloc/pool" +#load "core/alloc/logging" TEMPORARY_ALLOCATOR_SIZE :: 1 << 12; // 4Kb diff --git a/core/alloc/logging.onyx b/core/alloc/logging.onyx new file mode 100644 index 00000000..6b49c201 --- /dev/null +++ b/core/alloc/logging.onyx @@ -0,0 +1,26 @@ +package core.alloc.log + +Allocation_Action_Strings := str.[ + " alloc", + "resize", + " free", +]; + +#private_file +logging_allocator_proc :: (data: rawptr, aa: AllocationAction, size: u32, align: u32, oldptr: rawptr) -> rawptr { + allocator := cast(^Allocator) data; + res := allocator.func(allocator.data, aa, size, align, oldptr); + + use package core { printf } + printf("%s with size %i, align %i, oldptr %p returns %p\n", + Allocation_Action_Strings[cast(u32) aa], size, align, oldptr, res); + + return res; +} + +logging_allocator :: (alloc: ^Allocator) -> Allocator { + return Allocator.{ + func = logging_allocator_proc, + data = alloc, + }; +} \ No newline at end of file diff --git a/onyx.exe b/onyx.exe index 9c28c097f0b3fc68d380018add75cd4cd31b88e0..381c62a0cef6cc1147b387a585d5b282f8805003 100644 GIT binary patch delta 2288 zcmZWq4Nw$i82-NF77s-CP!Rt?QCTGvMU9iGxDdQcz`xQ_M#j=H%b#fyQnL~0AP1If zbUtQGYZ`yYF~=d5+g zF3DSP=ZU6y{DB*See(bl_tm~Hcse%c&PkUu%3G$!9=M}(xQo+l%E@j`!y#Th$lKYAO~=Qw{*Mx3XZ6Bo_2AtmKHiM3<9}pp z9!1A?sL%NO8F)$U3^Mqi!{;#{@P~WhPj~70Na_(2-&38=KbhHD;}$Of-X|e0uYkAj zRf9k&Nkyl4`(PN%4dV@ivo1{vfLd`F?D1-h$({@?@14$mn0?wBGyO6K17E#65g^1t za(RW2eO8@T{lR7w@|rSxEKkC&pmGCyYRFz`K4f%ufZC{GauCm@&yLDV3L13j+2Xp6-a`+ z%3I>OyFMnpxu=HkZ55`42}ov9b?=3(iAN>&;uM>!u13R;+gEO5746gLBKBAN3$vE| zfqG!=^*TrDeW?k?bF-OK zV2Eeg`Ns(~nRP!NHFO>N>wAeCif8E$)KVxo=m1OXjH1Wb;?5B?kZtI6(+jMob5z<_ zw^8>g#5B4eUR#OUy&2WKInAQo6@_@!&0=WAB}F?6=uR|Sw9}`rDm|TWCUs3qnFK0? zLhd#trPX{HO$K$`R21#;3*y!;0f9bqc}Fa7f1=5So>Ds{u7ERIgO5X$du(@C1TA7G zx}xbGcC%|Zoyj`7qDQ=U3ytw)S~0E>$G)&4*K<4yIwUD!%+Wn;t_@n{;3f-}JJZ(U z6hqS_cX9S$rQtW^JcVopE0ZlvD;&G9A|x$actF z$Wq7#$h(k2$YIFU9h0pzEBug+lD(+)4zBGG3*47&-D9N?3nTzyt=eN1QqpH!kb{{drYo t^Mw^+s2WJgm9+vH1;6TULe#3Dw}h?P;XQhORr^qK7Z|nbK(&xH>0d%TgA)J% delta 2308 zcmZ8jdrVVT7(b`-T-< z+*b62SM-FR#;S|BPKEXNaX?+jgKjp!5r`1$h#>?2t*|EX?Hu1Glspzij&J4o4*IrZ z7DAk)SjRsRQoN$*eJcndyU)N@H6etGGCa2ABD?QZTMRt&Z8~_Cu~pxaEq$+)v#};r z#Kt-Rhme`qtoxw5au{QTY=!0wZK+!HJPI&p+$dFvtzxsq?lDw(%J01C3_4+PhWx}; z-L$RZ*BYFa564B(?(^RpWWKbKI%3ayb~E}&^m8>IPgyg{y zm(jfYpLANl@<*bWdQ%YlMbW(gtYME<@;+>Px6VMwog!}vR@eb0$NPi=va3HFca!S= zd0~NoVRioQGzxQCYuN>vwZbWKwSQ?+!$Zl!Qj?_-ei;)*SQx$EQ$}CJuOh)XRfS2?l+;Z!E@LdgO}1XZk(73P*KgCA@QR@uAJo1}O*!R{nGjZvb= z=6c-0L_Zcnt_;jr-YY!MED4;0Ujyf4;?An25Z*S8T+}o-1wcn&*2GSQ_Jkm*^HX?U6m4|g)goxCX-)E%eQh%hGYmWq0b&Ms1fylWYs^s`PlIm9@&>K>- zM#HrccQ%dzO-xG$e}V1{G*%2dy<987DWsQWU+l-UoxSqHT{tsY8FAFJcyAfBg>)mz&I_Bue% z1KF$&Prr#?CTXL~)~p6s5DIeF2yYK4H_>8now5{)w)+^iI*7LFOU@a+XJ}mH9rgn{ zj5xomVvn0bgfUV(8jg>U*3m?Kfjl0agWnv}*?I;LHOmSAZx-D#xBH#@im8E8M8O!RSO7z>GI+@O6l zOGc$rRQV*T@tA`0pNtEoWEnL2$FXLl_L7MH9j2B`N4IJ2iMERD2(Vkl!BbYAIeAiUa=-=6OpNsEe+*cT>g!O0e5$-yw^}{162N{gc24XZ1ep5jzK};Z4kYbQL5F5w|kn2Ymt8sqlF%3qC zv>0{6Z!bt6tT$AjQDYDlh#!dBbw^x%#b-Atype != Token_Type_Empty_Block) return 0; - b32 hit_colon = 0; + b32 is_params = (parser->curr + 1) == matching_paren; OnyxToken* tmp_token = parser->curr; - while (tmp_token < matching_paren) { - if (tmp_token->type == ':') { - hit_colon = 1; - break; - } + while (!is_params && tmp_token < matching_paren) { + if (tmp_token->type == ':') is_params = 1; tmp_token++; } - if (!hit_colon) return 0; + if (!is_params) return 0; OnyxToken* proc_token = parser->curr; AstFunction* func_node = parse_function_definition(parser, proc_token); -- 2.25.1