Changeset 9134


Ignore:
Timestamp:
Apr 11, 2008, 6:26:42 PM (11 years ago)
Author:
gz
Message:

Propagate r9131 to trunk

Location:
trunk/source/level-1
Files:
3 edited

Legend:

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

    r9049 r9134  
    10531053
    10541054           
    1055 (defparameter dcode-proto-alist
    1056   (list (cons #'%%one-arg-dcode *gf-proto-one-arg*)
    1057         (cons #'%%1st-two-arg-dcode *gf-proto-two-arg*)))
    1058    
    10591055(defun compute-dcode (gf &optional dt)
    10601056  (setq gf (require-type gf 'standard-generic-function))
  • trunk/source/level-1/l1-clos.lisp

    r8909 r9134  
    18101810      (%slot-ref (instance.slots instance) location)
    18111811      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
     1812(register-dcode-proto #'singleton-reader-dcode *gf-proto-one-arg*)
    18121813
    18131814;;; Dcode for a GF whose methods are all reader-methods which access a
     
    18231824      (%slot-ref (instance.slots instance) location)
    18241825      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
     1826(register-dcode-proto #'reader-constant-location-dcode *gf-proto-one-arg*)
    18251827
    18261828;;; Dcode for a GF whose methods are all reader-methods which access a
     
    18391841      (%slot-ref (instance.slots instance) location)
    18401842      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
     1843(register-dcode-proto #'reader-constant-location-inherited-from-single-class-dcode *gf-proto-one-arg*)
    18411844
    18421845;;; Dcode for a GF whose methods are all reader-methods which access a
     
    18551858      (%slot-ref (instance.slots instance) location)
    18561859      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
     1860(register-dcode-proto #'reader-constant-location-inherited-from-multiple-classes-dcode *gf-proto-one-arg*)
    18571861
    18581862
     
    18701874      (%slot-ref (instance.slots instance) location)
    18711875      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
     1876(register-dcode-proto #'reader-variable-location-dcode *gf-proto-one-arg*)
    18721877
    18731878(defun class-and-slot-location-alist (classes slot-name)
     
    19941999      (funcall mf arg1 arg2)
    19952000      (%%1st-two-arg-dcode dt arg1 arg2))))
     2001(register-dcode-proto #'reader-variable-location-dcode *gf-proto-two-arg*)
    19962002
    19972003(defun %%one-arg-eql-method-hack-dcode (dt arg)
     
    19992005    (if mf
    20002006      (funcall mf arg))))
     2007(register-dcode-proto #'%%one-arg-eql-method-hack-dcode *gf-proto-one-arg*)
    20012008
    20022009(defun install-eql-method-hack-dcode (gf)
  • trunk/source/level-1/l1-dcode.lisp

    r8667 r9134  
    781781;;;;;;;;;;;;;;;;;;;;;;;;; generic-function dcode ;;;;;;;;;;;;;;;;;;;;;;;;;;;
    782782
     783;; dcode functions using other than *gf-proto*
     784(defparameter dcode-proto-alist ())
     785
     786(defun register-dcode-proto (dcode proto)
     787  (let ((a (assoc dcode dcode-proto-alist)))
     788    (if a
     789      (setf (cdr a) proto)
     790      (push (cons dcode proto) dcode-proto-alist))))
     791
     792
    783793;;; Simple case for generic-functions with no specializers
    784794;;; Why anyone would want to do this I can't imagine.
     
    817827  (let ((method (%find-1st-arg-combined-method dt arg)))
    818828    (funcall method arg)))
     829(register-dcode-proto #'%%one-arg-dcode *gf-proto-one-arg*)
    819830
    820831;;; two args - specialized on first
     
    822833  (let ((method (%find-1st-arg-combined-method dt arg1)))
    823834    (funcall method arg1 arg2)))
    824 
     835(register-dcode-proto #'%%1st-two-arg-dcode *gf-proto-two-arg*)
    825836
    826837
Note: See TracChangeset for help on using the changeset viewer.