Improving the Int/Word story inside GHC

Simon Marlow marlowsd at gmail.com
Thu Aug 7 14:25:39 UTC 2014


Hmm, surely these are used for negative offsets a lot?  All Hp-relative 
indices are negative (but virtual Hp offsets are positive), and 
Sp-relative indices can be both negative and positive.

On 07/08/2014 12:49, Simon Peyton Jones wrote:
> I’m all for it!
>
> I believe that ByteOff/WordOff are always 0 or positive.   At least,
> they were when I introduced them!
>
> SImon
>
> *From:*ghc-devs [mailto:ghc-devs-bounces at haskell.org] *On Behalf Of
> *Johan Tibell
> *Sent:* 07 August 2014 12:21
> *To:* Simon Marlow
> *Cc:* ghc-devs at haskell.org
> *Subject:* Re: Improving the Int/Word story inside GHC
>
> Simon M, is the intention of ByteOff and WordOff that they should be
> able to represent negative quantities as well? If so we might need to
> split it into ByteOff (still an Int) and ByteIndex (a Word) to have a
> type for indexing into arrays.
>
> On Thu, Aug 7, 2014 at 1:16 PM, Edward Z. Yang <ezyang at mit.edu
> <mailto:ezyang at mit.edu>> wrote:
>
>     If it's strictly just in the codegen (and not affecting user code),
>     seems fine to me.
>
>     Edward
>
>     Excerpts from Johan Tibell's message of 2014-08-07 12:10:37 +0100:
>
>      > Inside GHC we mostly use Int instead of Word, even when we want to
>      > represent non-negative values, such as sizes of things or indices
>     into
>      > things. This is now causing some grief in
>      > https://ghc.haskell.org/trac/ghc/ticket/9416, where an allocation
>     boundary
>      > case test fails with a segfault because a n < m Int comparison
>     overflows.
>      >
>      > I tried to fix the issue by changing the type of
>     maxInlineAllocSize, which
>      > is used on one side of the above comparison, to Word. However, that
>      > unravels a bunch of other issues, such as wordsToBytes, ByteOff,
>     etc are
>      > all Int-valued quantities.
>      >
>      > I could perhaps work around these problems by judicious use of
>     fromIntegral
>      > in StgCmmPrim, but I'm a bit unhappy about it because it 1) makes
>     the code
>      > uglier and 2) needs to be done in quite a few places.
>      >
>      > How much work would it be to try to switch the codegen to use
>     Word for most
>      > of these quantities instead?
>      >
>      > -- Johan
>


More information about the ghc-devs mailing list