- for (s = 0; s < generations[g].n_steps; s++) {
- for (bd = generations[g].steps[s].blocks; bd; bd = bd->link) {
- for (q = bd->start; q < bd->free; q++) {
- if (*q == (W_)p) {
- printf("%p\n", q);
+ for (s = 0; s < generations[g].n_steps; s++) {
+ if (RtsFlags.GcFlags.generations == 1) {
+ bd = generations[g].steps[s].to_space;
+ } else {
+ bd = generations[g].steps[s].blocks;
+ }
+ for (; bd; bd = bd->link) {
+ for (q = bd->start; q < bd->free; q++) {
+ if (*q == (W_)p) {
+ if (i < arr_size) {
+ r = q;
+ while (!LOOKS_LIKE_GHC_INFO(*r)) { r--; };
+ fprintf(stderr, "%p = ", r);
+ printClosure((StgClosure *)r);
+ arr[i++] = r;
+ } else {
+ return;
+ }
+ }
+ }