diff options
author | Andy Wingo <wingo@pobox.com> | 2008-09-24 11:47:25 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-09-24 11:47:25 +0200 |
commit | 7bbed5181c562f771276e93480358d6512260dbf (patch) | |
tree | a05e1bee6c993f58740efe910a1f7ac3639d2486 /libguile/vm.c | |
parent | 02b84691b274155f4528f99e90fbe39c77ed546d (diff) | |
download | guile-7bbed5181c562f771276e93480358d6512260dbf.tar.gz |
the vm is a fluid
* module/system/vm/vm.scm:
* libguile/vm.h:
* libguile/vm.c: Make the `the-vm' procedure access a fluid, `*the-vm*'.
Export that fluid from vm.h and vm.scm.
Diffstat (limited to 'libguile/vm.c')
-rw-r--r-- | libguile/vm.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libguile/vm.c b/libguile/vm.c index 3933894af..5b3f90e3a 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -259,7 +259,7 @@ vm_heapify_frames (SCM vm) scm_t_bits scm_tc16_vm; -static SCM the_vm; +SCM scm_the_vm_fluid; static SCM make_vm (void) @@ -342,7 +342,7 @@ SCM_DEFINE (scm_the_vm, "the-vm", 0, 0, 0, "") #define FUNC_NAME s_scm_the_vm { - return the_vm; + return scm_fluid_ref (scm_the_vm_fluid); } #undef FUNC_NAME @@ -628,7 +628,7 @@ SCM scm_load_compiled_with_vm (SCM file) { SCM program = scm_objcode_to_program (scm_load_objcode (file)); - return vm_run (the_vm, program, SCM_EOL); + return vm_run (scm_the_vm (), program, SCM_EOL); } void @@ -653,7 +653,9 @@ scm_bootstrap_vm (void) scm_set_smob_free (scm_tc16_vm, vm_free); scm_set_smob_apply (scm_tc16_vm, scm_vm_apply, 1, 0, 1); - the_vm = scm_permanent_object (make_vm ()); + scm_the_vm_fluid = scm_permanent_object (scm_make_fluid ()); + scm_fluid_set_x (scm_the_vm_fluid, make_vm ()); + scm_c_define ("*the-vm*", scm_the_vm_fluid); scm_c_define ("load-compiled", scm_c_make_gsubr ("load-compiled/vm", 1, 0, 0, |