Changeset 180


Ignore:
Timestamp:
Jan 3, 2004, 11:41:15 AM (21 years ago)
Author:
Gary Byers
Message:

Move FOREIGN-OBJECT-DOMAIN accessors elsewhere. Make slot accessors work
on pointer-based instances.

File:
1 edited

Legend:

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

    r168 r180  
    17081708
    17091709
    1710 (def-accessors (foreign-object-domain) %svref
    1711   nil                                   ; foreign-object-domain
    1712   foreign-object-domain-index           ; 1..n
    1713   foreign-object-domain-name            ;
    1714   foreign-object-domain-recognize       ; function: is object one of ours ?
    1715   foreign-object-domain-class-of        ; function: returns class of object
    1716   foreign-object-domain-classp          ; function: true if object is a class
    1717   foreign-object-domain-instance-class-wrapper ; function: returns wrapper of object's class
    1718   foreign-object-domain-class-own-wrapper ; function: returns class own wrapper if class
    1719   foreign-object-domain-slots-vector    ; returns slots vector of object or nil
    1720   )
     1710
    17211711
    17221712(defun make-foreign-object-domain (&key index name recognize class-of classp
     
    21622152
    21632153
     2154(declaim (inline instance-slots))
     2155(defun instance-slots (instance)
     2156  (let* ((typecode (typecode instance)))
     2157    (cond ((eql typecode ppc32::subtag-instance) (instance.slots instance))
     2158          ((eql typecode ppc32::subtag-macptr) (foreign-slots-vector instance))
     2159          (t (error "Don't know how to find slots of ~s" instance)))))
     2160
    21642161
    21652162(defmethod copy-instance ((instance standard-object))
     
    22182215                                   instance
    22192216                                   (slotd standard-effective-slot-definition))
    2220   (%std-slot-vector-value (instance.slots instance) slotd))
     2217  (%std-slot-vector-value (instance-slots instance) slotd))
    22212218
    22222219(defun %maybe-std-slot-value-using-class (class instance slotd)
     
    22262223               (instance.class-wrapper slotd))
    22272224           (eq *standard-class-wrapper* (instance.class-wrapper class)))
    2228     (%std-slot-vector-value (instance.slots instance) slotd)
     2225    (%std-slot-vector-value (instance-slots instance) slotd)
    22292226    (slot-value-using-class class instance slotd)))
    22302227
     
    22542251     instance
    22552252     (slotd standard-effective-slot-definition))
    2256   (%set-std-slot-vector-value (instance.slots instance) slotd new))
     2253  (%set-std-slot-vector-value (instance-slots instance) slotd new))
    22572254
    22582255
     
    22632260               (instance.class-wrapper slotd))
    22642261           (eq *standard-class-wrapper* (instance.class-wrapper class)))
    2265     (%set-std-slot-vector-value (instance.slots instance) slotd new)
     2262    (%set-std-slot-vector-value (instance-slots instance) slotd new)
    22662263    (setf (slot-value-using-class class instance slotd) new)))
    22672264
     
    23342331                                    instance
    23352332                                    (slotd standard-effective-slot-definition))
    2336   (%std-slot-vector-boundp (instance.slots instance) slotd))
     2333  (%std-slot-vector-boundp (instance-slots instance) slotd))
    23372334
    23382335(defmethod slot-boundp-using-class ((class funcallable-standard-class)
     
    26552652    (unless index
    26562653      (error "Unknown initialization function: ~s." (car functions)))
    2657     (let ((initvect (%svref (instance.slots class) index)))
     2654    (let ((initvect (%svref (instance-slots class) index)))
    26582655      (unless initvect
    2659         (setf (%svref (instance.slots class) index)
     2656        (setf (%svref (instance-slots class) index)
    26602657              (setq initvect (compute-initargs-vector instance class functions))))
    26612658      initvect)))
Note: See TracChangeset for help on using the changeset viewer.