projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
95a3e55
)
Fixes to account for the new layout of MUT_ARR_PTRS (see #650)
author
Simon Marlow
<marlowsd@gmail.com>
Mon, 21 Dec 2009 11:52:49 +0000
(11:52 +0000)
committer
Simon Marlow
<marlowsd@gmail.com>
Mon, 21 Dec 2009 11:52:49 +0000
(11:52 +0000)
rts/sm/Compact.c
patch
|
blob
|
history
diff --git
a/rts/sm/Compact.c
b/rts/sm/Compact.c
index
0a695ca
..
315eda7
100644
(file)
--- a/
rts/sm/Compact.c
+++ b/
rts/sm/Compact.c
@@
-511,13
+511,13
@@
update_fwd_large( bdescr *bd )
case MUT_ARR_PTRS_FROZEN0:
// follow everything
{
case MUT_ARR_PTRS_FROZEN0:
// follow everything
{
- StgPtr next;
+ StgMutArrPtrs *a;
- next = p + mut_arr_ptrs_sizeW((StgMutArrPtrs*)p);
- for (p = (P_)((StgMutArrPtrs *)p)->payload; p < next; p++) {
- thread((StgClosure **)p);
- }
- continue;
+ a = (StgMutArrPtrs*)p;
+ for (p = (P_)a->payload; p < (P_)&a->payload[a->ptrs]; p++) {
+ thread((StgClosure **)p);
+ }
+ continue;
}
case TSO:
}
case TSO:
@@
-692,13
+692,14
@@
thread_obj (StgInfoTable *info, StgPtr p)
case MUT_ARR_PTRS_FROZEN0:
// follow everything
{
case MUT_ARR_PTRS_FROZEN0:
// follow everything
{
- StgPtr next;
-
- next = p + mut_arr_ptrs_sizeW((StgMutArrPtrs*)p);
- for (p = (P_)((StgMutArrPtrs *)p)->payload; p < next; p++) {
+ StgMutArrPtrs *a;
+
+ a = (StgMutArrPtrs *)p;
+ for (p = (P_)a->payload; p < (P_)&a->payload[a->ptrs]; p++) {
thread((StgClosure **)p);
}
thread((StgClosure **)p);
}
- return p;
+
+ return (StgPtr)a + mut_arr_ptrs_sizeW(a);
}
case TSO:
}
case TSO: