projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2003-06-26 20:47:47 by panne]
[ghc-hetmet.git]
/
ghc
/
rts
/
GC.c
diff --git
a/ghc/rts/GC.c
b/ghc/rts/GC.c
index
3ab057a
..
7a447fd
100644
(file)
--- a/
ghc/rts/GC.c
+++ b/
ghc/rts/GC.c
@@
-1,5
+1,5
@@
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: GC.c,v 1.155 2003/05/14 09:13:59 simonmar Exp $
+ * $Id: GC.c,v 1.157 2003/06/26 20:47:47 panne Exp $
*
* (c) The GHC Team 1998-2003
*
*
* (c) The GHC Team 1998-2003
*
@@
-1930,8
+1930,18
@@
loop:
* list it contains.
*/
{
* list it contains.
*/
{
- StgTSO *new_tso = (StgTSO *)copy((StgClosure *)tso,tso_sizeW(tso),stp);
+ StgTSO *new_tso;
+ StgPtr p, q;
+
+ new_tso = (StgTSO *)copyPart((StgClosure *)tso,
+ tso_sizeW(tso),
+ sizeofW(StgTSO), stp);
move_TSO(tso, new_tso);
move_TSO(tso, new_tso);
+ for (p = tso->sp, q = new_tso->sp;
+ p < tso->stack+tso->stack_size;) {
+ *q++ = *p++;
+ }
+
return (StgClosure *)new_tso;
}
}
return (StgClosure *)new_tso;
}
}
@@
-2165,7
+2175,7
@@
move_TSO (StgTSO *src, StgTSO *dest)
{
ptrdiff_t diff;
{
ptrdiff_t diff;
- // relocate the stack pointers...
+ // relocate the stack pointer...
diff = (StgPtr)dest - (StgPtr)src; // In *words*
dest->sp = (StgPtr)dest->sp + diff;
}
diff = (StgPtr)dest - (StgPtr)src; // In *words*
dest->sp = (StgPtr)dest->sp + diff;
}
@@
-2183,7
+2193,7
@@
scavenge_large_srt_bitmap( StgLargeSRT *large_srt )
b = 0;
bitmap = large_srt->l.bitmap[b];
size = (nat)large_srt->l.size;
b = 0;
bitmap = large_srt->l.bitmap[b];
size = (nat)large_srt->l.size;
- p = large_srt->srt;
+ p = (StgClosure **)large_srt->srt;
for (i = 0; i < size; ) {
if ((bitmap & 1) != 0) {
evacuate(*p);
for (i = 0; i < size; ) {
if ((bitmap & 1) != 0) {
evacuate(*p);