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