From eabd5819a8b42fe92294def96111d76bc3124a53 Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Tue, 15 May 1990 01:21:52 +0000
Subject: [PATCH] Added primitive-translator for byte-blt that dispatches on
 the types of the arguments and calls the correct copy bit-basher.

---
 compiler/generic/vm-tran.lisp | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/compiler/generic/vm-tran.lisp b/compiler/generic/vm-tran.lisp
index a4fe7371e..0bf715ce0 100644
--- a/compiler/generic/vm-tran.lisp
+++ b/compiler/generic/vm-tran.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-tran.lisp,v 1.7 1990/04/29 23:53:52 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-tran.lisp,v 1.8 1990/05/15 01:21:52 wlott Exp $
 ;;;
 ;;;    This file contains impelemtentation-dependent transforms.
 ;;;
@@ -233,3 +233,27 @@
 	 ,@(forms)
 	 res))))
 
+
+;;;; Primitive translator for byte-blt
+
+
+(def-primitive-translator byte-blt (src src-start dst dst-start dst-end)
+  `(let ((src ,src)
+	 (src-start (* ,src-start vm:byte-bits))
+	 (dst ,dst)
+	 (dst-start (* ,dst-start vm:byte-bits))
+	 (dst-end (* ,dst-end vm:byte-bits)))
+     (let ((length (- dst-end dst-start)))
+       (etypecase src
+	 (system-area-pointer
+	  (etypecase dst
+	    (system-area-pointer
+	     (system-area-copy src src-start dst dst-start length))
+	    ((simple-unboxed-array (*))
+	     (copy-from-system-area src src-start dst dst-start length))))
+	 ((simple-unboxed-array (*))
+	  (etypecase dst
+	    (system-area-pointer
+	     (copy-to-system-area src src-start dst dst-start length))
+	    ((simple-unboxed-array (*))
+	     (bit-bash-copy src src-start dst dst-start length))))))))
-- 
GitLab