diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-09-10 11:11:09 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-09-10 15:13:46 -0400 |
commit | 1f36b841497172efb74da34f80b4caa03daad966 (patch) | |
tree | f2d5d361b0accf6202cfb2b7b46e817a9b64d10f | |
parent | b55ee979d32df938eee9c4c02c189f8be267e8a1 (diff) | |
download | haskell-wip/apply-tags.tar.gz |
rts: Try applying tags from info tablewip/apply-tags
-rw-r--r-- | rts/sm/Evac.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c index 53a473d26c..3e493347d8 100644 --- a/rts/sm/Evac.c +++ b/rts/sm/Evac.c @@ -652,6 +652,7 @@ loop: // case CONSTR_0_1: { + tag |= info->srt + 1; #if defined(COMPILING_WINDOWS_DLL) copy_tag_nolock(p,info,q,sizeofW(StgHeader)+1,gen_no,tag); #else @@ -676,9 +677,11 @@ loop: return; } + case CONSTR_1_0: + tag |= info->srt + 1; + FALLTHROUGH; case FUN_0_1: case FUN_1_0: - case CONSTR_1_0: copy_tag_nolock(p,info,q,sizeofW(StgHeader)+1,gen_no,tag); return; @@ -693,15 +696,18 @@ loop: copy(p,info,q,sizeofW(StgThunk)+2,gen_no); return; + case CONSTR_1_1: + case CONSTR_2_0: + tag |= info->srt + 1; + FALLTHROUGH; case FUN_1_1: case FUN_2_0: case FUN_0_2: - case CONSTR_1_1: - case CONSTR_2_0: copy_tag_nolock(p,info,q,sizeofW(StgHeader)+2,gen_no,tag); return; case CONSTR_0_2: + tag |= info->srt + 1; copy_tag_nolock(p,info,q,sizeofW(StgHeader)+2,gen_no,tag); return; @@ -709,9 +715,11 @@ loop: copy(p,info,q,thunk_sizeW_fromITBL(INFO_PTR_TO_STRUCT(info)),gen_no); return; - case FUN: case CONSTR: case CONSTR_NOCAF: + tag |= info->srt + 1; + FALLTHROUGH; + case FUN: copy_tag_nolock(p,info,q,sizeW_fromITBL(INFO_PTR_TO_STRUCT(info)),gen_no,tag); return; |