Unlifted data types
Simon Marlow
marlowsd at gmail.com
Thu Sep 10 19:59:15 UTC 2015
On 10/09/2015 10:41, Simon Peyton Jones wrote:
> | > The awkward spot is the runtime system. Currently it goes to some
> | > lengths to ensure that it never introduces an indirection for a
> | > boxed-but-unlifted type. Simon Marlow would know exactly where. So
> |
> | I *think* we're ok here. The RTS doesn't have any special machinery
> | to avoid indirections to unlifted things that I'm aware of. Did you
> | have a particular problem in mind?
>
> Well I can't point to anything very specific. I just recall that in
> various places, if a pointer was to an Array# we would immediately,
> eagerly, recurse in the GC rather than add the Array# to the queue
> for later processing. Maybe that is no longer true. Maybe it was
> never true.
Maybe that was an earlier variant of the GC. The current GC just treats
unlifted objects like other objects in a breadth-first way, and it never
introduces indirections except when reducing a selector thunk. So I
think this is ok.
Cheers
Simon
> It shouldn't be hard to find out. If true, there would be a run-time
> system test that returns true for boxed-but-unlifted heap objects.
>
> I think it would be worth a look because if I'm right it could have a
> significant impact on the design. >
> Simon
>
More information about the ghc-devs
mailing list