diff options
-rw-r--r-- | libguile/extensions.h | 2 | ||||
-rw-r--r-- | libguile/frames.c | 2 | ||||
-rw-r--r-- | libguile/instructions.c | 3 | ||||
-rw-r--r-- | libguile/objcodes.c | 2 | ||||
-rw-r--r-- | libguile/programs.c | 2 | ||||
-rw-r--r-- | libguile/vm.c | 3 | ||||
-rw-r--r-- | module/system/vm/frame.scm | 3 | ||||
-rw-r--r-- | module/system/vm/instruction.scm | 2 | ||||
-rw-r--r-- | module/system/vm/objcode.scm | 2 | ||||
-rw-r--r-- | module/system/vm/program.scm | 2 | ||||
-rw-r--r-- | module/system/vm/vm.scm | 2 |
11 files changed, 19 insertions, 6 deletions
diff --git a/libguile/extensions.h b/libguile/extensions.h index 596b43ae0..260567e51 100644 --- a/libguile/extensions.h +++ b/libguile/extensions.h @@ -26,6 +26,8 @@ +typedef void (*scm_t_extension_init_func)(void*); + SCM_API void scm_c_register_extension (const char *lib, const char *init, void (*func) (void *), void *data); diff --git a/libguile/frames.c b/libguile/frames.c index 647cb608d..eb3bc22ee 100644 --- a/libguile/frames.c +++ b/libguile/frames.c @@ -297,6 +297,8 @@ scm_bootstrap_frames (void) scm_set_smob_mark (scm_tc16_vm_frame, vm_frame_mark); scm_set_smob_free (scm_tc16_vm_frame, vm_frame_free); scm_set_smob_print (scm_tc16_vm_frame, vm_frame_print); + scm_c_register_extension ("libguile", "scm_init_frames", + (scm_t_extension_init_func)scm_init_frames, NULL); } void diff --git a/libguile/instructions.c b/libguile/instructions.c index b33c8d203..4f504f0a2 100644 --- a/libguile/instructions.c +++ b/libguile/instructions.c @@ -215,6 +215,9 @@ SCM_DEFINE (scm_opcode_to_instruction, "opcode->instruction", 1, 0, 0, void scm_bootstrap_instructions (void) { + scm_c_register_extension ("libguile", "scm_init_instructions", + (scm_t_extension_init_func)scm_init_instructions, + NULL); } void diff --git a/libguile/objcodes.c b/libguile/objcodes.c index 3e30b2d60..c53cf2253 100644 --- a/libguile/objcodes.c +++ b/libguile/objcodes.c @@ -266,6 +266,8 @@ scm_bootstrap_objcodes (void) { scm_tc16_objcode = scm_make_smob_type ("objcode", 0); scm_set_smob_mark (scm_tc16_objcode, objcode_mark); + scm_c_register_extension ("libguile", "scm_init_objcodes", + (scm_t_extension_init_func)scm_init_objcodes, NULL); } /* Before, we used __BYTE_ORDER, but that is not defined on all diff --git a/libguile/programs.c b/libguile/programs.c index 1d6318c6c..c97f61e13 100644 --- a/libguile/programs.c +++ b/libguile/programs.c @@ -368,6 +368,8 @@ scm_bootstrap_programs (void) scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_1 = program_apply_1; scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_2 = program_apply_2; scm_set_smob_print (scm_tc16_program, program_print); + scm_c_register_extension ("libguile", "scm_init_programs", + (scm_t_extension_init_func)scm_init_programs, NULL); } void diff --git a/libguile/vm.c b/libguile/vm.c index 0646becdb..53e9e154e 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -662,6 +662,9 @@ scm_bootstrap_vm (void) sym_vm_error = scm_permanent_object (scm_from_locale_symbol ("vm-error")); sym_debug = scm_permanent_object (scm_from_locale_symbol ("debug")); + scm_c_register_extension ("libguile", "scm_init_vm", + (scm_t_extension_init_func)scm_init_vm, NULL); + strappage = 1; } diff --git a/module/system/vm/frame.scm b/module/system/vm/frame.scm index a74d903da..33a1e1b60 100644 --- a/module/system/vm/frame.scm +++ b/module/system/vm/frame.scm @@ -42,8 +42,7 @@ frame-return-address frame-program frame-dynamic-link heap-frame?)) -;; fixme: avoid the dynamic-call? -(dynamic-call "scm_init_frames" (dynamic-link "libguile")) +(load-extension "libguile" "scm_init_frames") ;;; ;;; Frame chain diff --git a/module/system/vm/instruction.scm b/module/system/vm/instruction.scm index c820e9952..3ad718ea8 100644 --- a/module/system/vm/instruction.scm +++ b/module/system/vm/instruction.scm @@ -25,4 +25,4 @@ instruction-pops instruction-pushes instruction->opcode opcode->instruction)) -(dynamic-call "scm_init_instructions" (dynamic-link "libguile")) +(load-extension "libguile" "scm_init_instructions") diff --git a/module/system/vm/objcode.scm b/module/system/vm/objcode.scm index df1ff26e4..ab6bb4bae 100644 --- a/module/system/vm/objcode.scm +++ b/module/system/vm/objcode.scm @@ -25,4 +25,4 @@ load-objcode write-objcode word-size byte-order)) -(dynamic-call "scm_init_objcodes" (dynamic-link "libguile")) +(load-extension "libguile" "scm_init_objcodes") diff --git a/module/system/vm/program.scm b/module/system/vm/program.scm index 7e4007b75..5a490b9d9 100644 --- a/module/system/vm/program.scm +++ b/module/system/vm/program.scm @@ -36,7 +36,7 @@ program-objcode program? program-objects program-module program-base program-external)) -(dynamic-call "scm_init_programs" (dynamic-link "libguile")) +(load-extension "libguile" "scm_init_programs") (define arity:nargs car) (define arity:nrest cadr) diff --git a/module/system/vm/vm.scm b/module/system/vm/vm.scm index de5c3fa21..48dc4f2b8 100644 --- a/module/system/vm/vm.scm +++ b/module/system/vm/vm.scm @@ -32,7 +32,7 @@ vm-next-hook vm-apply-hook vm-boot-hook vm-return-hook vm-break-hook vm-exit-hook vm-halt-hook vm-enter-hook)) -(dynamic-call "scm_init_vm" (dynamic-link "libguile")) +(load-extension "libguile" "scm_init_vm") (define (vms:time stat) (vector-ref stat 0)) (define (vms:clock stat) (vector-ref stat 1)) |