diff options
author | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-20 15:51:18 +0000 |
---|---|---|
committer | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-20 15:51:18 +0000 |
commit | 5d068519b66a37ab391c427d0aac13f66a9b5c4e (patch) | |
tree | b21ed1e25159a34a0891b23327ff60b090410491 /gcc/context.h | |
parent | ba32c6007b7d91bafbe0bcc4f45a4ed983b22158 (diff) | |
download | gcc-5d068519b66a37ab391c427d0aac13f66a9b5c4e.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201887 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/context.h')
-rw-r--r-- | gcc/context.h | 59 |
1 files changed, 2 insertions, 57 deletions
diff --git a/gcc/context.h b/gcc/context.h index 2211dc43ee9..66260cd279a 100644 --- a/gcc/context.h +++ b/gcc/context.h @@ -27,30 +27,11 @@ class pass_manager; /* GCC's internal state can be divided into zero or more "parallel universe" of state; an instance of this class is one such context of state. */ -class GTY((user)) context +class context { public: - /* Ensure that instances are allocated within the GC-heap. */ - void *operator new (std::size_t size); - context(); - /* Garbage-collector integration. - - Each context assumes it has full control of the GC-heap that it - is associated with. It acts as a root for that GC-heap, owning - references to within it. - - Note that context instances are allocated within their own GC - heap. - - The methods are called the *first time* that the context is reached - during a ggc/pch traversal, rather than every time. */ - - void gt_ggc_mx (); - void gt_pch_nx (); - void gt_pch_nx (gt_pointer_operator op, void *cookie); - /* Pass-management. */ pass_manager *get_passes () { gcc_assert (passes_); return passes_; } @@ -65,42 +46,6 @@ private: /* The global singleton context aka "g". (the name is chosen to be easy to type in a debugger). */ -extern GTY(()) gcc::context *g; - -/* Global hooks for ggc/pch. - - The gcc::context class is marked with GTY((user)), which leads to - gengtype creating autogenerated functions for handling context within - gtype-desc.c: - - void gt_ggc_mx_context (void *x_p); - void gt_pch_nx_context (void *x_p) - void gt_pch_p_7context (void *this_obj, - void *x_p, - gt_pointer_operator op, - void *cookie); - - Those functions call the following global functions the first time - that the context is reached during a traversal, and the following - global functions in turn simply call the corresponding methods of the - context (so that they can access private fields of the context). */ - -inline void -gt_ggc_mx (gcc::context *ctxt) -{ - ctxt->gt_ggc_mx (); -} - -inline void -gt_pch_nx (gcc::context *ctxt) -{ - ctxt->gt_pch_nx (); -} - -inline void -gt_pch_nx (gcc::context *ctxt, gt_pointer_operator op, void *cookie) -{ - ctxt->gt_pch_nx (op, cookie); -} +extern gcc::context *g; #endif /* ! GCC_CONTEXT_H */ |