summaryrefslogtreecommitdiff
path: root/rts/Printer.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-08-29 12:50:08 +0100
committerSimon Marlow <marlowsd@gmail.com>2012-08-31 16:43:58 +0100
commitd9c0276afd483dcbf7f68485ee38f14434d808f3 (patch)
tree2ed5282125295a22202d082386b913f8d58a2e28 /rts/Printer.c
parent6dd55e8a056bb6a4281fc6d730df6ba54505a6e2 (diff)
downloadhaskell-d9c0276afd483dcbf7f68485ee38f14434d808f3.tar.gz
small improvements to findPtr() and the closure printer
Diffstat (limited to 'rts/Printer.c')
-rw-r--r--rts/Printer.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/rts/Printer.c b/rts/Printer.c
index 737fba4f20..156dbea37a 100644
--- a/rts/Printer.c
+++ b/rts/Printer.c
@@ -10,6 +10,7 @@
#include "Rts.h"
#include "rts/Bytecodes.h" /* for InstrPtr */
+#include "sm/Storage.h"
#include "Printer.h"
#include "RtsUtils.h"
@@ -354,6 +355,10 @@ printClosure( StgClosure *obj )
debugBelch(")\n");
break;
+ case STACK:
+ debugBelch("STACK");
+ break;
+
#if 0
/* Symptomatic of a problem elsewhere, have it fall-through & fail */
case EVACUATED:
@@ -938,13 +943,19 @@ findPtrBlocks (StgPtr p, bdescr *bd, StgPtr arr[], int arr_size, int i)
void
findPtr(P_ p, int follow)
{
- nat g;
+ nat g, n;
bdescr *bd;
const int arr_size = 1024;
StgPtr arr[arr_size];
int i = 0;
searched = 0;
+ for (n = 0; n < n_capabilities; n++) {
+ bd = nurseries[i].blocks;
+ i = findPtrBlocks(p,bd,arr,arr_size,i);
+ if (i >= arr_size) return;
+ }
+
for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
bd = generations[g].blocks;
i = findPtrBlocks(p,bd,arr,arr_size,i);