[commit: ghc] master: Another attempt to fix the conditions for slop-zeroing (45eaeee)

git at git.haskell.org git at git.haskell.org
Fri Oct 25 08:25:50 UTC 2013


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/45eaeee3d7f5ef2efbc72769ebe6b988a867692a/ghc

>---------------------------------------------------------------

commit 45eaeee3d7f5ef2efbc72769ebe6b988a867692a
Author: Simon Marlow <marlowsd at gmail.com>
Date:   Fri Oct 25 08:18:08 2013 +0100

    Another attempt to fix the conditions for slop-zeroing
    
    Also refactor the #defines to hopefully make it clearer what's going
    on.


>---------------------------------------------------------------

45eaeee3d7f5ef2efbc72769ebe6b988a867692a
 includes/rts/storage/ClosureMacros.h |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/includes/rts/storage/ClosureMacros.h b/includes/rts/storage/ClosureMacros.h
index c4634f1..8933e85 100644
--- a/includes/rts/storage/ClosureMacros.h
+++ b/includes/rts/storage/ClosureMacros.h
@@ -485,7 +485,10 @@ INLINE_HEADER StgWord8 *mutArrPtrsCard (StgMutArrPtrs *a, W_ n)
 
    -------------------------------------------------------------------------- */
 
-#if defined(PROFILING) || (!defined(THREADED_RTS) && defined(DEBUG))
+#define ZERO_SLOP_FOR_LDV_PROF     (defined(PROFILING))
+#define ZERO_SLOP_FOR_SANITY_CHECK (defined(DEBUG) && !defined(THREADED_RTS))
+
+#if ZERO_SLOP_FOR_LDV_PROF || ZERO_SLOP_FOR_SANITY_CHECK
 #define OVERWRITING_CLOSURE(c) overwritingClosure(c)
 #else
 #define OVERWRITING_CLOSURE(c) /* nothing */
@@ -500,8 +503,8 @@ EXTERN_INLINE void overwritingClosure (StgClosure *p)
 {
     nat size, i;
 
-#if defined(PROFILING) && !defined(DEBUG)
-    // see Note [zeroing slop]
+#if ZERO_SLOP_FOR_LDV_PROF && !ZERO_SLOP_FOR_SANITY_CHECK
+    // see Note [zeroing slop], also #8402
     if (era <= 0) return;
 #endif
 



More information about the ghc-commits mailing list