From c6a10e82d5e15465edc284abfd9706cf1bfa49da Mon Sep 17 00:00:00 2001
From: cwang <cwang>
Date: Fri, 20 Aug 2004 22:54:06 +0000
Subject: [PATCH] clean up some code by using one sap-ref-64 instead of two
 sap-ref-32's

---
 compiler/generic/new-genesis.lisp | 28 +++++++++-------------------
 1 file changed, 9 insertions(+), 19 deletions(-)

diff --git a/compiler/generic/new-genesis.lisp b/compiler/generic/new-genesis.lisp
index 49c629973..5df92fe7f 100644
--- a/compiler/generic/new-genesis.lisp
+++ b/compiler/generic/new-genesis.lisp
@@ -4,7 +4,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.71 2004/08/04 20:29:44 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.72 2004/08/20 22:54:06 cwang Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -287,6 +287,7 @@
 
 ;;;; Stuff to read and write the core memory.
 
+;; TODO: make this work for 64-bit
 (defun maybe-byte-swap (word)
   (if (eq (c:backend-byte-order c:*native-backend*)
 	  (c:backend-byte-order c:*backend*))
@@ -326,15 +327,8 @@
 	   (setf (sap-ref-32 sap (ash index vm:word-shift))
 		 (maybe-byte-swap (logior (ash high descriptor-low-bits) low))))
 	  (64
-	   (assert (eq (c:backend-byte-order c:*backend*) :little-endian))
-	   ;; lower 32 bits
-	   (setf (sap-ref-32 sap (ash index vm:word-shift))
-		 (maybe-byte-swap (logand
-				   (logior (ash high descriptor-low-bits) low)
-				   (1- (ash 1 32)))))
-	   ;; higher 32 bits
-	   (setf (sap-ref-32 sap (+ 4 (ash index vm:word-shift)))
-		 (maybe-byte-swap (ash high (- descriptor-low-bits 32)))))))))
+	   (setf (sap-ref-64 sap (ash index vm:word-shift))
+		 (maybe-byte-swap (logior (ash high descriptor-low-bits) low))))))))
 
 (defun write-memory (address value)
   "Write VALUE (a descriptor) at ADDRESS (also a descriptor)."
@@ -344,15 +338,11 @@
 (defun read-indexed (address index)
   "Return the value (as a descriptor) INDEX words from ADDRESS (a descriptor)."
   (let* ((sap (descriptor-sap address))
-	 (value (maybe-byte-swap (sap-ref-32 sap (ash index vm:word-shift)))))
-    (ecase vm:word-bits
-      (32 (make-random-descriptor value))
-      (64
-       (assert (eq (c:backend-byte-order c:*backend*) :little-endian))
-       ;; assume little endian
-       (let ((most-significant (sap-ref-32 sap (+ 4 (ash index vm:word-shift)))))
-	 (make-random-descriptor (logior (ash most-significant 32) value)))))))
-	     
+	 (value (maybe-byte-swap
+		 (ecase vm:word-bits
+		   (32 (sap-ref-32 sap (ash index vm:word-shift)))
+		   (64 (sap-ref-64 sap (ash index vm:word-shift)))))))
+    (make-random-descriptor value)))
 
 (defun read-memory (address)
   "Return the value at ADDRESS (a descriptor)."
-- 
GitLab