projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Run sparks in batches, instead of creating a new thread for each one
[ghc-hetmet.git]
/
rts
/
Sparks.c
diff --git
a/rts/Sparks.c
b/rts/Sparks.c
index
38a3090
..
e7273f3
100644
(file)
--- a/
rts/Sparks.c
+++ b/
rts/Sparks.c
@@
-44,6
+44,7
@@
#include "RtsUtils.h"
#include "ParTicky.h"
#include "Trace.h"
#include "RtsUtils.h"
#include "ParTicky.h"
#include "Trace.h"
+#include "Prelude.h"
#include "SMP.h" // for cas
#include "SMP.h" // for cas
@@
-227,8
+228,9
@@
steal(SparkPool *deque)
}
StgClosure *
}
StgClosure *
-tryStealSpark (SparkPool *pool)
+tryStealSpark (Capability *cap)
{
{
+ SparkPool *pool = cap->sparks;
StgClosure *stolen;
do {
StgClosure *stolen;
do {
@@
-264,13
+266,13
@@
looksEmpty(SparkPool* deque)
* -------------------------------------------------------------------------- */
void
* -------------------------------------------------------------------------- */
void
-createSparkThread (Capability *cap, StgClosure *p)
+createSparkThread (Capability *cap)
{
StgTSO *tso;
{
StgTSO *tso;
- tso = createGenThread (cap, RtsFlags.GcFlags.initialStkSize, p);
+ tso = createIOThread (cap, RtsFlags.GcFlags.initialStkSize,
+ &base_GHCziConc_runSparks_closure);
appendToRunQueue(cap,tso);
appendToRunQueue(cap,tso);
- cap->sparks_converted++;
}
/* -----------------------------------------------------------------------------
}
/* -----------------------------------------------------------------------------