X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=includes%2FCmm.h;h=4a4d0eab770b2c83b79275cb471af1300b73a85b;hp=783b0e41bb0e7087e17aca46f7e1b0d8faed8c2d;hb=f7bcfb698d9a895a168fd29eefd7dba8fd9be849;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/includes/Cmm.h b/includes/Cmm.h index 783b0e4..4a4d0ea 100644 --- a/includes/Cmm.h +++ b/includes/Cmm.h @@ -214,7 +214,7 @@ * Note the syntax is slightly different to the C version of this macro. */ #ifdef DEBUG -#define IF_DEBUG(c,s) if (RtsFlags_DebugFlags_##c(RtsFlags)) { s; } +#define IF_DEBUG(c,s) if (RtsFlags_DebugFlags_##c(RtsFlags) != 0::I32) { s; } #else #define IF_DEBUG(c,s) /* nothing */ #endif @@ -328,6 +328,7 @@ if (bdescr_link(CurrentNursery) == NULL || CInt[alloc_blocks] >= CInt[alloc_blocks_lim]) { \ R9 = liveness; \ R10 = reentry; \ + HpAlloc = 0; \ jump stg_gc_gen_hp; \ } @@ -462,18 +463,13 @@ #define TICK_SLOW_CALL_ppppp() TICK_BUMP(SLOW_CALL_ppppp_ctr) #define TICK_SLOW_CALL_pppppp() TICK_BUMP(SLOW_CALL_pppppp_ctr) -#ifdef TICKY_TICKY -#define TICK_HISTO_BY(histo,n,i) \ - W_ __idx; \ - __idx = (n); \ - if (__idx > 8) { \ - __idx = 8; \ - } \ - CLong[histo##_hst + _idx*SIZEOF_LONG] \ - = histo##_hst + __idx*SIZEOF_LONG] + i; -#else +/* NOTE: TICK_HISTO_BY and TICK_HISTO + currently have no effect. + The old code for it didn't typecheck and I + just commented it out to get ticky to work. + - krc 1/2007 */ + #define TICK_HISTO_BY(histo,n,i) /* nothing */ -#endif #define TICK_HISTO(histo,n) TICK_HISTO_BY(histo,n,1) @@ -512,6 +508,33 @@ Misc junk -------------------------------------------------------------------------- */ -#define TICK_MILLISECS (1000/TICK_FREQUENCY) /* ms per tick */ +#define NO_TREC stg_NO_TREC_closure +#define END_TSO_QUEUE stg_END_TSO_QUEUE_closure +#define END_INVARIANT_CHECK_QUEUE stg_END_INVARIANT_CHECK_QUEUE_closure + +#define dirtyTSO(tso) \ + StgTSO_flags(tso) = StgTSO_flags(tso) | TSO_DIRTY::I32; + +#define recordMutableCap(p, gen, regs) \ + W_ __bd; \ + W_ mut_list; \ + mut_list = Capability_mut_lists(MyCapability()) + WDS(gen); \ + __bd = W_[mut_list]; \ + if (bdescr_free(__bd) >= bdescr_start(__bd) + BLOCK_SIZE) { \ + W_ __new_bd; \ + "ptr" __new_bd = foreign "C" allocBlock_lock() [regs]; \ + bdescr_link(__new_bd) = __bd; \ + __bd = __new_bd; \ + W_[mut_list] = __bd; \ + } \ + W_ free; \ + free = bdescr_free(__bd); \ + W_[free] = p; \ + bdescr_free(__bd) = free + WDS(1); + +#define recordMutable(p, regs) \ + W_ __p; \ + __p = p; \ + recordMutableCap(__p, TO_W_(bdescr_gen_no(Bdescr(__p))), regs) #endif /* CMM_H */