1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 01:00:20 +02:00

frame, program, objcode, etc inits use load-extension

* libguile/extensions.h: Define a scm_t_extension_init_func.

* libguile/frames.c:
* libguile/instructions.c:
* libguile/objcodes.c:
* libguile/programs.c:
* libguile/vm.c: Register extension init funcs. Should play nicer with a
  static Guile, in addition to working on Darwin with non-default
  installation prefixes without munging DYLD_LIBRARY_PATH.

* module/system/vm/frame.scm:
* module/system/vm/instruction.scm:
* module/system/vm/objcode.scm:
* module/system/vm/program.scm:
* module/system/vm/vm.scm: Use load-extension.
This commit is contained in:
Andy Wingo 2009-03-27 18:40:15 -07:00
parent 845952664b
commit 60ae5ca2a3
11 changed files with 19 additions and 6 deletions

View file

@ -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, SCM_API void scm_c_register_extension (const char *lib, const char *init,
void (*func) (void *), void *data); void (*func) (void *), void *data);

View file

@ -297,6 +297,8 @@ scm_bootstrap_frames (void)
scm_set_smob_mark (scm_tc16_vm_frame, vm_frame_mark); 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_free (scm_tc16_vm_frame, vm_frame_free);
scm_set_smob_print (scm_tc16_vm_frame, vm_frame_print); 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 void

View file

@ -215,6 +215,9 @@ SCM_DEFINE (scm_opcode_to_instruction, "opcode->instruction", 1, 0, 0,
void void
scm_bootstrap_instructions (void) scm_bootstrap_instructions (void)
{ {
scm_c_register_extension ("libguile", "scm_init_instructions",
(scm_t_extension_init_func)scm_init_instructions,
NULL);
} }
void void

View file

@ -266,6 +266,8 @@ scm_bootstrap_objcodes (void)
{ {
scm_tc16_objcode = scm_make_smob_type ("objcode", 0); scm_tc16_objcode = scm_make_smob_type ("objcode", 0);
scm_set_smob_mark (scm_tc16_objcode, objcode_mark); 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 /* Before, we used __BYTE_ORDER, but that is not defined on all

View file

@ -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_1 = program_apply_1;
scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_2 = program_apply_2; scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_2 = program_apply_2;
scm_set_smob_print (scm_tc16_program, program_print); 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 void

View file

@ -662,6 +662,9 @@ scm_bootstrap_vm (void)
sym_vm_error = scm_permanent_object (scm_from_locale_symbol ("vm-error")); sym_vm_error = scm_permanent_object (scm_from_locale_symbol ("vm-error"));
sym_debug = scm_permanent_object (scm_from_locale_symbol ("debug")); 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; strappage = 1;
} }

View file

@ -42,8 +42,7 @@
frame-return-address frame-program frame-return-address frame-program
frame-dynamic-link heap-frame?)) frame-dynamic-link heap-frame?))
;; fixme: avoid the dynamic-call? (load-extension "libguile" "scm_init_frames")
(dynamic-call "scm_init_frames" (dynamic-link "libguile"))
;;; ;;;
;;; Frame chain ;;; Frame chain

View file

@ -25,4 +25,4 @@
instruction-pops instruction-pushes instruction-pops instruction-pushes
instruction->opcode opcode->instruction)) instruction->opcode opcode->instruction))
(dynamic-call "scm_init_instructions" (dynamic-link "libguile")) (load-extension "libguile" "scm_init_instructions")

View file

@ -25,4 +25,4 @@
load-objcode write-objcode load-objcode write-objcode
word-size byte-order)) word-size byte-order))
(dynamic-call "scm_init_objcodes" (dynamic-link "libguile")) (load-extension "libguile" "scm_init_objcodes")

View file

@ -36,7 +36,7 @@
program-objcode program? program-objects program-objcode program? program-objects
program-module program-base program-external)) 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:nargs car)
(define arity:nrest cadr) (define arity:nrest cadr)

View file

@ -32,7 +32,7 @@
vm-next-hook vm-apply-hook vm-boot-hook vm-return-hook vm-next-hook vm-apply-hook vm-boot-hook vm-return-hook
vm-break-hook vm-exit-hook vm-halt-hook vm-enter-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:time stat) (vector-ref stat 0))
(define (vms:clock stat) (vector-ref stat 1)) (define (vms:clock stat) (vector-ref stat 1))