- allocBlocks_sync(4, &hd, &tl,
- ws->step->gen_no, ws->step, BF_EVACUATED);
-
- tl->link = ws->part_list;
- ws->part_list = hd->link;
- ws->n_part_blocks += 3;
-
- bd = hd;
+ // blocks in to-space get the BF_EVACUATED flag.
+
+// allocBlocks_sync(16, &hd, &tl,
+// ws->step->gen_no, ws->step, BF_EVACUATED);
+//
+// tl->link = ws->part_list;
+// ws->part_list = hd->link;
+// ws->n_part_blocks += 15;
+//
+// bd = hd;
+
+ if (size > BLOCK_SIZE_W) {
+ bd = allocGroup_sync((lnat)BLOCK_ROUND_UP(size*sizeof(W_))
+ / BLOCK_SIZE);
+ } else {
+ bd = allocBlock_sync();
+ }
+ initBdescr(bd, ws->gen, ws->gen->to);
+ bd->flags = BF_EVACUATED;
+ bd->u.scan = bd->free = bd->start;