diff options
Diffstat (limited to 'includes/rts/storage/ClosureMacros.h')
-rw-r--r-- | includes/rts/storage/ClosureMacros.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/includes/rts/storage/ClosureMacros.h b/includes/rts/storage/ClosureMacros.h index 4ebec0f45f..e485246206 100644 --- a/includes/rts/storage/ClosureMacros.h +++ b/includes/rts/storage/ClosureMacros.h @@ -355,6 +355,10 @@ EXTERN_INLINE StgWord bco_sizeW ( StgBCO *bco ); EXTERN_INLINE StgWord bco_sizeW ( StgBCO *bco ) { return bco->size; } +EXTERN_INLINE StgWord compact_nfdata_full_sizeW ( StgCompactNFData *str ); +EXTERN_INLINE StgWord compact_nfdata_full_sizeW ( StgCompactNFData *str ) +{ return str->totalW; } + /* * TODO: Consider to switch return type from 'uint32_t' to 'StgWord' #8742 * @@ -417,6 +421,12 @@ closure_sizeW_ (const StgClosure *p, const StgInfoTable *info) return bco_sizeW((StgBCO *)p); case TREC_CHUNK: return sizeofW(StgTRecChunk); + case COMPACT_NFDATA: + // Nothing should ever call closure_sizeW() on a StgCompactNFData + // because CompactNFData is a magical object/list-of-objects that + // requires special paths pretty much everywhere in the GC + barf("closure_sizeW() called on a StgCompactNFData. " + "This should never happen."); default: return sizeW_fromITBL(info); } |