summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-09-14 09:28:36 +0200
committerAndy Wingo <wingo@pobox.com>2018-09-14 09:34:31 +0200
commit0ccd2d0d9ed6b4e233b0cad99d66d57e99ea99c6 (patch)
treeddd8384ce6b3ffcc510e490ffc1dff4c910b3ee7 /libguile/vm-engine.c
parentbf31fe4cf6d75c96cc4ef29fea8808dd539da361 (diff)
downloadguile-0ccd2d0d9ed6b4e233b0cad99d66d57e99ea99c6.tar.gz
Remove hook intrinsics: hooks are just for the VM
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Remove VM hook intrinsics, now that we're going to rely on the interpreter for stepping and breakpoints. * libguile/jit.c (struct scm_jit_state): Remove "hooks_enabled" member, now that we won't JIT. Remove all code related to calling hooks. * libguile/vm-engine.c (RUN_HOOK): Call hooks directly instead of through intrinsics. Use precise per-hook enable flags. * libguile/vm.c (DEFINE_INVOKE_HOOK): New helper. Use to define the hook invokers.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r--libguile/vm-engine.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 2d9be38ab..7ce306caa 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -110,23 +110,23 @@
#endif
#if VM_USE_HOOKS
-#define RUN_HOOK(h) \
- do { \
- if (SCM_UNLIKELY (VP->trace_level)) \
- { \
- SYNC_IP (); \
- CALL_INTRINSIC (invoke_##h##_hook, (thread)); \
- CACHE_SP (); \
- } \
+#define RUN_HOOK(H, h) \
+ do { \
+ if (SCM_UNLIKELY (VP->hooks_enabled[SCM_VM_##H##_HOOK])) \
+ { \
+ SYNC_IP (); \
+ invoke_##h##_hook (thread); \
+ CACHE_SP (); \
+ } \
} while (0)
#else
-#define RUN_HOOK(h)
+#define RUN_HOOK(H, h)
#endif
-#define APPLY_HOOK() RUN_HOOK (apply)
-#define RETURN_HOOK() RUN_HOOK (return)
-#define NEXT_HOOK() RUN_HOOK (next)
-#define ABORT_HOOK() RUN_HOOK (abort)
+#define APPLY_HOOK() RUN_HOOK (APPLY, apply)
+#define RETURN_HOOK() RUN_HOOK (RETURN, return)
+#define NEXT_HOOK() RUN_HOOK (NEXT, next)
+#define ABORT_HOOK() RUN_HOOK (ABORT, abort)