gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2015年02月05日 10:38:00 -0500
committerCamm Maguire <camm@debian.org>2015年02月05日 10:38:00 -0500
commit7510123ef646a22d6bcf59b206b58659bca1a657 (patch)
tree1949542b6f21f361e54ade2b9f94afa3ca98258d
parentb79a9dc8cfdf16709b5417dd5ed66822f8ff80fa (diff)
downloadgcl-7510123ef646a22d6bcf59b206b58659bca1a657.tar.gz
unboxed fixnum for turbo array length
Diffstat
-rwxr-xr-xgcl/o/cfun.c 2
-rwxr-xr-xgcl/o/gbc.c 3
2 files changed, 2 insertions, 3 deletions
diff --git a/gcl/o/cfun.c b/gcl/o/cfun.c
index 2639d34c1..3f79f3388 100755
--- a/gcl/o/cfun.c
+++ b/gcl/o/cfun.c
@@ -337,7 +337,7 @@ turbo_closure(object fun)
for (n = 0, l = fun->cc.cc_env; !endp(l); n++, l = l->c.c_cdr);
{
block= AR_ALLOC(alloc_relblock,(1+n),object);
- *block=make_fixnum(n);
+ *block=(object)(long)n;
fun->cc.cc_turbo = block+1; /* equivalent to &block[1] */
for (n = 0, l = fun->cc.cc_env; !endp(l); n++, l = l->c.c_cdr)
fun->cc.cc_turbo[n] = l;}
diff --git a/gcl/o/gbc.c b/gcl/o/gbc.c
index f51e9be0e..f1616bb35 100755
--- a/gcl/o/gbc.c
+++ b/gcl/o/gbc.c
@@ -807,9 +807,8 @@ mark_object(object x) {
mark_object(x->cc.cc_env);
mark_object(x->cc.cc_data);
if (x->cc.cc_turbo!=NULL) {
- mark_object(*(x->cc.cc_turbo-1));
if (COLLECT_RELBLOCK_P)
- x->cc.cc_turbo=(void *)copy_relblock((char *)(x->cc.cc_turbo-1),(1+fix(*(x->cc.cc_turbo-1)))*sizeof(object))+sizeof(object);
+ x->cc.cc_turbo=(void *)copy_relblock((char *)(x->cc.cc_turbo-1),(1+*(fixnum *)(x->cc.cc_turbo-1))*sizeof(object))+sizeof(object);
}
break;
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月04日 14:57:37 +0000

AltStyle によって変換されたページ (->オリジナル) /