From: Simon Marlow Date: Thu, 6 Nov 2008 15:58:26 +0000 (+0000) Subject: fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=a650cec6aebe5be3706f6aef603bd27a5c0ec1f0 fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid --- diff --git a/rts/Sparks.h b/rts/Sparks.h index 9696889..f24ccca 100644 --- a/rts/Sparks.h +++ b/rts/Sparks.h @@ -51,17 +51,19 @@ typedef struct SparkPool_ { } SparkPool; -/* INVARIANTS, in this order: bottom/top consistent, reasonable size, +/* INVARIANTS, in this order: reasonable size, topBound consistent, space pointer, space accessible to us */ #define ASSERT_SPARK_POOL_INVARIANTS(p) \ - ASSERT((p)->bottom >= (p)->top); \ ASSERT((p)->size > 0); \ - ASSERT((p)->size > (p)->bottom - (p)->top); \ ASSERT((p)->topBound <= (p)->top); \ ASSERT((p)->elements != NULL); \ ASSERT(*((p)->elements) || 1); \ ASSERT(*((p)->elements - 1 + ((p)->size)) || 1); +// No: it is possible that top > bottom when using reclaimSpark() +// ASSERT((p)->bottom >= (p)->top); +// ASSERT((p)->size > (p)->bottom - (p)->top); + // Initialisation void initSparkPools (void);