diff options
author | Andy Wingo <wingo@pobox.com> | 2010-09-16 12:14:55 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-09-16 12:16:02 +0200 |
commit | c45d4d775d47bd80650e9888bf47815a03b04332 (patch) | |
tree | 69f38925f200a57d7ec3d3d487da7b5f51b50a12 /libguile/vm.c | |
parent | 7c42238610dbf5780d9aeb12ca799c83f9f6167e (diff) | |
download | guile-c45d4d775d47bd80650e9888bf47815a03b04332.tar.gz |
trim our set of vm hooks
* libguile/vm.h (SCM_VM_PUSH_CONTINUATION_HOOK)
(SCM_VM_POP_CONTINUATION_HOOK): New hooks, to replace
enter/exit/return.
(SCM_VM_BOOT_HOOK, SCM_VM_HALT_HOOK, SCM_VM_BREAK_HOOK): Remove these
useless hooks.
* libguile/vm.c (scm_vm_push_continuation_hook)
(scm_vm_pop_continuation_hook): New accessors.
* libguile/vm-i-system.c: Remove boot, halt, break, enter, exit, and
return hooks. Also remove the break instruction. Instead now when we
push a new continuation onto the stack we call PUSH_CONTINUATION_HOOK,
and when we pop via a return we call POP_CONTINUATION_HOOK. APPLY_HOOK
is now decoupled from continuation pushes and pops.
* libguile/vm-engine.h:
* libguile/vm-engine.c: Adapt for hooks.
* module/system/vm/trace.scm (vm-trace): Adapt for hooks. Also revive
the #:instructions? #t mode.
* module/system/vm/vm.scm: Adapt exports for new set of hooks.
Diffstat (limited to 'libguile/vm.c')
-rw-r--r-- | libguile/vm.c | 60 |
1 files changed, 12 insertions, 48 deletions
diff --git a/libguile/vm.c b/libguile/vm.c index 7a250d4f3..fd96d7ec6 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -668,75 +668,39 @@ SCM_DEFINE (scm_vm_fp, "vm:fp", 1, 0, 0, return vp->hooks[n]; \ } -SCM_DEFINE (scm_vm_boot_hook, "vm-boot-hook", 1, 0, 0, - (SCM vm), - "") -#define FUNC_NAME s_scm_vm_boot_hook -{ - VM_DEFINE_HOOK (SCM_VM_BOOT_HOOK); -} -#undef FUNC_NAME - -SCM_DEFINE (scm_vm_halt_hook, "vm-halt-hook", 1, 0, 0, - (SCM vm), - "") -#define FUNC_NAME s_scm_vm_halt_hook -{ - VM_DEFINE_HOOK (SCM_VM_HALT_HOOK); -} -#undef FUNC_NAME - -SCM_DEFINE (scm_vm_next_hook, "vm-next-hook", 1, 0, 0, - (SCM vm), - "") -#define FUNC_NAME s_scm_vm_next_hook -{ - VM_DEFINE_HOOK (SCM_VM_NEXT_HOOK); -} -#undef FUNC_NAME - -SCM_DEFINE (scm_vm_break_hook, "vm-break-hook", 1, 0, 0, - (SCM vm), - "") -#define FUNC_NAME s_scm_vm_break_hook -{ - VM_DEFINE_HOOK (SCM_VM_BREAK_HOOK); -} -#undef FUNC_NAME - -SCM_DEFINE (scm_vm_enter_hook, "vm-enter-hook", 1, 0, 0, +SCM_DEFINE (scm_vm_apply_hook, "vm-apply-hook", 1, 0, 0, (SCM vm), "") -#define FUNC_NAME s_scm_vm_enter_hook +#define FUNC_NAME s_scm_vm_apply_hook { - VM_DEFINE_HOOK (SCM_VM_ENTER_HOOK); + VM_DEFINE_HOOK (SCM_VM_APPLY_HOOK); } #undef FUNC_NAME -SCM_DEFINE (scm_vm_apply_hook, "vm-apply-hook", 1, 0, 0, +SCM_DEFINE (scm_vm_push_continuation_hook, "vm-push-continuation-hook", 1, 0, 0, (SCM vm), "") -#define FUNC_NAME s_scm_vm_apply_hook +#define FUNC_NAME s_scm_vm_push_continuation_hook { - VM_DEFINE_HOOK (SCM_VM_APPLY_HOOK); + VM_DEFINE_HOOK (SCM_VM_PUSH_CONTINUATION_HOOK); } #undef FUNC_NAME -SCM_DEFINE (scm_vm_exit_hook, "vm-exit-hook", 1, 0, 0, +SCM_DEFINE (scm_vm_pop_continuation_hook, "vm-pop-continuation-hook", 1, 0, 0, (SCM vm), "") -#define FUNC_NAME s_scm_vm_exit_hook +#define FUNC_NAME s_scm_vm_pop_continuation_hook { - VM_DEFINE_HOOK (SCM_VM_EXIT_HOOK); + VM_DEFINE_HOOK (SCM_VM_POP_CONTINUATION_HOOK); } #undef FUNC_NAME -SCM_DEFINE (scm_vm_return_hook, "vm-return-hook", 1, 0, 0, +SCM_DEFINE (scm_vm_next_hook, "vm-next-hook", 1, 0, 0, (SCM vm), "") -#define FUNC_NAME s_scm_vm_return_hook +#define FUNC_NAME s_scm_vm_next_hook { - VM_DEFINE_HOOK (SCM_VM_RETURN_HOOK); + VM_DEFINE_HOOK (SCM_VM_NEXT_HOOK); } #undef FUNC_NAME |