diff options
author | Andy Wingo <wingo@pobox.com> | 2013-11-21 18:33:06 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-11-21 18:33:06 +0100 |
commit | 3506b1521e168a6fd7fb15e07e4eb950393b4fa8 (patch) | |
tree | 34b08cf757b10c852664705e8f1e0adf73bfa2a7 | |
parent | e7f9ababe0532c9b086ffa6b3825d0dafc9364bc (diff) | |
download | guile-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.c | 2 | ||||
-rw-r--r-- | libguile/threads.h | 2 | ||||
-rw-r--r-- | libguile/vm.c | 11 |
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 */ |