summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-11-21 18:33:06 +0100
committerAndy Wingo <wingo@pobox.com>2013-11-21 18:33:06 +0100
commit3506b1521e168a6fd7fb15e07e4eb950393b4fa8 (patch)
tree34b08cf757b10c852664705e8f1e0adf73bfa2a7
parente7f9ababe0532c9b086ffa6b3825d0dafc9364bc (diff)
downloadguile-3506b1521e168a6fd7fb15e07e4eb950393b4fa8.tar.gz
Remove last use of SCM vm
* libguile/threads.h (scm_i_thread): Hold a struct scm_vm*, not a SCM vm. * libguile/threads.c (guilify_self_2): * libguile/vm.c (make_vm): Adapt.
-rw-r--r--libguile/threads.c2
-rw-r--r--libguile/threads.h2
-rw-r--r--libguile/vm.c11
3 files changed, 8 insertions, 7 deletions
diff --git a/libguile/threads.c b/libguile/threads.c
index 99582cca0..994cf2c9f 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -614,7 +614,7 @@ guilify_self_2 (SCM parent)
t->continuation_root = scm_cons (t->handle, SCM_EOL);
t->continuation_base = t->base;
- t->vm = SCM_BOOL_F;
+ t->vp = NULL;
if (scm_is_true (parent))
t->dynamic_state = scm_make_dynamic_state (parent);
diff --git a/libguile/threads.h b/libguile/threads.h
index 147e36dd8..3b67aacd4 100644
--- a/libguile/threads.h
+++ b/libguile/threads.h
@@ -110,7 +110,7 @@ typedef struct scm_i_thread {
SCM_STACKITEM *continuation_base;
/* For keeping track of the stack and registers. */
- SCM vm;
+ struct scm_vm *vp;
SCM_STACKITEM *base;
scm_i_jmp_buf regs;
#ifdef __ia64__
diff --git a/libguile/vm.c b/libguile/vm.c
index 284f38259..8ad1d94ee 100644
--- a/libguile/vm.c
+++ b/libguile/vm.c
@@ -748,7 +748,7 @@ static int vm_stack_gc_kind;
#endif
-static SCM
+static struct scm_vm *
make_vm (void)
#define FUNC_NAME "make_vm"
{
@@ -781,7 +781,8 @@ make_vm (void)
vp->trace_level = 0;
for (i = 0; i < SCM_VM_NUM_HOOKS; i++)
vp->hooks[i] = SCM_BOOL_F;
- return scm_cell (scm_tc7_vm, (scm_t_bits)vp);
+
+ return vp;
}
#undef FUNC_NAME
@@ -829,10 +830,10 @@ scm_the_vm (void)
{
scm_i_thread *t = SCM_I_CURRENT_THREAD;
- if (SCM_UNLIKELY (scm_is_false (t->vm)))
- t->vm = make_vm ();
+ if (SCM_UNLIKELY (!t->vp))
+ t->vp = make_vm ();
- return SCM_VM_DATA (t->vm);
+ return t->vp;
}
/* Scheme interface */