GC/grey pages question

Holger Hans Peter Freyther <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.gnu.general
Message-ID <[email protected]>
Dear Paolo,

I was trying to understand the garbage collection better (e.g. to
determine if adding a write-barrier is a pain, if direct pointers
will be feasible at some point).

I thought the concept was:

* We mprotect READ_ONLY the old space
* When an object from old space starts to point to the new space
  it will be modified and the modification will trigger a SIGSEGV
* The SIGSEGV handling will add the page to the greylist.

* At some point the GC will scan the grey list, mark the objects
  and move them to the old space too.
* The entry from the greylist will be removed and the page will
  be marked as read-only again.

The reality seems to be a bit different.

* We don't seem to mprotect the oldspace but the OOP table? Is
this correct or am I misguided?

* We slowly/never remove entries from the greylist? E.g. even
after doing ObjectMemory compact the greylist is not empty? Is
this a bug?



kind regards
	holger
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.