simplify setcrawl
authorken <ken@mihrtec.com>
Sat, 21 Jan 2017 23:54:23 +0000 (15:54 -0800)
committerken <ken@mihrtec.com>
Sat, 21 Jan 2017 23:54:23 +0000 (15:54 -0800)
src/ir.c

index cb5fafd..6355654 100644 (file)
--- a/src/ir.c
+++ b/src/ir.c
@@ -687,25 +687,26 @@ void crawl_class
     }\r
 }\r
 \r
     }\r
 }\r
 \r
+#define push_setp(setp) (*(struct ir_set_t**)stack_alloc(sizeof(struct ir_set_t*)) = setp)\r
+#define pop_setp()      (*(struct ir_set_t**)pagelist_pop(&datapages, sizeof(struct ir_set_t*)))\r
 static\r
 void crawl_set\r
 ( struct ir_set_t* set,\r
   int depth\r
 )\r
 static\r
 void crawl_set\r
 ( struct ir_set_t* set,\r
   int depth\r
 )\r
-{ struct ir_set_t* setlist[64], ** slp, * iter;\r
-  int i = depth * 12;\r
+{ struct ir_set_t* iter;\r
+  int i;\r
+  i = depth * 12;\r
   while (i--)\r
     putchar('.');\r
   i = depth;\r
   while (i--)\r
     putchar('.');\r
   i = depth;\r
-  slp = setlist;\r
   for(iter = set; iter != NULL; iter = iter->nextchild)\r
     { uprintf("[%10U]", iter->name);\r
   for(iter = set; iter != NULL; iter = iter->nextchild)\r
     { uprintf("[%10U]", iter->name);\r
-      *slp++ = iter;\r
+      push_setp(iter);\r
       i++;\r
     }\r
       i++;\r
     }\r
-  --i;\r
   putchar('\n');\r
   putchar('\n');\r
-  for(iter = *--slp; slp >= setlist; iter = *--slp, --i)\r
-    if (iter->nextsib != NULL)\r
+  while (--i >= depth)\r
+    if (((iter = pop_setp())->nextsib) != NULL)\r
       crawl_set(iter->nextsib,i);\r
 }\r
       crawl_set(iter->nextsib,i);\r
 }\r