/* context.h - Holder for global state
- Copyright (C) 2013 Free Software Foundation, Inc.
+ Copyright (C) 2013-2014 Free Software Foundation, Inc.
This file is part of GCC.
namespace gcc {
class pass_manager;
+class dump_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 ();
- context();
+ /* The flag shows if there are symbols to be streamed for offloading. */
+ bool have_offload;
- /* 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. */
+ /* Pass-management. */
- void gt_ggc_mx ();
- void gt_pch_nx ();
- void gt_pch_nx (gt_pointer_operator op, void *cookie);
+ pass_manager *get_passes () { gcc_assert (m_passes); return m_passes; }
- /* Pass-management. */
+ /* Handling dump files. */
- pass_manager *get_passes () { gcc_assert (passes_); return passes_; }
+ dump_manager *get_dumps () {gcc_assert (m_dumps); return m_dumps; }
private:
/* Pass-management. */
- pass_manager *passes_;
+ pass_manager *m_passes;
+
+ /* Dump files. */
+ dump_manager *m_dumps;
}; // class context
/* 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 */