1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 22:10:21 +02:00

(scm_remember_upto_here_1): Revise comments on the asm form.

This commit is contained in:
Kevin Ryde 2003-08-27 23:34:53 +00:00
parent 412d82c4f3
commit c1ffdc6a42

View file

@ -342,12 +342,17 @@ SCM_API void scm_remember_upto_here_1 (SCM obj);
SCM_API void scm_remember_upto_here_2 (SCM obj1, SCM obj2);
SCM_API void scm_remember_upto_here (SCM obj1, ...);
/* In GCC we can force a reference to an SCM with a little do-nothing asm,
avoiding the code size and slowdown of an actual function call.
__volatile__ ensures nothing will be moved across the reference, and that
it won't be optimized away (or rather only if proved unreachable).
Unfortunately there doesn't seem to be any way to do the varargs
scm_remember_upto_here similarly. */
/* In GCC we can force a reference to an SCM by making it an input to an
empty asm. This avoids the code size and slowdown of an actual function
call. Unfortunately there doesn't seem to be any way to do the varargs
scm_remember_upto_here like this.
__volatile__ ensures nothing will be moved across the asm, and it won't
be optimized away (or only if proved unreachable). Constraint "g" can be
used on all processors and allows any memory or general register (or
immediate) operand. The actual asm syntax doesn't matter, we don't want
to use it, just ensure the operand is still alive. See "Extended Asm" in
the GCC manual for more. */
#ifdef __GNUC__
#define scm_remember_upto_here_1(x) \