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