Use NULL instead of END_X_QUEUE closures?

Ryan Yates fryguybob at gmail.com
Tue May 8 00:52:47 UTC 2018


Hi Ömer,

These are pointed to by objects traversed by GC.  They have info tables
like any other heap object that GC can understand.  I think this is a much
simpler invariant to hold then to have some heap objects point to NULL.

Ryan

On Mon, May 7, 2018 at 3:34 PM, Ömer Sinan Ağacan <omeragacan at gmail.com>
wrote:

> Currently we sometimes use special closures to mark end of lists of
> different
> objects. Some examples:
>
> - END_TSO_QUEUE
> - END_STM_WATCH_QUEUE
> - END_STM_CHUNK_LIST
>
> But we also use NULL for the same thing, e.g. in weak pointer lists
> (old_weak_ptr_list, weak_ptr_list).
>
> I'm wondering why we need special marker objects (which are actual closures
> with info tables) instead of using NULL consistently. Current approach
> causes a
> minor problem when working on the RTS because every time I traverse a list
> I
> need to remember how the list is terminated (e.g. NULL when traversing weak
> pointer lists, END_TSO_QUEUE when traversing TSO lists).
>
> Ömer
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180507/d860d7c0/attachment.html>


More information about the ghc-devs mailing list