From 276f86d7b6ca6586cebfd2f96904f2d23224bc86 Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Wed, 19 May 1993 11:16:52 +0000 Subject: [PATCH] Fixed sxhash-simple-{sub,}string to save the return address on the non-gengc system. --- assembly/mips/array.lisp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/assembly/mips/array.lisp b/assembly/mips/array.lisp index 4c4e6be91..856370d34 100644 --- a/assembly/mips/array.lisp +++ b/assembly/mips/array.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/array.lisp,v 1.21 1993/05/18 23:24:13 wlott Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/array.lisp,v 1.22 1993/05/19 11:16:52 wlott Exp $") ;;; ;;; ********************************************************************** ;;; @@ -60,10 +60,12 @@ (:temp lip interior-reg lip-offset) (:temp accum non-descriptor-reg nl0-offset) (:temp data non-descriptor-reg nl1-offset) - (:temp byte non-descriptor-reg nl2-offset)) + (:temp byte non-descriptor-reg nl2-offset) + #-gengc + (:temp retaddr non-descriptor-reg nl3-offset)) ;; These are needed after we jump into sxhash-simple-substring. - (progn result lip accum data byte) + (progn result lip accum data byte #-gengc retaddr) (inst j (make-fixup 'sxhash-simple-substring :assembly-routine)) (loadw length string vector-length-slot other-pointer-type)) @@ -80,7 +82,13 @@ (:temp lip interior-reg lip-offset) (:temp accum non-descriptor-reg nl0-offset) (:temp data non-descriptor-reg nl1-offset) - (:temp byte non-descriptor-reg nl2-offset)) + (:temp byte non-descriptor-reg nl2-offset) + #-gengc + (:temp retaddr non-descriptor-reg nl3-offset)) + + ;; Save the return address + #-gengc (inst subu retaddr lip code-tn) + ;; Get a pointer to the data. (inst addu lip string (- (* vector-data-offset word-bytes) other-pointer-type)) @@ -159,4 +167,7 @@ done (inst sll result accum 5) - (inst srl result result 3)) + (inst srl result result 3) + + ;; Restore the return address. + #-gengc (inst addu lip code-tn retaddr)) -- GitLab