Changeset 7900


Ignore:
Timestamp:
Dec 12, 2007, 8:24:17 PM (13 years ago)
Author:
gb
Message:

Don't generate (often bad ...) typechecks in in the optimized MAKE-INSTANCE
fuctions if CCL::*TYPECHECK-SLOTS-IN-OPTIMIZED-MAKE-INSTANCE* is false.

Define CCL::*TYPECHECK-SLOTS-IN-OPTIMIZED-MAKE-INSTANCE*; default it to NIL.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/level-1/l1-clos.lisp

    r7889 r7900  
    20202020        ;; :around or :before methods, give up
    20212021        (values nil nil)))))
    2022              
     2022
     2023(defparameter *typecheck-slots-in-optimized-make-instance* nil)
     2024
    20232025
    20242026;;; Return a lambda form or NIL.
     
    20472049                  (forms))
    20482050          (flet ((generate-type-check (form type &optional spvar)
    2049                    (let* ((ctype (ignore-errors (specifier-type type))))
    2050                      (if (or (null ctype)
    2051                              (eq ctype *universal-type*)
    2052                              (typep ctype 'unknown-ctype))
    2053                        form
    2054                        (if spvar
    2055                          `(if ,spvar
    2056                            (require-type ,form ',type)
    2057                            (%slot-unbound-marker))
    2058                          `(require-type ,form ',type))))))
     2051                   (if (null *typecheck-slots-in-optimized-make-instance*)
     2052                     form
     2053                     (let* ((ctype (ignore-errors (specifier-type type))))
     2054                       (if (or (null ctype)
     2055                               (eq ctype *universal-type*)
     2056                               (typep ctype 'unknown-ctype))
     2057                         form
     2058                         (if spvar
     2059                           `(if ,spvar
     2060                             (require-type ,form ',type)
     2061                             (%slot-unbound-marker))
     2062                           `(require-type ,form ',type)))))))
    20592063            (dolist (slot slotds)
    20602064              (let* ((initarg (car (slot-definition-initargs slot)))
Note: See TracChangeset for help on using the changeset viewer.