summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-10-30 14:40:01 +0000
committerSimon Marlow <marlowsd@gmail.com>2012-10-31 11:21:30 +0000
commitab5008d4498177dd375f942618ceab46ae37671a (patch)
treed7c7a35a1bc25f7c4f963d86a8def88e2cab87bc
parent7e255c5c67cbc60d2d85ee21f03c0e868eb510c1 (diff)
downloadhaskell-ab5008d4498177dd375f942618ceab46ae37671a.tar.gz
Retainer prof: immutable arrays are not retainers, and fix the docs
-rw-r--r--docs/users_guide/profiling.xml4
-rw-r--r--rts/RetainerProfile.c5
2 files changed, 5 insertions, 4 deletions
diff --git a/docs/users_guide/profiling.xml b/docs/users_guide/profiling.xml
index 25db08045a..5589fa9f9c 100644
--- a/docs/users_guide/profiling.xml
+++ b/docs/users_guide/profiling.xml
@@ -884,8 +884,8 @@ MAIN MAIN 102 0 0.0 0.0 100.0 1
by defining what we mean by a retainer:</para>
<blockquote>
- <para>A retainer is either the system stack, or an unevaluated
- closure (thunk).</para>
+ <para>A retainer is either the system stack, an unevaluated
+ closure (thunk), or an explicitly mutable object.</para>
</blockquote>
<para>In particular, constructors are <emphasis>not</emphasis>
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index 5f9164b77b..24745eae1a 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -1013,8 +1013,6 @@ isRetainer( StgClosure *c )
case MUT_VAR_DIRTY:
case MUT_ARR_PTRS_CLEAN:
case MUT_ARR_PTRS_DIRTY:
- case MUT_ARR_PTRS_FROZEN:
- case MUT_ARR_PTRS_FROZEN0:
// thunks are retainers.
case THUNK:
@@ -1071,6 +1069,9 @@ isRetainer( StgClosure *c )
case ARR_WORDS:
// STM
case TREC_CHUNK:
+ // immutable arrays
+ case MUT_ARR_PTRS_FROZEN:
+ case MUT_ARR_PTRS_FROZEN0:
return rtsFalse;
//