#ifndef GCCOMPACT_H
#define GCCOMPACT_H
-STATIC_INLINE void
+INLINE_HEADER rtsBool
+mark_stack_empty(void)
+{
+ return mark_sp == mark_stack;
+}
+
+INLINE_HEADER rtsBool
+mark_stack_full(void)
+{
+ return mark_sp >= mark_splim;
+}
+
+INLINE_HEADER void
+reset_mark_stack(void)
+{
+ mark_sp = mark_stack;
+}
+
+INLINE_HEADER void
+push_mark_stack(StgPtr p)
+{
+ *mark_sp++ = p;
+}
+
+INLINE_HEADER StgPtr
+pop_mark_stack(void)
+{
+ return *--mark_sp;
+}
+
+INLINE_HEADER void
mark(StgPtr p, bdescr *bd)
{
nat offset_within_block = p - bd->start; // in words
*bitmap_word |= bit_mask;
}
-STATIC_INLINE void
+INLINE_HEADER void
unmark(StgPtr p, bdescr *bd)
{
nat offset_within_block = p - bd->start; // in words
*bitmap_word &= ~bit_mask;
}
-STATIC_INLINE StgWord
+INLINE_HEADER StgWord
is_marked(StgPtr p, bdescr *bd)
{
nat offset_within_block = p - bd->start; // in words
return (*bitmap_word & bit_mask);
}
-void compact( void (*get_roots)(evac_fn) );
+void compact(void);
#endif /* GCCOMPACT_H */