diff --git a/compiler/sparc/nlx.lisp b/compiler/sparc/nlx.lisp index f3a7b49dddce495d8582decede91f5aa51f7c3a3..9b62a377bf45b9f9e67a8f2359f48ee368dfe654 100644 --- a/compiler/sparc/nlx.lisp +++ b/compiler/sparc/nlx.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/nlx.lisp,v 1.3 1991/01/20 22:46:52 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/nlx.lisp,v 1.4 1991/08/31 22:11:00 wlott Exp $ ;;; ;;; This file contains the definitions of VOPs used for non-local exit ;;; (throw, lexical exit, etc.) @@ -43,18 +43,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))) @@ -63,42 +61,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 cmp special bsp-tn) - (inst b :eq done) - (inst nop) - - (emit-label loop) - (loadw symbol bsp-tn (- binding-symbol-slot binding-size)) - (inst cmp symbol) - (inst b :eq 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 add bsp-tn bsp-tn (* -2 vm:word-bytes)) - (inst cmp bsp-tn special) - (inst b :ne 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)))