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.


> 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