mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-16 16:50:21 +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:
parent
845952664b
commit
60ae5ca2a3
11 changed files with 19 additions and 6 deletions
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue