guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: removing scm_gc_mark_conservatively()


From: Marius Vollmer
Subject: Re: removing scm_gc_mark_conservatively()
Date: 28 Sep 2001 00:52:01 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.0.102

Dirk Herrmann <address@hidden> writes:

> Hello Marius,
> 
> a question:  How do you think should initialization work?  A first
> approach would be similar to:
> 
> #define SCM_INIT_CELL(c, x, y) \
>   do { \
>     SCM_SET_CELL_WORD_1 (c, y); \
>     SCM_SET_CELL_TYPE (c, x); \
>     scm_remember_upto_here_1 (y); \
>   }

I would combine this with allocating the cell so that you could not
allocate a new cell without initializing it at the same time.

The init portion would be like you have outlined above.  For
cooperative threading (i.e., all we can offer now), the
scm_remember_upto_here_1 would not be necessary since the
initialization can not be interrupted by the GC.  For preemptive
threading, we could find specialized ways to implement
scm_remember_upto_here_1 that are cheaper, like a volatile asm for
GCC, and maybe other tricks on other platforms, like assigning to a
volatile location.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]