[Gc] Basic questions
Emmanuel Stapf [ES]
Fri, 9 May 2003 17:06:01 -0700
I'm using the windows version of 6.1 and found that the threaded version only
supports 64 threads. I was wondering if there was a fundamental reason why no
dynamically resizing of the structure that holds thread information is performed.
Otherwise I'm trying to understand `GC_register_displacement' but the comment in
`gc.h' is rather confusing.
/* Add a displacement to the set of those considered valid by the */
/* collector. GC_register_displacement(n) means that if p was returned */
/* by GC_malloc, then (char *)p + n will be considered to be a valid */
/* pointer to n. */
What does a pointer to `n' means?
My understanding is that if you have allocated p as:
p ------>/-------\ Offset 0
p + n -->|-------| Offset n
Then the GC will consider that p is alive if it can find a pointer that points
into the first n bytes of `p'. Am I correct?
Finally I'm trying to understand the role of memory barrier, I've looked at
gc_locks.h but my understanding of assembly code is quite limited. So I wonder if
there is not some kind of paper available on the web that would explain the basic
of memory barrier and their implementation depending on the platform.