diff options
author | David Malcolm <dmalcolm@redhat.com> | 2013-08-20 15:51:18 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2013-08-20 15:51:18 +0000 |
commit | 6cd4d135d77f9a649bf83b94915130981d60de95 (patch) | |
tree | b21ed1e25159a34a0891b23327ff60b090410491 /gcc/ggc.h | |
parent | a046136a50df8d31ec75e1dd2b1279d028431d51 (diff) | |
download | gcc-6cd4d135d77f9a649bf83b94915130981d60de95.zip gcc-6cd4d135d77f9a649bf83b94915130981d60de95.tar.gz gcc-6cd4d135d77f9a649bf83b94915130981d60de95.tar.bz2 |
Revert my last two changes, r201865 and r201864
2013-08-20 David Malcolm <dmalcolm@redhat.com>
Revert my last two changes, r201865 and r201864:
Revert r201865:
2013-08-20 David Malcolm <dmalcolm@redhat.com>
Make opt_pass and gcc::pass_manager be GC-managed, so that pass
instances can own GC refs.
* Makefile.in (GTFILES): Add pass_manager.h and tree-pass.h.
* context.c (gcc::context::gt_ggc_mx): Traverse passes_.
(gcc::context::gt_pch_nx): Likewise.
(gcc::context::gt_pch_nx): Likewise.
* ggc.h (gt_ggc_mx <T>): New.
(gt_pch_nx_with_op <T>): New.
(gt_pch_nx <T>): New.
* passes.c (opt_pass::gt_ggc_mx): New.
(opt_pass::gt_pch_nx): New.
(opt_pass::gt_pch_nx_with_op): New.
(pass_manager::gt_ggc_mx): New.
(pass_manager::gt_pch_nx): New.
(pass_manager::gt_pch_nx_with_op): New.
(pass_manager::operator new): Use
ggc_internal_cleared_alloc_stat rather than xcalloc.
* pass_manager.h (class pass_manager): Add GTY((user)) marking.
(pass_manager::gt_ggc_mx): New.
(pass_manager::gt_pch_nx): New.
(pass_manager::gt_pch_nx_with_op): New.
* tree-pass.h (class opt_pass): Add GTY((user)) marking.
(opt_pass::operator new): New.
(opt_pass::gt_ggc_mx): New.
(opt_pass::gt_pch_nx): New.
(opt_pass::gt_pch_nx_with_op): New.
Revert r201864:
2013-08-20 David Malcolm <dmalcolm@redhat.com>
* Makefile.in (GTFILES): Add context.h.
* context.c (gcc::context::operator new): New.
(gcc::context::gt_ggc_mx): New.
(gcc::context::gt_pch_nx): New.
(gcc::context::gt_pch_nx): New.
* context.h (gcc::context): Add GTY((user)) marking.
(gcc::context::operator new): New.
(gcc::context::gt_ggc_mx): New.
(gcc::context::gt_pch_nx): New.
(gcc::context::gt_pch_nx): New.
(g): Add GTY marking.
(gt_ggc_mx (gcc::context *)): New.
(gt_pch_nx (gcc::context *)): New.
(gt_pch_nx (gcc::context *ctxt, gt_pointer_operator op,
void *cookie)): New.
* gengtype.c (open_base_files) <ifiles>: Add context.h.
From-SVN: r201887
Diffstat (limited to 'gcc/ggc.h')
-rw-r--r-- | gcc/ggc.h | 46 |
1 files changed, 0 insertions, 46 deletions
@@ -276,50 +276,4 @@ ggc_alloc_cleared_gimple_statement_d_stat (size_t s MEM_STAT_DECL) ggc_internal_cleared_alloc_stat (s PASS_MEM_STAT); } -/* gengtype will autogenerate traversal functions (in gtype-desc.c) for - all GTY-marked types that it sees are referenced by a GTY marker. - - Unfortunately, it will not generate traveral functions for types that - are only referenced by GTY((user)) types. - - The following templates are a substitute, providing equivalent - traversal functions for such types. They are instantiated for - types whose objects that are traversed during GC/PCH, and are - called *every time* that an instance of type T is traversed during - GC/PCH. - - They require the presence of the following member functions - - void gt_ggc_mx (); - void gt_pch_nx (); - void gt_pch_nx_with_op (gt_pointer_operator op, void *cookie); - - within class T, which are called *once* per object - the first - time the object is visited during the traversal. */ - -template<class T> -inline void gt_ggc_mx (T *p) -{ - if (ggc_test_and_set_mark (p)) - p->gt_ggc_mx (); -} - -template<class T> -void gt_pch_nx_with_op (void *this_obj, void *p, - gt_pointer_operator op, void *cookie) -{ - if (p == this_obj) - { - T *t = static_cast<T *>(p); - t->gt_pch_nx_with_op (op, cookie); - } -} - -template<class T> -inline void gt_pch_nx (T *p) -{ - if (gt_pch_note_object (p, p, gt_pch_nx_with_op<T>)) - p->gt_pch_nx (); -} - #endif |