projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.7.7.22:
[sbcl.git]
/
src
/
compiler
/
x86
/
nlx.lisp
diff --git
a/src/compiler/x86/nlx.lisp
b/src/compiler/x86/nlx.lisp
index
42dd906
..
a58827f
100644
(file)
--- a/
src/compiler/x86/nlx.lisp
+++ b/
src/compiler/x86/nlx.lisp
@@
-31,35
+31,32
@@
;;;;
;;;; These VOPs are used in the reentered function to restore the
;;;; appropriate dynamic environment. Currently we only save the
;;;;
;;;; These VOPs are used in the reentered function to restore the
;;;; appropriate dynamic environment. Currently we only save the
-;;;; Current-Catch, the eval stack pointer, and the alien stack
-;;;; pointer.
+;;;; Current-Catch and the alien stack pointer. (Before sbcl-0.7.0,
+;;;; when there were IR1 and byte interpreters, we had to save
+;;;; the interpreter "eval stack" too.)
;;;;
;;;;
-;;;; We don't need to save/restore the current unwind-protect, since
-;;;; unwind-protects are implicitly processed during unwinding.
+;;;; We don't need to save/restore the current UNWIND-PROTECT, since
+;;;; UNWIND-PROTECTs are implicitly processed during unwinding.
;;;;
;;;; We don't need to save the BSP, because that is handled automatically.
;;;;
;;;; We don't need to save the BSP, because that is handled automatically.
-;;; Return a list of TNs that can be used to snapshot the dynamic state for
-;;; use with the Save/Restore-Dynamic-Environment VOPs.
+;;; Return a list of TNs that can be used to snapshot the dynamic
+;;; state for use with the SAVE- and RESTORE-DYNAMIC-ENVIRONMENT VOPs.
(!def-vm-support-routine make-dynamic-state-tns ()
(make-n-tns 3 *backend-t-primitive-type*))
(define-vop (save-dynamic-state)
(:results (catch :scs (descriptor-reg))
(!def-vm-support-routine make-dynamic-state-tns ()
(make-n-tns 3 *backend-t-primitive-type*))
(define-vop (save-dynamic-state)
(:results (catch :scs (descriptor-reg))
- (eval :scs (descriptor-reg))
(alien-stack :scs (descriptor-reg)))
(:generator 13
(load-symbol-value catch *current-catch-block*)
(alien-stack :scs (descriptor-reg)))
(:generator 13
(load-symbol-value catch *current-catch-block*)
- (load-symbol-value eval *eval-stack-top*)
(load-symbol-value alien-stack *alien-stack*)))
(define-vop (restore-dynamic-state)
(:args (catch :scs (descriptor-reg))
(load-symbol-value alien-stack *alien-stack*)))
(define-vop (restore-dynamic-state)
(:args (catch :scs (descriptor-reg))
- (eval :scs (descriptor-reg))
(alien-stack :scs (descriptor-reg)))
(:generator 10
(store-symbol-value catch *current-catch-block*)
(alien-stack :scs (descriptor-reg)))
(:generator 10
(store-symbol-value catch *current-catch-block*)
- (store-symbol-value eval *eval-stack-top*)
(store-symbol-value alien-stack *alien-stack*)))
(define-vop (current-stack-pointer)
(store-symbol-value alien-stack *alien-stack*)))
(define-vop (current-stack-pointer)
@@
-89,11
+86,11
@@
(storew (make-fixup nil :code-object entry-label)
block catch-block-entry-pc-slot)))
(storew (make-fixup nil :code-object entry-label)
block catch-block-entry-pc-slot)))
-;;; Like Make-Unwind-Block, except that we also store in the specified tag, and
-;;; link the block into the Current-Catch list.
+;;; like MAKE-UNWIND-BLOCK, except that we also store in the specified
+;;; tag, and link the block into the CURRENT-CATCH list
(define-vop (make-catch-block)
(:args (tn)
(define-vop (make-catch-block)
(:args (tn)
- (tag :scs (descriptor-reg) :to (:result 1)))
+ (tag :scs (any-reg descriptor-reg) :to (:result 1)))
(:info entry-label)
(:results (block :scs (any-reg)))
(:temporary (:sc descriptor-reg) temp)
(:info entry-label)
(:results (block :scs (any-reg)))
(:temporary (:sc descriptor-reg) temp)