diff options
author | Andy Wingo <wingo@pobox.com> | 2012-05-17 11:39:35 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-05-23 14:27:17 +0200 |
commit | 52182d5280cefe18e605b6c40f690badb174ec27 (patch) | |
tree | 895f4eb134062fcd6d9fe099d3fda0b347557b0e /libguile/vm-i-system.c | |
parent | eac12024830736409112634d3b16ddaaa2bff05b (diff) | |
download | guile-52182d5280cefe18e605b6c40f690badb174ec27.tar.gz |
remove CONS macro in VM; use scm_cons instead
* libguile/vm-engine.c (CONS): Remove. Callers should use scm_cons
instead, syncing registers beforehand.
(POP_LIST): Adapt, only synchronizing once.
(POP_LIST_MARK, POP_CONS_MARK): Remove unused macros.
* libguile/vm-i-scheme.c (cons):
* libguile/vm-i-system.c (push-rest, bind-rest): Adapt.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r-- | libguile/vm-i-system.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index ac1d4a61a..4445d0c30 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -715,9 +715,10 @@ VM_DEFINE_INSTRUCTION (51, push_rest, "push-rest", 2, -1, -1) SCM rest = SCM_EOL; n = FETCH () << 8; n += FETCH (); + SYNC_BEFORE_GC (); while (sp - (fp - 1) > n) /* No need to check for underflow. */ - CONS (rest, *sp--, rest); + rest = scm_cons (*sp--, rest); PUSH (rest); NEXT; } @@ -731,9 +732,10 @@ VM_DEFINE_INSTRUCTION (52, bind_rest, "bind-rest", 4, -1, -1) n += FETCH (); i = FETCH () << 8; i += FETCH (); + SYNC_BEFORE_GC (); while (sp - (fp - 1) > n) /* No need to check for underflow. */ - CONS (rest, *sp--, rest); + rest = scm_cons (*sp--, rest); LOCAL_SET (i, rest); NEXT; } |