summaryrefslogtreecommitdiff
path: root/rts/sm/GCUtils.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-11-29 16:42:51 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-11-29 16:42:51 +0000
commitf9d15f9fccae4706fbdf8ee4ecaef7da9953cb74 (patch)
treeef79be277cf14c25b93739c420b7b2386f5562d4 /rts/sm/GCUtils.c
parent9ca114a5840d8d00320e90c047022fa2ca1fa668 (diff)
downloadhaskell-f9d15f9fccae4706fbdf8ee4ecaef7da9953cb74.tar.gz
Store a destination step in the block descriptor
At the moment, this just saves a memory reference in the GC inner loop (worth a percent or two of GC time). Later, it will hopefully let me experiment with partial steps, and simplifying the generation/step infrastructure.
Diffstat (limited to 'rts/sm/GCUtils.c')
-rw-r--r--rts/sm/GCUtils.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/rts/sm/GCUtils.c b/rts/sm/GCUtils.c
index 70c53cb8bf..7e99e29023 100644
--- a/rts/sm/GCUtils.c
+++ b/rts/sm/GCUtils.c
@@ -269,8 +269,7 @@ alloc_todo_block (step_workspace *ws, nat size)
} else {
bd = allocBlock_sync();
}
- bd->step = ws->step;
- bd->gen_no = ws->step->gen_no;
+ initBdescr(bd, ws->step);
bd->flags = BF_EVACUATED;
bd->u.scan = bd->free = bd->start;
}