summaryrefslogtreecommitdiff
path: root/libguile/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/vm.c')
-rw-r--r--libguile/vm.c10
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,