Save a word in the info table on x86_64

Authored by simonmar on Apr 22 2018, 8:28 AM.

Description

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

bgamari added inline comments.
/includes/rts/storage/InfoTables.h
365

Be careful to only use #if defined(...), never #if.