[squeak-dev] Re: Using #= for integer comparison instead of #==

Andres Valloud avalloud at smalltalk.comcastbiz.net
Wed Dec 1 03:06:48 UTC 2010


Yes, that does make sense.  Thank you :).

On 11/30/10 18:45 , Eliot Miranda wrote:
>
>
> On Tue, Nov 30, 2010 at 6:38 PM, Andres Valloud
> <avalloud at smalltalk.comcastbiz.net
> <mailto:avalloud at smalltalk.comcastbiz.net>> wrote:
>
>     Awesome, thank you!  That makes the "marker technique" more clear.
>       In HPS parlance (excuse me using the terminology I am most
>     familiar with), Squeak has an eden plus two survivor semi spaces,
>     and old space for the rest.  The incremental GC would be a scavenge
>     of new space.  The full GC is a mark / sweep GC of all object data.
>       Does that make sense?
>
>
> Yes.
>
>     Also, would you mind a question?  If the new objects are above the
>     old data, what happens when the old data grows large enough that it
>     runs into the new object space?  Is the new object space moved upwards?
>
>
> Think of the heap (including new space) as one region growing towards a
> limit.  Old space is immediately below new space, a single variable
> pointing to the boundary.  Somewhere above that is the allocation
> pointer.  When one does a tenuring incremental collection new space is
> compacted and the pointer to the top of old space merely set to point to
> teh allocation pointer, so now everything is old. By the same token, to
> do a full gc the old space pointer is merely set to the bottom of the
> heap, so now everything is young, and the roots are the active context
> and the special objects array.
> Unlinke HPS there is no such thing as an old space allocation, because
> there is no free list of free old space objects, and because old space
> and new space are contiguous.  Hence a large allocation will typically
> tenure everything.
>
> Make sense?
>
> best
> Eliot
>
>
>
>     On 11/30/10 16:20 , Andreas Raab wrote:
>
>         http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/Rowledge-Final.pdf
>
>         On pp. 20 it has an excellent summary about how the Squeak GC works.
>
>         Cheers,
>             - Andreas
>
>         On 11/30/2010 4:13 PM, Andres Valloud wrote:
>
>             Yes, from what I've seen, Squeak's GC is different from that
>             in HPS. I
>             found some information scattered here and there in Google,
>             but it's
>             mostly commentary. Ideally, I'd look at the source code and
>             figure it
>             out but I don't quite have the time to look at it in all its
>             detail. I
>             would really appreciate a current, 3-5 sentence summary of
>             Squeak's GC
>             implementation. Does anyone have such a pointer? I hope this
>             request is
>             not deemed ridiculous, I'm thinking it would be just as
>             unreasonable to
>             expect anybody to look at HPS' GC implementation and get the
>             gist of
>             what's going on in 5-10 minutes. Thanks in advance!
>
>             On 11/27/10 14:06 , Eliot Miranda wrote:
>
>
>
>                 On Fri, Nov 26, 2010 at 9:15 AM, Andres Valloud
>                 <avalloud at smalltalk.comcastbiz.net
>                 <mailto:avalloud at smalltalk.comcastbiz.net>
>                 <mailto:avalloud at smalltalk.comcastbiz.net
>                 <mailto:avalloud at smalltalk.comcastbiz.net>>>  wrote:
>
>                 I'm not familiar with Squeak's GC... can you also assume
>                 that a GC
>                 (e.g.: a "new space" scavenge) won't move the marker so
>                 that the
>                 enumeration goes past it?
>
>
>                 IIUC, that's irrelevant. FOr the marker technique to
>                 work all that's
>                 needed is that the relative order of live objects isn't
>                 changed. The
>                 only thing that can change that is a become:. In the
>                 absence of a
>                 become: the end marker, no matter how many GCs occur,
>                 stays above/after
>                 all previously activated objects and below/before all
>                 subsequently
>                 allocated objects. The Squeak GC effectively only
>                 compacts to squeeze
>                 out reclaimed objects, it does not reorder. So this is
>                 very different
>                 to the VM/HPS GC.
>
>                 HTH
>                 Eliot
>
>
>
>                 On 11/26/10 9:12 , Bert Freudenberg wrote:
>
>
>                 On 26.11.2010, at 18:09, Andres Valloud wrote:
>
>                 Can you assume that allocation is sequential?
>
>
>                 I can.
>
>                 - Bert -
>
>                 On 11/26/10 8:59 , Bert Freudenberg wrote:
>
>
>                 On 26.11.2010, at 17:43, Andres Valloud wrote:
>
>                 You *must* use an end marker, i.e.,
>
>                 last := Object new. "end marker"
>                 obj := self someObject.
>                 [last == obj] whileFalse:[
>                 count := count + 1.
>                 obj := obj nextObject.
>                 ].
>
>                 This will work because it counts between the
>                 beginning of memory and the
>                 (arbitrary) end marker. Anything else basically
>                 should not be relied on
>                 to work, jit or no.
>
>
>                 What happens if a process with higher priority
>                 interrupts the iteration and creates more objects?
>
>
>                 New objects would come after the end marker in memory.
>
>                 - Bert -
>
>
>
>
>
>
>
>
>
>
>         .
>
>
>



More information about the Squeak-dev mailing list