summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-09-10 11:11:09 -0400
committerBen Gamari <ben@smart-cactus.org>2019-09-10 15:13:46 -0400
commit1f36b841497172efb74da34f80b4caa03daad966 (patch)
treef2d5d361b0accf6202cfb2b7b46e817a9b64d10f
parentb55ee979d32df938eee9c4c02c189f8be267e8a1 (diff)
downloadhaskell-wip/apply-tags.tar.gz
rts: Try applying tags from info tablewip/apply-tags
-rw-r--r--rts/sm/Evac.c16
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;