projects
/
henge
/
apc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removed set parent, crawl_set relies on internal rewind stack
[henge/apc.git]
/
src
/
ir.c
diff --git
a/src/ir.c
b/src/ir.c
index
ab97305
..
341028e
100644
(file)
--- a/
src/ir.c
+++ b/
src/ir.c
@@
-101,7
+101,7
@@
struct ir_class_t
uint8_t* name;
\r
};
\r
struct ir_set_t
\r
uint8_t* name;
\r
};
\r
struct ir_set_t
\r
-{ struct ir_set_t* nextchild, * nextsib
, * p
;
\r
+{ struct ir_set_t* nextchild, * nextsib;
\r
uint32_t ref;
\r
uint8_t* name;
\r
struct ir_framebox_t* frameboxes;
\r
uint32_t ref;
\r
uint8_t* name;
\r
struct ir_framebox_t* frameboxes;
\r
@@
-696,21
+696,19
@@
void crawl_set
( struct ir_set_t* set,
\r
int depth
\r
)
\r
( struct ir_set_t* set,
\r
int depth
\r
)
\r
-{ struct ir_set_t*
iter, * last
;
\r
+{ struct ir_set_t*
setlist[64], ** slp, * iter
;
\r
int i;
\r
pspace(depth * 12);
\r
int i;
\r
pspace(depth * 12);
\r
- last = NULL;
\r
i = depth;
\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
- if (last != NULL)
\r
- iter->p = last;
\r
- last = iter;
\r
+ *slp++ = iter;
\r
i++;
\r
}
\r
--i;
\r
putchar('\n');
\r
i++;
\r
}
\r
--i;
\r
putchar('\n');
\r
- for(iter =
last; iter != NULL; iter = iter->
p, --i)
\r
+ for(iter =
*--slp; slp >= setlist; iter = *--sl
p, --i)
\r
if (iter->nextsib != NULL)
\r
crawl_set(iter->nextsib,i);
\r
}
\r
if (iter->nextsib != NULL)
\r
crawl_set(iter->nextsib,i);
\r
}
\r