X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FScav.c;h=b8fb54bfcd38ce4d397b1e30f1ac5258793fbe2c;hb=8ef97aa30a33fb3b536252b2c0459cdf0fd5236f;hp=f61d6b7a61d8bd35c6bef2fa41e5b1e5ffe4940a;hpb=b339c8b1d0f239031802555b454062e9430ec8bb;p=ghc-hetmet.git diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c index f61d6b7..b8fb54b 100644 --- a/rts/sm/Scav.c +++ b/rts/sm/Scav.c @@ -140,7 +140,7 @@ scavenge_arg_block (StgFunInfoTable *fun_info, StgClosure **args) return p; } -STATIC_INLINE StgPtr +STATIC_INLINE GNUC_ATTR_HOT StgPtr scavenge_PAP_payload (StgClosure *fun, StgClosure **payload, StgWord size) { StgPtr p; @@ -179,7 +179,7 @@ scavenge_PAP_payload (StgClosure *fun, StgClosure **payload, StgWord size) return p; } -STATIC_INLINE StgPtr +STATIC_INLINE GNUC_ATTR_HOT StgPtr scavenge_PAP (StgPAP *pap) { evacuate(&pap->fun); @@ -230,7 +230,7 @@ scavenge_large_srt_bitmap( StgLargeSRT *large_srt ) * srt field in the info table. That's ok, because we'll * never dereference it. */ -STATIC_INLINE void +STATIC_INLINE GNUC_ATTR_HOT void scavenge_srt (StgClosure **srt, nat srt_bitmap) { nat bitmap; @@ -270,7 +270,7 @@ scavenge_srt (StgClosure **srt, nat srt_bitmap) } -STATIC_INLINE void +STATIC_INLINE GNUC_ATTR_HOT void scavenge_thunk_srt(const StgInfoTable *info) { StgThunkInfoTable *thunk_info; @@ -281,7 +281,7 @@ scavenge_thunk_srt(const StgInfoTable *info) scavenge_srt((StgClosure **)GET_SRT(thunk_info), thunk_info->i.srt_bitmap); } -STATIC_INLINE void +STATIC_INLINE GNUC_ATTR_HOT void scavenge_fun_srt(const StgInfoTable *info) { StgFunInfoTable *fun_info; @@ -304,7 +304,7 @@ scavenge_fun_srt(const StgInfoTable *info) idea. -------------------------------------------------------------------------- */ -static void +static GNUC_ATTR_HOT void scavenge_block (bdescr *bd) { StgPtr p, q; @@ -745,7 +745,7 @@ linear_scan: info = get_itbl((StgClosure *)p); q = p; - switch (((volatile StgWord *)info)[1] & 0xffff) { + switch (info->type) { case MVAR_CLEAN: case MVAR_DIRTY: