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:
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 (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) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue