diff options
| -rw-r--r-- | docs/users_guide/profiling.xml | 4 | ||||
| -rw-r--r-- | rts/RetainerProfile.c | 5 |
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; // |
