summaryrefslogtreecommitdiff
path: root/libguile/procprop.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-05-16 20:58:54 +0200
committerAndy Wingo <wingo@pobox.com>2013-06-09 23:43:25 +0200
commiteb2bc00fb3863986927f0bade97487209b6d6a5b (patch)
tree8671c68378b99fc3066de39d6e0e9dc1e11a8b3e /libguile/procprop.c
parentf88e574d58aa3e64b6f1ed0bc6ea918d20a67d88 (diff)
downloadguile-eb2bc00fb3863986927f0bade97487209b6d6a5b.tar.gz
Wire up ability to print RTL program arities
* libguile/procprop.c (scm_i_procedure_arity): Allow RTL programs to dispatch to scm_i_program_arity. * libguile/programs.c (scm_i_program_print): Refactor reference to write-program. (scm_i_rtl_program_minimum_arity): New procedure, dispatches to Scheme. (scm_i_program_arity): Dispatch to scm_i_rtl_program_minimum_arity if appropriate. * module/system/vm/debug.scm (program-minimum-arity): New export. * module/system/vm/program.scm (rtl-program-minimum-arity): New internal function. (program-arguments-alists): New helper, implemented also for RTL procedures. (write-program): Refactor a bit, and call program-arguments-alists. * test-suite/tests/rtl.test ("simply procedure arity"): Add tests that arities make it all the way to cold ELF and back to warm Guile.
Diffstat (limited to 'libguile/procprop.c')
-rw-r--r--libguile/procprop.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/libguile/procprop.c b/libguile/procprop.c
index 480970266..62476c037 100644
--- a/libguile/procprop.c
+++ b/libguile/procprop.c
@@ -60,7 +60,7 @@ scm_i_procedure_arity (SCM proc, int *req, int *opt, int *rest)
return 1;
}
- while (!SCM_PROGRAM_P (proc))
+ while (!SCM_PROGRAM_P (proc) && !SCM_RTL_PROGRAM_P (proc))
{
if (SCM_STRUCTP (proc))
{
@@ -82,14 +82,6 @@ scm_i_procedure_arity (SCM proc, int *req, int *opt, int *rest)
return 1;
}
- else if (SCM_RTL_PROGRAM_P (proc))
- {
- *req = 0;
- *opt = 0;
- *rest = 1;
-
- return 1;
- }
else
return 0;
}