[Vm-dev] Re: [squeak-dev] Image Segment semantics and weakness
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
> - 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?
More information about the Vm-dev