UI demo performance, GC
Brian Rice
water at tunes.org
Tue Mar 20 23:31:47 PDT 2007
On Mar 20, 2007, at 7:56 PM, Timmy Douglas wrote:
> Brian Rice <water at tunes.org> writes:
>
>> Note that it uses Squeak-style forwarding pointers which is not the
>> same as Lee's choice of card-marking as a scheme for GC. Card-marking
>> does have its advantages (which can be found with a little research).
>> Mostly I wrote it as an exercise in comparing Pidgin vs. Slang,
>> the C-
>> like dialects for VM implementation.
>
> When you say card-marking, are you referring to the kind with
> write-barriers that maintain a list of old generation -> new
> generation mappings? It seems that the cards in mark-compact.slate
> just
> make sure that stuff on the C stack isn't moved during the garbage
> collection.
Yes, there is at least a slight difference between what Lee
implemented and the term card-marking, although they relate. Lee
didn't prioritize generational GC support.
> How many changes would gc.slate have to undergo to be functional? It
> looks fairly complete but I can't really understand how it works
> without spending a few hours on it.
I don't know. I performed a fairly literal translation on a working
piece of code, but Slate's memory layout is somewhat different and we
never compiled with that GC.
> Would you mind telling me in a
> sentence how squeak-style forwarding pointers work compared to normal
> forwarding pointers?
Here is a reasonably-informative tour of the basics of the Squeak
engine:
http://www.rowledge.org/tim/squeak/OE-Tour.html
A presentation that is more in-depth about the Squeak GC:
http://prog2.vub.ac.be/~cderoove/esugtalks/SqueakGCLogic.pdf
Survey of Smalltalk GCs:
http://www.esug.org/data/ESUG2006/pres/gctalkjohnmacintosh.pdf
From my memory, Squeak's forwarding pointers are used to move
objects outside of a full GC, when compaction moves a lot of objects
around en masse and obliterates any forwarding pointers around.
Basically when doing an incremental collection, if an object is
tenured into old-space from new-space, a forwarding pointer is used
where the object was initially located: it consists of a special
header word followed by the pointer which references the new
location. I believe it is also used for become- operations? Take all
of this with a grain of salt, please. :)
--
-Brian
http://briantrice.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : /archives/slate/attachments/20070320/d38fc894/PGP.pgp
More information about the Slate
mailing list