Skip to content

Commit

Permalink
1.0.16.39: small lisp-side interrupt handling improvements
Browse files Browse the repository at this point in the history
 * In INVOKE-INTERRUPTION, disable interrupts before doing the interrupt
   handler bindings -- no point in making the window for recursive interrupts
   any bigger then it already is.

 * Similarly, ALLOW-WITH-INTERRUPTS only after the *STACK-TOP-HINT*
   has been computed. (Actually, the stack top hint computation should
   not be done for all interrupts, instead it would be better to add
   an argument to indicate we want to start from the interrupted frame
   to MAP-BACKTRACE.)

 * Declare the &REST argument of (FLET RUN-HANDLER) dynamic extent.
  • Loading branch information
nikodemus committed May 19, 2008
1 parent eb01bdd commit ae6e0d2
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
10 changes: 5 additions & 5 deletions src/code/target-signal.lisp
Expand Up @@ -30,8 +30,8 @@
,@body)))

(defun invoke-interruption (function)
(with-interrupt-bindings
(without-interrupts
(without-interrupts
(with-interrupt-bindings
;; Reset signal mask: the C-side handler has blocked all
;; deferrable interrupts before arranging return to lisp. This is
;; safe because we can't get a pending interrupt before we unblock
Expand All @@ -40,9 +40,8 @@
;; FIXME: Should we not reset the _entire_ mask, but just
;; restore it to the state before we got the interrupt?
(reset-signal-mask)
(allow-with-interrupts
(let ((sb!debug:*stack-top-hint* (nth-value 1 (sb!kernel:find-interrupted-name-and-frame))))
(funcall function))))))
(let ((sb!debug:*stack-top-hint* (nth-value 1 (sb!kernel:find-interrupted-name-and-frame))))
(allow-with-interrupts (funcall function))))))

(defmacro in-interruption ((&key) &body body)
#!+sb-doc
Expand Down Expand Up @@ -93,6 +92,7 @@
(declare (type (or function fixnum (member :default :ignore)) handler))
(/show0 "enable-interrupt")
(flet ((run-handler (&rest args)
(declare (dynamic-extent args))
(in-interruption ()
(apply handler args))))
(without-gcing
Expand Down
2 changes: 1 addition & 1 deletion version.lisp-expr
Expand Up @@ -17,4 +17,4 @@
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
"1.0.16.38"
"1.0.16.39"

0 comments on commit ae6e0d2

Please sign in to comment.