[Vm-dev] Re: [squeak-dev] Image Segment semantics and weakness

Yoshiki Ohshima Yoshiki.Ohshima at acm.org
Tue Oct 21 23:29:53 UTC 2014

I'm not fully following the discussion here, but I do remember seeing
the following email from Dan in 1999:


and search for: "From DanI at wdi.disney.com Fri Mar 26 07:17:09 1999"

It does not require two bits to mark.

(Hopefully this email has some relevance to the discussion at hand...

On Sun, Oct 19, 2014 at 6:01 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> Hi All,
>     I want to check my understanding of reference semantics for image
> segments as I'm close to completing the Spur implementation.  Specifically
> the question is whether objects reachable only through weak pointers should
> be included in an image segment or not.
> Remember that an image segment is created from the transitive closure of an
> Array of root objects, the segment roots. i.e. we can think of an image
> segment as a set of objects created by tracing the object graph from the
> segment roots.
> The segment always includes the segment roots.  Except for the roots,
> objects are excluded from the segment that are also reachable form the roots
> of the system (the system roots, effectively the root environment,
> Smalltalk, and the stack of the current process).
> Consider a weak array in the transitive closure that is not reachable from
> the system roots, and hence should be included in the segment.  Objects
> referenced from that weak array may be in one of three categories
> - reachable from the system roots (and hence not to be included in the
> segment)
> - not reachable form the system roots, but reachable from the segment roots
> via strong pointers (and hence to be included in the segment)
> - not reachable form the system roots, not reachable from the segment roots
> via strong pointers
> Should this last category be included or excluded from the segment?  I think
> that it makes no difference, and excluding them is only an optimization.
> The argument is as follows.  Imagine that immediately after loading the
> image segment there is a garbage collection.  That garbage collection will
> collect all the objects in the last category as they are only reachable from
> the weak arrays in the segment.  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.
> An analogous argument accounts for objects reachable from ephemerons.  Is my
> reasoning sound?
> --
> best,
> Eliot

-- Yoshiki

More information about the Vm-dev mailing list