44 #ifndef GCSTACKROOT_HPP
45 #define GCSTACKROOT_HPP 1
63 class GCStackRootBase {
72 static void visitRoots(GCNode::const_visitor* v);
79 : m_next(s_roots), m_target(node), m_protecting(false)
90 : m_next(s_roots), m_target(source.m_target), m_protecting(false)
106 GCStackRootBase& operator=(
const GCStackRootBase& source)
150 __attribute__((hot, fastcall))
156 __attribute__((hot, fastcall))
158 static void protectAll();
162 __attribute__((hot, fastcall))
164 void retarget_aux(
const GCNode* node);
170 __attribute__((cold))
172 static void seq_error();
210 template <
class T = RObject>
211 class GCStackRoot :
public GCStackRootBase {
294 return static_cast<T*
>(
const_cast<GCNode*
>(
ptr()));
299 #endif // GCSTACKROOT_HPP