From 1d23f0084d57329dd8af85895b54b03c1a5ba8dd Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Tue, 20 Feb 1990 16:04:50 +0000
Subject: [PATCH] Added other structs (bignum, complex, ratio, etc).

---
 compiler/mips/cell.lisp | 91 +++++++++++++++++++++++++++--------------
 1 file changed, 60 insertions(+), 31 deletions(-)

diff --git a/compiler/mips/cell.lisp b/compiler/mips/cell.lisp
index efbf473aa..17b4ba170 100644
--- a/compiler/mips/cell.lisp
+++ b/compiler/mips/cell.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/cell.lisp,v 1.7 1990/02/18 06:00:27 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/cell.lisp,v 1.8 1990/02/20 16:04:50 wlott Exp $
 ;;;
 ;;;    This file contains the VM definition of various primitive memory access
 ;;; VOPs for the MIPS.
@@ -21,16 +21,23 @@
 
 (export '(cons-structure cons-size cons-car-slot cons-cdr-slot
 
-	  symbol-structure symbol-size symbol-value-slot
-	  symbol-function-slot symbol-plist-slot symbol-name-slot
-	  symbol-package-slot
+	  bignum-structure bignum-size bignum-digits-offset
 
-	  vector-structure vector-length-slot vector-data-offset
+	  ratio-structure ratio-size ratio-numerator-slot
+	  ratio-denominator-slot
+
+	  single-float-structure single-float-size single-float-value-slot
+
+	  double-float-structure double-float-size double-float-value-slot
+
+	  complex-structure complex-size complex-real-slot complex-imag-slot
 
 	  array-structure array-fill-pointer-slot array-elements-slot
 	  array-data-slot array-displacement-slot array-displaced-p-slot
 	  array-dimensions-offset
 
+	  vector-structure vector-length-slot vector-data-offset
+
 	  code-structure code-code-size-slot code-entry-points-slot
 	  code-debug-info-slot code-constants-offset
 
@@ -39,7 +46,14 @@
 	  function-header-arglist-slot function-header-type-slot
 	  function-header-code-offset
 
-	  closure-structure closure-function-slot closure-info-offset))
+	  return-pc-structure return-pc-return-point-offset
+
+	  closure-structure closure-function-slot closure-info-offset
+
+	  symbol-structure symbol-size symbol-value-slot
+	  symbol-function-slot symbol-plist-slot symbol-name-slot
+	  symbol-package-slot))
+
 
 (in-package "C")
 
@@ -99,7 +113,9 @@
 						(string name)
 						"-SIZE"))
 	       ,index
-	       ,(format nil "Number of slots used by each ~S." name))
+	       ,(format nil
+		  "Number of slots used by each ~S~@[ including the header~]."
+		  name header))
 	    compile-time))
     `(progn
        (eval-when (compile load eval)
@@ -117,19 +133,23 @@
        :set-vop set-cdr :set-trans %rplacd))
 
 
-(defslots (symbol :lowtag other-pointer-type)
-  (value :set-vop set :set-trans set)
-  (function :set-vop set-symbol-function :set-trans %sp-set-definition)
-  (plist :ref-vop symbol-plist :ref-trans symbol-plist
-	 :set-vop set-symbol-plist :set-trans %sp-set-plist)
-  (name :ref-vop symbol-name :ref-trans symbol-name)
-  (package :ref-vop symbol-package :ref-trans symbol-package
-	   :set-vop set-package))
+(defslots (bignum :lowtag other-pointer-type)
+  (digits :rest t :boxed nil))
 
+(defslots (ratio :lowtag other-pointer-type)
+  numerator
+  denominator)
 
-(defslots (vector :lowtag other-pointer-type)
-  length
-  (data :rest t :boxed nil))
+(defslots (single-float :lowtag other-pointer-type)
+  value)
+
+(defslots (double-float :lowtag other-pointer-type)
+  value
+  more-value)
+
+(defslots (complex :lowtag other-pointer-type)
+  real
+  imag)
 
 (defslots (array :lowtag other-pointer-type)
   fill-pointer
@@ -139,6 +159,10 @@
   displaced-p
   (dimensions :rest t))
 
+(defslots (vector :lowtag other-pointer-type)
+  length
+  (data :rest t :boxed nil))
+
 (defslots (code :lowtag other-pointer-type)
   code-size
   entry-points
@@ -153,10 +177,22 @@
   type
   (code :rest t :boxed nil))
 
+(defslots (return-pc :lowtag other-pointer-type)
+  (return-point :boxed nil :rest t))
+
 (defslots (closure :lowtag function-pointer-type)
   function
   (info :rest t))
 
+(defslots (symbol :lowtag other-pointer-type)
+  (value :set-vop set :set-trans set)
+  (function :set-vop set-symbol-function :set-trans %sp-set-definition)
+  (plist :ref-vop symbol-plist :ref-trans symbol-plist
+	 :set-vop set-symbol-plist :set-trans %sp-set-plist)
+  (name :ref-vop symbol-name :ref-trans symbol-name)
+  (package :ref-vop symbol-package :ref-trans symbol-package
+	   :set-vop set-package))
+
 
 
 
@@ -178,10 +214,10 @@
 ;;;
 (define-vop (symbol-value checked-cell-ref)
   (:translate symbol-value)
+  #+nil
   (:generator 9
     (move obj-temp object)
     (loadw value obj-temp symbol-value-slot)
-    #+nil
     (let ((err-lab (generate-error-code node clc::error-symbol-unbound
 					obj-temp)))
       (test-special-value value temp '%trap-object err-lab nil))))
@@ -191,10 +227,10 @@
 ;;;
 (define-vop (symbol-function checked-cell-ref)
   (:translate symbol-function)
+  #+nil
   (:generator 10
     (move obj-temp object)
     (loadw value obj-temp symbol-function-slot)
-    #+nil
     (let ((err-lab (generate-error-code node clc::error-symbol-undefined
 					obj-temp)))
       (test-simple-type value temp err-lab t system:%function-type))))
@@ -238,12 +274,12 @@
 
 
 (define-vop (fast-symbol-value cell-ref)
-  (:variant symbol-value-slot other-pointer-type)
+  (:variant vm:symbol-value-slot vm:other-pointer-type)
   (:policy :fast)
   (:translate symbol-value))
 
 (define-vop (fast-symbol-function cell-ref)
-  (:variant symbol-function-slot other-pointer-type)
+  (:variant vm:symbol-function-slot vm:other-pointer-type)
   (:policy :fast)
   (:translate symbol-function))
 
@@ -254,11 +290,6 @@
 #+nil
 (define-miscop unbind (num) :results ())
 
-
-;;;; List hackery:
-
-#+nil
-(define-miscop cons (x y) :translate cons)
 
 
 ;;;; Value cell and closure hackery:
@@ -286,10 +317,8 @@
 
 ;;;; Structure hackery:
 
-#+nil
 (define-vop (structure-ref slot-ref)
-  (:variant vector-header-length other-pointer-type))
+  (:variant vm:vector-data-offset vm:other-pointer-type))
 
-#+nil
 (define-vop (structure-set slot-set)
-  (:variant vector-header-length other-pointer-type))
+  (:variant vm:vector-data-offset vm:other-pointer-type))
-- 
GitLab