projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4a2a508
)
pruneSparkQueue: handle CAFs
author
Simon Marlow
<marlowsd@gmail.com>
Fri, 18 Mar 2011 14:21:22 +0000
(14:21 +0000)
committer
Simon Marlow
<marlowsd@gmail.com>
Fri, 18 Mar 2011 14:21:22 +0000
(14:21 +0000)
rts/Sparks.c
patch
|
blob
|
history
diff --git
a/rts/Sparks.c
b/rts/Sparks.c
index
ad08f3b
..
a826190
100644
(file)
--- a/
rts/Sparks.c
+++ b/
rts/Sparks.c
@@
-219,19
+219,34
@@
pruneSparkQueue (Capability *cap)
pruned_sparks++; // discard spark
cap->sparks_fizzled++;
}
pruned_sparks++; // discard spark
cap->sparks_fizzled++;
}
- } else if (HEAP_ALLOCED(spark) &&
- (Bdescr((P_)spark)->flags & BF_EVACUATED)) {
- if (closure_SHOULD_SPARK(spark)) {
- elements[botInd] = spark; // keep entry (new address)
- botInd++;
- n++;
+ } else if (HEAP_ALLOCED(spark)) {
+ if ((Bdescr((P_)spark)->flags & BF_EVACUATED)) {
+ if (closure_SHOULD_SPARK(spark)) {
+ elements[botInd] = spark; // keep entry (new address)
+ botInd++;
+ n++;
+ } else {
+ pruned_sparks++; // discard spark
+ cap->sparks_fizzled++;
+ }
} else {
pruned_sparks++; // discard spark
} else {
pruned_sparks++; // discard spark
- cap->sparks_fizzled++;
+ cap->sparks_gcd++;
}
} else {
}
} else {
- pruned_sparks++; // discard spark
- cap->sparks_gcd++;
+ if (INFO_PTR_TO_STRUCT(info)->type == THUNK_STATIC) {
+ if (*THUNK_STATIC_LINK(spark) != NULL) {
+ elements[botInd] = spark; // keep entry (new address)
+ botInd++;
+ n++;
+ } else {
+ pruned_sparks++; // discard spark
+ cap->sparks_gcd++;
+ }
+ } else {
+ pruned_sparks++; // discard spark
+ cap->sparks_fizzled++;
+ }
}
}
}
}