diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-04 16:39:34 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-04 16:39:34 +0100 |
commit | f36878ba2d04427e76b85a9e91fce71f56ba7c7f (patch) | |
tree | 85419d043601b4ab673269a208b840aa216f5ae0 /libguile/goops.c | |
parent | 8a1f4f98e121c4ba90eb992203713cf493d45c71 (diff) | |
download | guile-f36878ba2d04427e76b85a9e91fce71f56ba7c7f.tar.gz |
remove cxrs
* libguile/pairs.h:
* libguile/pairs.c: Previously scm_cdadr et al were implemented as
#defines that called scm_i_chase_pairs, and the Scheme-exposed
functions themselves were cxr subrs, which got special help in the
interpreter. Since now the special help is unnecessary (because the
compiler inlines and expands calls to car, cdadr, etc), the complexity
is a loss. So just implement cdadr etc using normal functions. There's
an advantage too, in that the compiler can unroll the cxring, reducing
branches.
* libguile/tags.h (scm_tc7_cxr): Remove this tag.
(scm_tcs_subrs): Now there's only one kind of subr, yay!
* libguile/debug.c (scm_procedure_name)
* libguile/evalext.c (scm_self_evaluating_p)
* libguile/gc.c (scm_i_tag_name)
* libguile/goops.c (scm_class_of)
* libguile/hash.c (scm_hasher)
* libguile/print.c (iprin1)
* libguile/procprop.c (scm_i_procedure_arity)
* libguile/procs.c (scm_procedure_p, scm_subr_p)
(scm_make_procedure_with_setter)
* libguile/vm.c (apply_foreign): Remove cxr cases. Replace uses of
scm_tcs_subrs with scm_tc7_gsubr.
Diffstat (limited to 'libguile/goops.c')
-rw-r--r-- | libguile/goops.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/libguile/goops.c b/libguile/goops.c index 4fa5ef3a3..76ca14b28 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -225,7 +225,6 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0, case scm_tc16_fraction: return scm_class_fraction; } - case scm_tc7_cxr: case scm_tc7_gsubr: if (SCM_SUBR_GENERIC (x) && *SCM_SUBR_GENERIC (x)) return scm_class_primitive_generic; |