projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
more fixes for THUNK_SELECTORs
[ghc-hetmet.git]
/
rts
/
sm
/
Evac.c-inc
diff --git
a/rts/sm/Evac.c-inc
b/rts/sm/Evac.c-inc
index
4fe9d5d
..
367d277
100644
(file)
--- a/
rts/sm/Evac.c-inc
+++ b/
rts/sm/Evac.c-inc
@@
-34,7
+34,9
@@
copy_tag(StgClosure **p, StgClosure *src, nat size, step *stp, StgWord tag)
info = xchg((StgPtr)&src->header.info, (W_)&stg_WHITEHOLE_info);
// so.. what is it?
} while (info == (W_)&stg_WHITEHOLE_info);
info = xchg((StgPtr)&src->header.info, (W_)&stg_WHITEHOLE_info);
// so.. what is it?
} while (info == (W_)&stg_WHITEHOLE_info);
- if (info == (W_)&stg_EVACUATED_info) {
+ if (info == (W_)&stg_EVACUATED_info || info == (W_)&stg_IND_info) {
+ // NB. a closure might be updated with an IND by
+ // unchain_selector_thunks(), hence the test above.
src->header.info = (const StgInfoTable *)info;
return evacuate(p); // does the failed_to_evac stuff
}
src->header.info = (const StgInfoTable *)info;
return evacuate(p); // does the failed_to_evac stuff
}