git-svn-id: https://spexeah.com:8443/svn/Asuro@483 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c

This commit is contained in:
kieron 2018-04-11 13:21:05 +00:00
parent 90e72588bd
commit 3bed07c80a

64
src/tracer.pas Normal file
View File

@ -0,0 +1,64 @@
unit tracer;
interface
procedure init;
procedure push_trace(t_name : pchar);
procedure pop_trace;
function get_last_trace : pchar;
implementation
uses
console, util, lists, strings;
var
t_ready : Boolean = false;
Locked : Boolean = false;
TraceStack : PLinkedListBase;
procedure lock;
begin
t_ready:= false;
end;
procedure push_trace(t_name : pchar);
var
mem : void;
begin
if not Initialized then exit;
console.writestringln('WTF?!?!?');
if not Locked then begin
Locked:= true;
mem:= LL_Insert(TraceStack, 0);
memset(uint32(mem), 0, StringSize(t_name) + 5);
memcpy(uint32(t_name), uint32(mem), StringSize(t_name) + 1);
Locked:= false;
end;
end;
procedure pop_trace;
begin
if not Initialized then exit;
if not Locked then begin
Locked:= true;
LL_Delete(TraceStack, 0);
Locked:= false;
end;
end;
function get_last_trace : pchar;
begin
if not Initialized then exit;
get_last_trace:= pchar(LL_Get(TraceStack, 0));
end;
procedure init;
begin
TraceStack:= LL_New(255);
push_trace('kmain');
Initialized:= true;
end;
end.