From 2d355679ac2a1e225f158ab8064566174e9e1402 Mon Sep 17 00:00:00 2001 From: ken Date: Sat, 21 Jan 2017 15:54:23 -0800 Subject: [PATCH] simplify setcrawl --- src/ir.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ir.c b/src/ir.c index cb5fafd..6355654 100644 --- a/src/ir.c +++ b/src/ir.c @@ -687,25 +687,26 @@ void crawl_class } } +#define push_setp(setp) (*(struct ir_set_t**)stack_alloc(sizeof(struct ir_set_t*)) = setp) +#define pop_setp() (*(struct ir_set_t**)pagelist_pop(&datapages, sizeof(struct ir_set_t*))) static void crawl_set ( struct ir_set_t* set, int depth ) -{ struct ir_set_t* setlist[64], ** slp, * iter; - int i = depth * 12; +{ struct ir_set_t* iter; + int i; + i = depth * 12; while (i--) putchar('.'); i = depth; - slp = setlist; for(iter = set; iter != NULL; iter = iter->nextchild) { uprintf("[%10U]", iter->name); - *slp++ = iter; + push_setp(iter); i++; } - --i; putchar('\n'); - for(iter = *--slp; slp >= setlist; iter = *--slp, --i) - if (iter->nextsib != NULL) + while (--i >= depth) + if (((iter = pop_setp())->nextsib) != NULL) crawl_set(iter->nextsib,i); } -- 2.18.0