From bca2b40087eb8264a1ec8f4a7e50437ca520b940 Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Tue, 20 Mar 1990 00:19:03 +0000
Subject: [PATCH] Added defknowns for %array-mumble. Added %array-dimension
 vops.

---
 compiler/mips/array.lisp | 40 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/compiler/mips/array.lisp b/compiler/mips/array.lisp
index 9235e7274..d4cdb5ecf 100644
--- a/compiler/mips/array.lisp
+++ b/compiler/mips/array.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/array.lisp,v 1.3 1990/03/07 18:38:35 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/array.lisp,v 1.4 1990/03/20 00:19:03 wlott Exp $
 ;;;
 ;;;    This file contains the MIPS definitions for array operations.
 ;;;
@@ -37,6 +37,44 @@
 |#
 
 
+;;; These VOPS are automatically generated in cell.lisp
+
+(defknown lisp::%array-fill-pointer (t) fixnum (flushable))
+(defknown lisp::%array-available-elements (t) fixnum (flushable))
+(defknown lisp::%array-data-vector (t) t (flushable))
+(defknown lisp::%array-displacement (t) (or fixnum null) (flushable))
+(defknown lisp::%array-displaced-p (t) (member t nil) (flushable))
+
+(defknown ((setf lisp::%array-fill-pointer))
+	  (t fixnum) fixnum ())
+(defknown ((setf lisp::%array-available-elements))
+	  (t fixnum) fixnum ())
+(defknown ((setf lisp::%array-data-vector))
+	  (t t) t ())
+(defknown ((setf lisp::%array-displacement))
+	  (t (or fixnum null)) (or fixnum null) ())
+(defknown ((setf lisp::%array-displaced-p))
+	  (t (member t nil)) (member t nil) ())
+
+;;; Define an accessor and setter for to the dimensions.
+
+(defknown lisp::%array-dimension (t fixnum) fixnum (flushable))
+(defknown ((setf lisp::%array-dimension))
+	  (t fixnum fixnum) fixnum ())
+
+(define-vop (%array-dimension word-index-ref)
+  (:translate lisp::%array-dimension)
+  (:policy :fast-safe)
+  (:variant vm:array-dimensions-offset vm:other-pointer-type))
+
+(define-vop (set-%array-dimension word-index-set)
+  (:translate (setf lisp::%array-dimension))
+  (:policy :fast-safe)
+  (:variant vm:array-dimensions-offset vm:other-pointer-type))
+
+
+;;; Various length translations.
+
 (macrolet ((frob (type)
 	     `(define-vop (,(intern (concatenate 'simple-string
 						 "FAST-LENGTH/"
-- 
GitLab