guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 25/25: Save VM compare result before calling out to hook


From: Andy Wingo
Subject: [Guile-commits] 25/25: Save VM compare result before calling out to hooks
Date: Mon, 8 Jan 2018 09:25:05 -0500 (EST)

wingo pushed a commit to branch master
in repository guile.

commit e2a06249ef08889d7e97f9487561a81bc2321e9e
Author: Andy Wingo <address@hidden>
Date:   Mon Jan 8 15:19:55 2018 +0100

    Save VM compare result before calling out to hooks
    
    * libguile/vm.c (vm_dispatch_hook): Save the compare result before
      calling out to the hook.  This only really matters for the "next"
      hook, which can be called between a compare and its corresponding
      branch instruction.
---
 libguile/vm.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libguile/vm.c b/libguile/vm.c
index feed5c8..5292055 100644
--- a/libguile/vm.c
+++ b/libguile/vm.c
@@ -238,6 +238,7 @@ vm_dispatch_hook (struct scm_vm *vp, int hook_num,
   struct scm_frame c_frame;
   scm_t_cell *frame;
   int saved_trace_level;
+  scm_t_uint8 saved_compare_result;
 
   hook = vp->hooks[hook_num];
 
@@ -248,6 +249,8 @@ vm_dispatch_hook (struct scm_vm *vp, int hook_num,
   saved_trace_level = vp->trace_level;
   vp->trace_level = 0;
 
+  saved_compare_result = vp->compare_result;
+
   /* Allocate a frame object on the stack.  This is more efficient than calling
      `scm_c_make_frame ()' to allocate on the heap, but it forces hooks to not
      capture frame objects.
@@ -293,6 +296,7 @@ vm_dispatch_hook (struct scm_vm *vp, int hook_num,
       scm_c_run_hook (hook, scm_cons (SCM_PACK_POINTER (frame), args));
     }
 
+  vp->compare_result = saved_compare_result;
   vp->trace_level = saved_trace_level;
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]