On Tue, Aug 1, 2017 at 8:08 PM Carter Schonwald <[email protected]> wrote: > One issue with packed fields is that on many architectures you can't quite do subword reads or > writes. So it might not always be a win.
Could you give any examples? Note that we're still going to do aligned read/writes, i.e., `Int32#` would still be 4 bytes aligned, `Int16#` 2 bytes, etc. So we might have "holes", e.g., `data Foo = Foo Int8# Int64#` would still waste 7 bytes (since `Int64#` should be 8 bytes aligned). In the future, I'd also like to do some field reordering to avoid some holes like that in cases like `Foo Int32# Int64# Int32#` (here it'd be better if the in-memory layout was `Int64#` first and then the two `Int32#`s) > There's also the issue that c-- as it exists in ghc doesn't have any notion of subword sized > types. > > That said, I do support making word/int64/32 # types more first class / built in. (I hit some > issues which tie into this topic in the process of working on my still in progress safeword > package. ) > > Point being: I support improving what we have, but it's got a bit of surface area. Please let me > know how I can help you dig into this though Have a look at https://ghc.haskell.org/trac/ghc/ticket/13825 which tracks the progress. The most recent diff is https://phabricator.haskell.org/D3809 So far, most of this work is based on some unfinished code by Simon Marlow to support storing constructor fields smaller than words. I'm currently mostly finishing/fixing it and splitting to smaller pieces. Introducing more primitive stuff is the next step. (assuming everyone is ok with this :) Cheers, Michal
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
