From 5843c5370a65a37b15b1a66330a0233e68e70c69 Mon Sep 17 00:00:00 2001 From: Luke Gorrie Date: Fri, 1 Dec 2017 14:46:21 +0000 Subject: [PATCH] lj_auditlog.c: Log prototype names (GCstr) Add the initial version of a generic GCobj dumper. --- src/lj_auditlog.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/lj_auditlog.c b/src/lj_auditlog.c index f8cbafb860..8e288caa26 100644 --- a/src/lj_auditlog.c +++ b/src/lj_auditlog.c @@ -76,6 +76,8 @@ static void ensure_log_open() { /* -- high-level LuaJIT object logging ------------------------------------ */ +static void log_GCobj(GCobj *o); + static void log_jit_State(jit_State *J) { log_mem("BCRecLog[]", J->bclog, J->nbclog * sizeof(*J->bclog)); @@ -93,9 +95,31 @@ static void log_GCtrace(GCtrace *T) static void log_GCproto(GCproto *pt) { + log_GCobj(gcref(pt->chunkname)); log_mem("GCproto", pt, pt->sizept); /* includes colocated arrays */ } +static void log_GCstr(GCstr *s) +{ + log_mem("GCstr", s, sizeof(*s) + s->len); +} + +static void log_GCobj(GCobj *o) +{ + /* Log some kinds of objects (could be fancier...) */ + switch (o->gch.gct) { + case ~LJ_TPROTO: + log_GCproto((GCproto *)o); + break; + case ~LJ_TTRACE: + log_GCtrace((GCtrace *)o); + break; + case ~LJ_TSTR: + log_GCstr((GCstr *)o); + break; + } +} + /* API functions */ /* Log a trace that has just been compiled. */