projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Wrap gcc on Windows, to provide the -B flags
[ghc-hetmet.git]
/
rts
/
sm
/
Evac.c
diff --git
a/rts/sm/Evac.c
b/rts/sm/Evac.c
index
5935f90
..
379fbba
100644
(file)
--- a/
rts/sm/Evac.c
+++ b/
rts/sm/Evac.c
@@
-11,17
+11,19
@@
*
* ---------------------------------------------------------------------------*/
*
* ---------------------------------------------------------------------------*/
+#include "PosixSource.h"
#include "Rts.h"
#include "Rts.h"
-#include "Storage.h"
-#include "MBlock.h"
+
#include "Evac.h"
#include "Evac.h"
+#include "Storage.h"
#include "GC.h"
#include "GCThread.h"
#include "GCUtils.h"
#include "Compact.h"
#include "GC.h"
#include "GCThread.h"
#include "GCUtils.h"
#include "Compact.h"
+#include "MarkStack.h"
#include "Prelude.h"
#include "Prelude.h"
-#include "LdvProfile.h"
#include "Trace.h"
#include "Trace.h"
+#include "LdvProfile.h"
#if defined(PROF_SPIN) && defined(THREADED_RTS) && defined(PARALLEL_GC)
StgWord64 whitehole_spin = 0;
#if defined(PROF_SPIN) && defined(THREADED_RTS) && defined(PARALLEL_GC)
StgWord64 whitehole_spin = 0;
@@
-96,8
+98,6
@@
copy_tag(StgClosure **p, const StgInfoTable *info,
to = alloc_for_copy(size,stp);
to = alloc_for_copy(size,stp);
- TICK_GC_WORDS_COPIED(size);
-
from = (StgPtr)src;
to[0] = (W_)info;
for (i = 1; i < size; i++) { // unroll for small i
from = (StgPtr)src;
to[0] = (W_)info;
for (i = 1; i < size; i++) { // unroll for small i
@@
-142,8
+142,6
@@
copy_tag_nolock(StgClosure **p, const StgInfoTable *info,
*p = TAG_CLOSURE(tag,(StgClosure*)to);
src->header.info = (const StgInfoTable *)MK_FORWARDING_PTR(to);
*p = TAG_CLOSURE(tag,(StgClosure*)to);
src->header.info = (const StgInfoTable *)MK_FORWARDING_PTR(to);
- TICK_GC_WORDS_COPIED(size);
-
from = (StgPtr)src;
to[0] = (W_)info;
for (i = 1; i < size; i++) { // unroll for small i
from = (StgPtr)src;
to[0] = (W_)info;
for (i = 1; i < size; i++) { // unroll for small i
@@
-194,8
+192,6
@@
spin:
to = alloc_for_copy(size_to_reserve, stp);
*p = (StgClosure *)to;
to = alloc_for_copy(size_to_reserve, stp);
*p = (StgClosure *)to;
- TICK_GC_WORDS_COPIED(size_to_copy);
-
from = (StgPtr)src;
to[0] = info;
for (i = 1; i < size_to_copy; i++) { // unroll for small i
from = (StgPtr)src;
to[0] = info;
for (i = 1; i < size_to_copy; i++) { // unroll for small i
@@
-504,11
+500,6
@@
loop:
*/
if (!is_marked((P_)q,bd)) {
mark((P_)q,bd);
*/
if (!is_marked((P_)q,bd)) {
mark((P_)q,bd);
- if (mark_stack_full()) {
- debugTrace(DEBUG_gc,"mark stack overflowed");
- mark_stack_overflowed = rtsTrue;
- reset_mark_stack();
- }
push_mark_stack((P_)q);
}
return;
push_mark_stack((P_)q);
}
return;
@@
-702,8
+693,7
@@
loop:
goto loop;
}
goto loop;
}
- /* To evacuate a small TSO, we need to relocate the update frame
- * list it contains.
+ /* To evacuate a small TSO, we need to adjust the stack pointer
*/
{
StgTSO *new_tso;
*/
{
StgTSO *new_tso;