From ec21405821dd997d337a0f387db9b1a45b32834b Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 11 Jan 2015 14:37:06 +0000 Subject: [PATCH] py: Add (commented out) code to gc_dump_alloc_table for qstr info. --- py/gc.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/py/gc.c b/py/gc.c index f3f5937cf3..69072a4c2a 100644 --- a/py/gc.c +++ b/py/gc.c @@ -730,7 +730,26 @@ void gc_dump_alloc_table(void) { #endif else if (*ptr == (mp_uint_t)&mp_type_fun_bc) { c = 'B'; } else if (*ptr == (mp_uint_t)&mp_type_module) { c = 'M'; } - else { c = 'h'; } + else { + c = 'h'; + #if 0 + // This code prints "Q" for qstr-pool data, and "q" for qstr-str + // data. It can be useful to see how qstrs are being allocated, + // but is disabled by default because it is very slow. + for (qstr_pool_t *pool = MP_STATE_VM(last_pool); c == 'h' && pool != NULL; pool = pool->prev) { + if ((qstr_pool_t*)ptr == pool) { + c = 'Q'; + break; + } + for (const byte **q = pool->qstrs, **q_top = pool->qstrs + pool->len; q < q_top; q++) { + if ((const byte*)ptr == *q) { + c = 'q'; + break; + } + } + } + #endif + } break; } case AT_TAIL: c = 't'; break;