diff options
author | Nathan Froyd <froydnj@codesourcery.com> | 2010-08-20 15:26:56 +0000 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2010-08-20 15:26:56 +0000 |
commit | 71bb2d869202498a24fbb0a40787c912c971d2cb (patch) | |
tree | 5cae300ef89647dadc0019c7c30a4ffb2eae6845 /gcc/ggc-common.c | |
parent | 1d4d95886e98bb684c413c5d8efe463b7c6448aa (diff) | |
download | gcc-71bb2d869202498a24fbb0a40787c912c971d2cb.tar.gz |
ggc-common.c (ggc_mark_root_tab): New function, split out from...
* ggc-common.c (ggc_mark_root_tab): New function, split out from...
(ggc_mark_roots): ...here.
From-SVN: r163407
Diffstat (limited to 'gcc/ggc-common.c')
-rw-r--r-- | gcc/ggc-common.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index cb1b64576a0..5b66bb4fa59 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -147,14 +147,25 @@ ggc_scan_cache_tab (const_ggc_cache_tab_t ctp) } } +/* Mark all the roots in the table RT. */ + +static void +ggc_mark_root_tab (const_ggc_root_tab_t rt) +{ + size_t i; + + for ( ; rt->base != NULL; rt++) + for (i = 0; i < rt->nelt; i++) + (*rt->cb) (*(void **) ((char *)rt->base + rt->stride * i)); +} + /* Iterate through all registered roots and mark each element. */ void ggc_mark_roots (void) { const struct ggc_root_tab *const *rt; - const struct ggc_root_tab *rti; - const_ggc_root_tab_t rtp; + const_ggc_root_tab_t rtp, rti; const struct ggc_cache_tab *const *ct; const_ggc_cache_tab_t ctp; size_t i; @@ -164,16 +175,10 @@ ggc_mark_roots (void) memset (rti->base, 0, rti->stride); for (rt = gt_ggc_rtab; *rt; rt++) - for (rti = *rt; rti->base != NULL; rti++) - for (i = 0; i < rti->nelt; i++) - (*rti->cb) (*(void **)((char *)rti->base + rti->stride * i)); + ggc_mark_root_tab (*rt); FOR_EACH_VEC_ELT (const_ggc_root_tab_t, extra_root_vec, i, rtp) - { - for (rti = rtp; rti->base != NULL; rti++) - for (i = 0; i < rti->nelt; i++) - (*rti->cb) (*(void **) ((char *)rti->base + rti->stride * i)); - } + ggc_mark_root_tab (rtp); if (ggc_protect_identifiers) ggc_mark_stringpool (); |