summaryrefslogtreecommitdiff
path: root/rts/RtsAPI.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2018-04-22 14:28:47 +0100
committerSimon Marlow <marlowsd@gmail.com>2018-05-16 13:36:13 +0100
commit2b0918c9834be1873728176e4944bec26271234a (patch)
treef47689b64d3339c9cd92ad286fe01db478b53550 /rts/RtsAPI.c
parentfbd28e2c6b5f1302cd2d36d79149e3b0a9f01d84 (diff)
downloadhaskell-2b0918c9834be1873728176e4944bec26271234a.tar.gz
Save a word in the info table on x86_64
Summary: An info table with an SRT normally looks like this: StgWord64 srt_offset StgClosureInfo layout StgWord32 layout StgWord32 has_srt But we only need 32 bits for srt_offset on x86_64, because the small memory model requires that code segments are at most 2GB. So we can optimise this to StgClosureInfo layout StgWord32 layout StgWord32 srt_offset saving a word. We can tell whether the info table has an SRT or not, because zero is not a valid srt_offset, so zero still indicates that there's no SRT. Test Plan: * validate * For results, see D4632. Reviewers: bgamari, niteria, osa1, erikd Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4634
Diffstat (limited to 'rts/RtsAPI.c')
-rw-r--r--rts/RtsAPI.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/RtsAPI.c b/rts/RtsAPI.c
index 8946f9d840..8fd1917392 100644
--- a/rts/RtsAPI.c
+++ b/rts/RtsAPI.c
@@ -367,7 +367,7 @@ rts_getBool (HaskellObj p)
const StgInfoTable *info;
info = get_itbl((const StgClosure *)UNTAG_CONST_CLOSURE(p));
- if (info->has_srt == 0) { // has_srt is the constructor tag
+ if (info->srt == 0) { // srt is the constructor tag
return 0;
} else {
return 1;