*
* Generational garbage collector: evacuation functions
*
+ * Documentation on the architecture of the Garbage Collector can be
+ * found in the online commentary:
+ *
+ * http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/GC
+ *
* ---------------------------------------------------------------------------*/
#include "Rts.h"
case RET_BCO:
case RET_SMALL:
- case RET_VEC_SMALL:
case RET_BIG:
- case RET_VEC_BIG:
case RET_DYN:
case UPDATE_FRAME:
case STOP_FRAME:
if (thunk_selector_depth >= MAX_THUNK_SELECTOR_DEPTH) {
break;
}
+
+ // we don't update THUNK_SELECTORS in the compacted
+ // generation, because compaction does not remove the INDs
+ // that result, this causes confusion later.
+ if (Bdescr((P_)selectee)->flags && BF_COMPACTED) {
+ break;
+ }
+
thunk_selector_depth++;
val = eval_thunk_selector(info->layout.selector_offset,