summaryrefslogtreecommitdiff
path: root/gcc/context.h
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2013-08-20 15:51:18 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2013-08-20 15:51:18 +0000
commit6cd4d135d77f9a649bf83b94915130981d60de95 (patch)
treeb21ed1e25159a34a0891b23327ff60b090410491 /gcc/context.h
parenta046136a50df8d31ec75e1dd2b1279d028431d51 (diff)
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/context.h')
-rw-r--r--gcc/context.h59
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 */