Changeset 311


Ignore:
Timestamp:
Jan 17, 2004, 7:38:58 PM (21 years ago)
Author:
Gary Byers
Message:

Define more accessors; INSTANCE-SLOTS is now used in most "early" .accessors.
Don't look at GF-AOK bit; whatever the problem with initarg caching is, that's
not the solution.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/l1-clos-boot.lisp

    r302 r311  
    2727;;; generic functions with "real", official names.
    2828
     29
     30(declaim (inline instance-slots))
     31(defun instance-slots (instance)
     32  (let* ((typecode (typecode instance)))
     33    (cond ((eql typecode ppc32::subtag-instance) (instance.slots instance))
     34          ((eql typecode ppc32::subtag-macptr) (foreign-slots-vector instance))
     35          ((typep instance 'standard-generic-function) (gf.slots instance))
     36          (t  (error "Don't know how to find slots of ~s" instance)))))
     37
    2938(defun %class-name (class)
    3039  (%class.name class))
    3140
    32 
     41(defun %class-own-wrapper (class)
     42  (%class.own-wrapper class))
     43
     44(defun (setf %class-own-wrapper) (new class)
     45  (setf (%class.own-wrapper class) new))
     46
     47(defun %class-alist (class)
     48  (if (typep class 'slots-class)
     49    (%class.alist class)))
     50
     51(defun (setf %class-alist) (new class)
     52  (if (typep class 'slots-class)
     53    (setf (%class.alist class) new)
     54    new))
    3355
    3456(defun %class-slots (class)
     
    3658    (%class.slots class)))
    3759
     60(defun (setf %class-slots) (new class)
     61  (if (typep class 'slots-class)
     62    (setf (%class.slots class) new)
     63    new))
     64
    3865(defun %class-direct-slots (class)
    3966  (if (typep class 'slots-class)
    4067    (%class.direct-slots class)))
    4168
     69(defun (setf %class-direct-slots) (new class)
     70  (if (typep class 'slots-class)
     71    (setf (%class.direct-slots class) new))
     72  new)
     73 
    4274(defun %class-direct-superclasses (class)
    4375  (%class.local-supers class))
    4476
     77(defun (setf %class-direct-superclasses) (new class)
     78  (setf (%class.local-supers class) new))
     79
    4580(defun %class-direct-subclasses (class)
    4681  (%class.subclasses class))
     82
     83(defun (setf %class-direct-subclasses) (new class)
     84  (setf (%class.subclasses class) new))
    4785
    4886(defun %class-direct-default-initargs (class)
    4987  (if (typep class 'std-class)
    5088    (%class.local-default-initargs class)))
     89
     90(defun (setf %class-direct-default-initargs) (new class)
     91  (if (typep class 'std-class)
     92    (setf (%class.local-default-initargs class) new)
     93    new))
     94 
    5195
    5296(defun %class-default-initargs (class)
     
    200244                                    &allow-other-keys)
    201245  (let* ((method
    202           (%instance-vector (%class.own-wrapper class)
     246          (%instance-vector (%class-own-wrapper class)
    203247                            qualifiers
    204248                            specializers
     
    15971641(defvar *float-class* (make-built-in-class 'float (find-class 'real)))
    15981642(defvar *double-float-class* (make-built-in-class 'double-float (find-class 'float)))
    1599 (defvar *short-float-class*  (make-built-in-class 'short-float (find-class 'float)))
     1643(defvar *single-float-class*  (make-built-in-class 'single-float (find-class 'float)))
     1644(setf (find-class 'short-float) *single-float-class*)
     1645(setf (find-class 'long-float) *double-float-class*)
     1646
    16001647(make-built-in-class 'rational (find-class 'real))
    16011648(make-built-in-class 'ratio (find-class 'rational))
     
    16081655(make-built-In-class 'signed-byte (find-class 'integer))
    16091656
    1610 (setf (find-class 'short-float) #+no-sf *double-float-class*
    1611                                 #-no-sf *short-float-class*)
    1612 (setf (find-class 'single-float) *short-float-class*)
    1613 (setf (find-class 'long-float) *double-float-class*)
    16141657
    16151658(make-built-in-class 'logical-pathname (find-class 'pathname))
    16161659
    1617 (setf (find-class 'base-char) *character-class*)
    1618 (defvar *base-char-class* *character-class*)
     1660(defvar *base-char-class* (setf (find-class 'base-char) *character-class*))
    16191661(defvar *standard-char-class* (make-built-in-class 'standard-char *base-char-class*))
     1662
     1663#+who-needs-extended-char
    16201664(make-built-in-class 'extended-char *character-class*)
    16211665
     
    19792023
    19802024(defun %class-get (class indicator &optional default)
    1981   (if (typep class 'std-class)
    1982     (let ((cell (assq indicator (%class.alist class))))
    1983       (if cell (cdr cell) default))
    1984     default))
     2025  (let ((cell (assq indicator (%class-alist class))))
     2026    (if cell (cdr cell) default)))
     2027
    19852028(defun %class-put (class indicator value)
    1986   (let ((cell (assq indicator (%class.alist class))))
     2029  (let ((cell (assq indicator (%class-alist class))))
    19872030    (if cell
    19882031      (setf (cdr cell) value)
    1989       (push (cons indicator value) (%class.alist class))))
     2032      (push (cons indicator value) (%class-alist class))))
    19902033  value)
    19912034 
    19922035(defsetf %class-get %class-put)
    19932036(defun %class-remprop (class indicator)
    1994   (let* ((handle (cons nil (%class.alist class)))
     2037  (let* ((handle (cons nil (%class-alist class)))
    19952038         (last handle))
    19962039    (declare (dynamic-extent handle))
     
    19992042        (progn
    20002043          (setf (%cdr last) (%cddr last))
    2001           (setf (%class.alist class) (%cdr handle)))
     2044          (setf (%class-alist class) (%cdr handle)))
    20022045        (setf last (%cdr last))))))   
    20032046
     
    21692212
    21702213
    2171 (declaim (inline instance-slots))
    2172 (defun instance-slots (instance)
    2173   (let* ((typecode (typecode instance)))
    2174     (cond ((eql typecode ppc32::subtag-instance) (instance.slots instance))
    2175           ((eql typecode ppc32::subtag-macptr) (foreign-slots-vector instance))
    2176           (t (error "Don't know how to find slots of ~s" instance)))))
    21772214
    21782215
     
    23832420(defun slot-id-value (instance slot-id)
    23842421  (let* ((wrapper (or (standard-object-p instance)
    2385                     (%class.own-wrapper (class-of instance)))))
     2422                    (%class-own-wrapper (class-of instance)))))
    23862423    (funcall (%wrapper-slot-id-value wrapper) instance slot-id)))
    23872424
    23882425(defun set-slot-id-value (instance slot-id value)
    23892426  (let* ((wrapper (or (standard-object-p instance)
    2390                     (%class.own-wrapper (class-of instance)))))
     2427                    (%class-own-wrapper (class-of instance)))))
    23912428    (funcall (%wrapper-set-slot-id-value wrapper) instance slot-id value)))
    23922429
     
    24322469
    24332470(defmethod make-instances-obsolete ((class standard-class))
    2434   (let ((wrapper (%class.own-wrapper class)))
     2471  (let ((wrapper (%class-own-wrapper class)))
    24352472    (when wrapper
    2436       (setf (%class.own-wrapper class) nil)
     2473      (setf (%class-own-wrapper class) nil)
    24372474      (make-wrapper-obsolete wrapper)))
    24382475  class)
     
    24412478  (let ((wrapper (%class.own-wrapper class)))
    24422479    (when wrapper
    2443       (setf (%class.own-wrapper class) nil)
     2480      (setf (%class-own-wrapper class) nil)
    24442481      (make-wrapper-obsolete wrapper)))
    24452482  class)
     
    26912728        (cpl (%inited-class-cpl class)))
    26922729    (dolist (f functions)         ; for all the functions passed
     2730      #+no
    26932731      (if (logbitp $lfbits-aok-bit (lfun-bits f))
    26942732        (return-from compute-initargs-vector t))
Note: See TracChangeset for help on using the changeset viewer.