Related articles |
---|
[7 earlier articles] |
Re: Recognising pointers during garbage collection? qrczak@knm.org.pl (Marcin 'Qrczak' Kowalczyk) (2003-07-25) |
Re: Recognising pointers during garbage collection? cymric73@hotmail.com (Maarten D. de Jong) (2003-07-25) |
Re: Recognising pointers during garbage collection? basile@starynkevitch.net (Basile STARYNKEVITCH) (2003-07-31) |
Re: Recognising pointers during garbage collection? basile@starynkevitch.net (Basile STARYNKEVITCH) (2003-07-31) |
Re: Recognising pointers during garbage collection? gneuner2@comcast.net (George Neuner) (2003-07-31) |
Re: Recognising pointers during garbage collection? fjh@cs.mu.oz.au (Fergus Henderson) (2003-08-04) |
Re: Recognising pointers during garbage collection? basile@starynkevitch.net (Basile STARYNKEVITCH) (2003-09-04) |
Re: Recognising pointers during garbage collection? nmm1@cus.cam.ac.uk (2003-09-04) |
From: | Basile STARYNKEVITCH <basile@starynkevitch.net> |
Newsgroups: | comp.compilers |
Date: | 4 Sep 2003 01:08:44 -0400 |
Organization: | http://lesours.starynkevitch.net/ - Les Ours |
References: | 03-07-149 03-07-168 03-07-186 03-07-204 |
Keywords: | GC |
Posted-Date: | 04 Sep 2003 01:08:37 EDT |
In an older article, I (Basile) wrote previously:
Basile>> For example, Qish is a precise, generational copying, garbage
Basile>> collector for (and in) C.
For completeness, the URL for Qish is
http://freshmeat.net/projects/qish or
http://www.starynkevitch.net/Basile/qishintro.html and Qish is
opensource, LGPL license.
but Fergus Henderson added (on 2003-08-03 21:23:01 PST)
Fergus> That is not a particularly good example, IMHO, since Qish is
Fergus> not written in standard C; it relies on undefined behaviour.
I don't believe it is true (at least for the latest Qish version 0.9,
which was released around february 23rd 2003).
Qish does rely on volatile pointers, but it does not need the
-fvolatile flag (or any particular compilation flag) - even if I did
claimed incorrectly in previous releases that Qish needs such flags. I
checked with ths ISO90 C spec lately.
I apologise for having wrongly stated in previous releases that some
particular compilation flags are needed. I do think that every correct
C compiler can compile Qish code (provided the compiler does follow
the volatile keyword correctly...)
So the correct use of Qish is to:
1. have all GC pointers declared as volatile;
2. have all local GC pointers put into a volatile struct named
_locals_
3. more generally follow appropriately the [restrictive] Qish coding
style (which includes the above 2 rules), in particular avoid
imbricated functions calls like f(g(h(x),y),z) and call appropriate
prologue & epilogue macros.
Could Fergus (or others) please examine the latest (0.9) version of
Qish and tell exactly what is undefined behavior in Qish. Please read
and discuss the code, which is more correct than the (poor)
documentation.
Actually, I think that the previous versions of Qish did not need any
particular compiler flag neither, but I failed to understand that when
releasing it. It is a matter of precisely understand the meaning of
volatile.
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email:
basile<at>starynkevitch<dot>net aliases: basile<at>tunes<dot>org =
bstarynk<at>nerim<dot>net 8, rue de la Faïencerie, 92340 Bourg La
Reine, France
Return to the
comp.compilers page.
Search the
comp.compilers archives again.