<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 20 Oct 2014, at 21:41, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Mon, Oct 20, 2014 at 8:26 AM, stepharo <span dir="ltr" class="">&lt;<a href="mailto:stepharo@free.fr" target="_blank" class="">stepharo@free.fr</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000" class="">
    While I as a big fan of imageSegment and proposed to mariano to work
    on imageSegment2 (it was the original idea for his phd)<br class="">
    he convinced us that imagesegment were not worth their complexity.<br class=""></div></blockquote><div class=""><br class=""></div><div class="">I absolutely agree.</div><div class="">&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000" class="">
    So why do you want to have imageSegment?<br class=""></div></blockquote><div class=""><br class=""></div><div class="">Because of backwards-compatibility.&nbsp; If Spur does not provide image segments then the barrier to entry for Terf, eToys and Squeak may be too high.&nbsp; Spur is supposed to be a plug-in replacement for Cog, not something that requires lots of effort to port to.</div></div></div></div></div></blockquote><div><br class=""></div><div>but… (and tell me if I’m saying something stupid), it would be probably better to ask the guys using ImageSegments to spend some time doing an adaptor to use fuel (who is already there, works fine and faster than ImageSegments itself). In the not-so-long term, is better investment that make you replicate a technology that we all agree is not the best option (also, I would bet is better to use your valuable time in other stuff).&nbsp;</div><div>Is not that there is no alternative to IS… and also, the IS binary format for Spur will not be compatible with the older one, so… why not?</div><div><br class=""></div><div>anyway, that’s my 2c</div><div><br class=""></div>Esteban</div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><div class="">&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000" class="">Stef<div class=""><div class="h5"><br class="">
    <br class="">
    <br class="">
    <div class="">On 20/10/14 03:01, Eliot Miranda wrote:<br class="">
    </div>
    <blockquote type="cite" class="">
      <div dir="ltr" class="">Hi All,
        <div class=""><br class="">
        </div>
        <div class="">&nbsp; &nbsp; I want to check my understanding of reference semantics
          for image segments as I'm close to completing the Spur
          implementation.&nbsp; Specifically the question is whether objects
          reachable only through weak pointers should be included in an
          image segment or not.</div>
        <div class=""><br class="">
        </div>
        <div class="">Remember that an image segment is created from the
          transitive closure of an Array of root objects, the <i class="">segment
            roots</i>. i.e. we can think of an image segment as a set of
          objects created by tracing the object graph from the segment
          roots.</div>
        <div class=""><br class="">
        </div>
        <div class="">The segment always includes the segment roots.&nbsp; Except for
          the roots, objects are excluded from the segment that are also
          reachable form the roots of the system (the <i class="">system roots</i>,&nbsp;effectively
          the root environment, Smalltalk, and the stack of the current
          process).</div>
        <div class=""><br class="">
        </div>
        <div class="">Consider a weak array in the transitive closure that is not
          reachable from the system roots, and hence should be included
          in the segment.&nbsp; Objects referenced from that weak array may
          be in one of three categories</div>
        <div class=""><br class="">
        </div>
        <div class="">- reachable from the system roots (and hence not to be
          included in the segment)</div>
        <div class="">- <i class="">not</i>&nbsp;reachable form the system roots,
          but&nbsp;reachable from the segment roots via strong pointers (and
          hence to be included in the segment)<br clear="all" class="">
          <div class="">-&nbsp;<i class="">not</i>&nbsp;reachable form the system roots, <i class="">not</i>&nbsp;reachable
            from the segment roots via strong pointers<br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class="">Should this last category be included or excluded from
            the segment?&nbsp; I think that it makes no difference, and
            excluding them is only an optimization.&nbsp; The argument is as
            follows.&nbsp; Imagine that immediately after loading the image
            segment there is a garbage collection.&nbsp; That garbage
            collection will collect all the objects in the last category
            as they are only reachable from the weak arrays in the
            segment.&nbsp; Hence we are free to follow weak references as if
            they are strong when we create the image segment, leaving it
            to subsequent events to reclaim those objects. &nbsp;</div>
          <div class=""><br class="">
          </div>
          <div class="">An analogous argument accounts for objects reachable from
            ephemerons.&nbsp; Is my reasoning sound?</div>
          -- <br class="">
          best,
          <div class="">Eliot</div>
        </div>
      </div>
    </blockquote>
    <br class="">
  </div></div></div>

</blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class="">best,<div class="">Eliot</div>
</div></div>
</div></blockquote></div><br class=""></body></html>