mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 14:50:19 +02:00
(scm_remember_upto_here_1): Revise comments on the asm form.
This commit is contained in:
parent
412d82c4f3
commit
c1ffdc6a42
1 changed files with 11 additions and 6 deletions
|
@ -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_2 (SCM obj1, SCM obj2);
|
||||||
SCM_API void scm_remember_upto_here (SCM obj1, ...);
|
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,
|
/* In GCC we can force a reference to an SCM by making it an input to an
|
||||||
avoiding the code size and slowdown of an actual function call.
|
empty asm. This avoids the code size and slowdown of an actual function
|
||||||
__volatile__ ensures nothing will be moved across the reference, and that
|
call. Unfortunately there doesn't seem to be any way to do the varargs
|
||||||
it won't be optimized away (or rather only if proved unreachable).
|
scm_remember_upto_here like this.
|
||||||
Unfortunately there doesn't seem to be any way to do the varargs
|
|
||||||
scm_remember_upto_here similarly. */
|
__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__
|
#ifdef __GNUC__
|
||||||
#define scm_remember_upto_here_1(x) \
|
#define scm_remember_upto_here_1(x) \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue