From aadfe3c30a239b99a6090fbca70c53ff8f80a2a9 Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Mon, 19 Aug 1991 22:48:31 +0000
Subject: [PATCH] Don't include the binding-stack pointer in the dynamic state,
 because ir2tran now explicity deals with it (by using unbind-to-here).

---
 compiler/mips/nlx.lisp | 42 +++++++++---------------------------------
 1 file changed, 9 insertions(+), 33 deletions(-)

diff --git a/compiler/mips/nlx.lisp b/compiler/mips/nlx.lisp
index 60da26c35..cfba49536 100644
--- a/compiler/mips/nlx.lisp
+++ b/compiler/mips/nlx.lisp
@@ -7,11 +7,11 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/nlx.lisp,v 1.14 1991/02/20 15:14:53 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/nlx.lisp,v 1.15 1991/08/19 22:48:31 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/nlx.lisp,v 1.14 1991/02/20 15:14:53 ram Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/nlx.lisp,v 1.15 1991/08/19 22:48:31 wlott Exp $
 ;;;
 ;;;    This file contains the definitions of VOPs used for non-local exit
 ;;; (throw, lexical exit, etc.)
@@ -47,18 +47,16 @@
 ;;; use with the Save/Restore-Dynamic-Environment VOPs.
 ;;;
 (def-vm-support-routine make-dynamic-state-tns ()
-  (make-n-tns 5 *any-primitive-type*))
+  (make-n-tns 4 *any-primitive-type*))
 
 (define-vop (save-dynamic-state)
   (:results (catch :scs (descriptor-reg))
-	    (special :scs (descriptor-reg))
 	    (nfp :scs (descriptor-reg))
 	    (nsp :scs (descriptor-reg))
 	    (eval :scs (descriptor-reg)))
   (:vop-var vop)
   (:generator 13
     (load-symbol-value catch lisp::*current-catch-block*)
-    (move special bsp-tn)
     (let ((cur-nfp (current-nfp-tn vop)))
       (when cur-nfp
 	(move nfp cur-nfp)))
@@ -67,39 +65,17 @@
 
 (define-vop (restore-dynamic-state)
   (:args (catch :scs (descriptor-reg))
-	 (special :scs (descriptor-reg))
 	 (nfp :scs (descriptor-reg))
 	 (nsp :scs (descriptor-reg))
 	 (eval :scs (descriptor-reg)))
-  (:temporary (:scs (descriptor-reg)) symbol value)
   (:vop-var vop)
   (:generator 10
-    (let ((done (gen-label))
-	  (skip (gen-label))
-	  (loop (gen-label)))
-
-      (store-symbol-value catch lisp::*current-catch-block*)
-      (store-symbol-value eval lisp::*eval-stack-top*)
-      (let ((cur-nfp (current-nfp-tn vop)))
-	(when cur-nfp
-	  (move cur-nfp nfp)))
-      (move nsp-tn nsp)
-      
-      (inst beq special bsp-tn done)
-      (inst nop)
-
-      (emit-label loop)
-      (loadw symbol bsp-tn (- binding-symbol-slot binding-size))
-      (inst beq symbol zero-tn skip)
-      (loadw value bsp-tn (- binding-value-slot binding-size))
-      (storew value symbol vm:symbol-value-slot vm:other-pointer-type)
-      (storew zero-tn bsp-tn (- binding-symbol-slot binding-size))
-      (emit-label skip)
-      (inst addu bsp-tn bsp-tn (* -2 vm:word-bytes))
-      (inst bne bsp-tn special loop)
-      (inst nop)
-
-      (emit-label done))))
+    (store-symbol-value catch lisp::*current-catch-block*)
+    (store-symbol-value eval lisp::*eval-stack-top*)
+    (let ((cur-nfp (current-nfp-tn vop)))
+      (when cur-nfp
+	(move cur-nfp nfp)))
+    (move nsp-tn nsp)))
 
 (define-vop (current-stack-pointer)
   (:results (res :scs (any-reg descriptor-reg)))
-- 
GitLab