<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jun 8, 2017 at 3:29 PM, Ruben Astudillo <span dir="ltr"><<a href="mailto:ruben.astud@gmail.com" target="_blank">ruben.astud@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 08/06/17 15:08, Brandon Allbery wrote:<br>
> It's not just allocation: if it didn't get garbage collected, then<br>
> there is *at least* one reference to it that needs to be updated.<br>
<br>
</span>which reference is that?. Immutability means that old data can't<br>
reference the new one, right?. What kind of reference (apart from live<br>
data on the stack) can we have on new data on the nursery?<br></blockquote><div><br></div><div>Another reference within the same nursery. Now consider that the same nursery can *also* contain newly created threads, which can be scheduled just like existing ones.</div><div><br></div><div>Between two garbage collections, we may have:</div><div><br></div><div>- allocation of new values</div><div>- spawning of new sparks which have access to said values<br></div><div><br></div><div>If you now have multiple hardware threads, these can be running concurrently and allocating their own heap values which reference those shared values: for example, each is building its own list of cons cells referencing the value in different ways as specified by other values passed to the thread. Relocating the shared value from the nursery now requires updating all such thread-specific cons cells. Those heap values are also being promoted out of the nursery, but that doesn't change anything; copying them does not magically also update the copied things being pointed to, that is part of what GC does.</div></div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>brandon s allbery kf8nh                               sine nomine associates</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>                                  <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div><div>unix, openafs, kerberos, infrastructure, xmonad        <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div></div></div>
</div></div>