X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2Fsm%2FCompact.h;fp=rts%2FGCCompact.h;h=4f1d6a27c72bd098a3af7bff03f2f5c239f9b562;hp=0fb39b3b12d647abd70310f40c2eb08371f64a8d;hb=ab0e778ccfde61aed4c22679b24d175fc6cc9bf3;hpb=2246c514eade324d70058ba3135dc0c51ee9353b diff --git a/rts/GCCompact.h b/rts/sm/Compact.h similarity index 73% rename from rts/GCCompact.h rename to rts/sm/Compact.h index 0fb39b3..4f1d6a2 100644 --- a/rts/GCCompact.h +++ b/rts/sm/Compact.h @@ -9,7 +9,37 @@ #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 @@ -19,7 +49,7 @@ mark(StgPtr p, bdescr *bd) *bitmap_word |= bit_mask; } -STATIC_INLINE void +INLINE_HEADER void unmark(StgPtr p, bdescr *bd) { nat offset_within_block = p - bd->start; // in words @@ -29,7 +59,7 @@ unmark(StgPtr p, bdescr *bd) *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 @@ -39,6 +69,6 @@ is_marked(StgPtr p, bdescr *bd) return (*bitmap_word & bit_mask); } -void compact( void (*get_roots)(evac_fn) ); +void compact(void); #endif /* GCCOMPACT_H */