1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-01 15:20:34 +02:00
Commit graph

3 commits

Author SHA1 Message Date
Andy Wingo
6389acf192 New internal functions to alloc subr closures
* libguile/gsubr.c (scm_allocate_subr_code):
(scm_make_subr_from_code): New functions.
(create_subr): Refactor in terms of new functions.
(scm_c_make_gsubr):
(scm_c_define_gsubr):
(scm_c_make_gsubr_with_generic):
(scm_c_define_gsubr_with_generic): Adapt.
2025-06-11 15:39:58 +02:00
Andy Wingo
710fa4c6f0 Add machinery to pass thread and/or closure when invoking subr
* libguile/gsubr.c: Arrange to store flags alongside array of subrs.
One flag indicates the thread should also be passed as the first
argument; another says that the closure should be passed.  Should remove
the need for arg shuffling in get_callee_vcode eventually.
(record_subr_name): Make the names be a vector; will integrate better
with precise tracing.
(create_subr): Add flags arg.  Adapt callers.
(scm_apply_subr): Allow for passing thread or closure.
* libguile/gsubr-internal.h: Add new interfaces to see whether to pass
closure or thread.  Pass thread to scm_apply_subr.
* libguile/jit.c (compile_subr_call): Allow for passing thread or
closure.
* libguile/vm-engine.c (subr_call): Pass thread.
2025-06-11 13:05:15 +02:00
Andy Wingo
c03071b380 Move subr internals off to internal header file
* libguile/gsubr-internal.h: New file.
* libguile/Makefile.am: Add to build.
* libguile/gsubr.h: Remove internal-only definitions.
* libguile/foreign.c:
* libguile/goops.c:
* libguile/gsubr.c:
* libguile/jit.c:
* libguile/programs.c:
* libguile/vm.c: Include new header.
2025-06-11 12:40:45 +02:00