summaryrefslogtreecommitdiff
path: root/libguile/procs.c
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-09-26 20:11:22 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-09-26 20:11:22 +0000
commit74cc85038e5685aa7f9e81e0a9004b0717fb22a5 (patch)
tree8e7c69e7945286e9e7a65a473fb71fb50799fcf3 /libguile/procs.c
parent9eb364fccba89d07f1063d373df1aff911288e83 (diff)
downloadguile-74cc85038e5685aa7f9e81e0a9004b0717fb22a5.tar.gz
* Don't use string or vector macros when accessing compiled closures.
Diffstat (limited to 'libguile/procs.c')
-rw-r--r--libguile/procs.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/libguile/procs.c b/libguile/procs.c
index 456cd19f0..f979cd097 100644
--- a/libguile/procs.c
+++ b/libguile/procs.c
@@ -153,14 +153,18 @@ scm_mark_subr_table ()
SCM
scm_makcclo (SCM proc, long len)
{
+ scm_bits_t *base = scm_must_malloc (len * sizeof (scm_bits_t), "compiled-closure");
+ unsigned long i;
SCM s;
+
+ for (i = 0; i < len; ++i)
+ base [i] = SCM_UNPACK (SCM_UNSPECIFIED);
+
SCM_NEWCELL (s);
SCM_DEFER_INTS;
- SCM_SETCHARS (s, scm_must_malloc (len * sizeof (SCM), "compiled-closure"));
- SCM_SETLENGTH (s, len, scm_tc7_cclo);
- while (--len)
- SCM_VELTS (s)[len] = SCM_UNSPECIFIED;
- SCM_CCLO_SUBR (s) = proc;
+ SCM_SET_CCLO_BASE (s, base);
+ SCM_SET_CCLO_LENGTH (s, len);
+ SCM_SET_CCLO_SUBR (s, proc);
SCM_ALLOW_INTS;
return s;
}