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

_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to