Changeset 8525


Ignore:
Timestamp:
Feb 21, 2008, 2:03:10 AM (12 years ago)
Author:
gz
Message:

Propagate changeset:8524 to this branch

File:
1 edited

Legend:

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

    r7950 r8525  
    36433643           ((nil) (simple-array-p object))
    36443644           ((* :maybe) t))
    3645          (let* ((ctype-dimensions (array-ctype-dimensions type))
    3646                 (header-p (= typecode target::subtag-arrayH)))
    3647            (or (eq (array-ctype-dimensions type) '*)
    3648                (and (null (cdr ctype-dimensions)) (not header-p))
    3649                (and header-p
    3650                     (let* ((rank (%svref object target::arrayH.rank-cell)))
    3651                       (declare (fixnum rank))
    3652                       (and (= rank (length ctype-dimensions))
    3653                            (do* ((i 0 (1+ i))
    3654                                  (dim target::arrayH.dim0-cell (1+ dim))
    3655                                  (want (array-ctype-dimensions type) (cdr want))
    3656                                  (got (%svref object dim) (%svref object dim)))
    3657                                 ((= i rank) t)
    3658                              (unless (or (eq (car want) '*)
    3659                                          (= (car want) got))
    3660                                (return nil)))))))
    3661           (or (eq (array-ctype-element-type type) *wild-type*)
    3662                (eql (array-ctype-typecode type)
    3663                     (if (> typecode target::subtag-vectorH)
     3645         (let* ((ctype-dimensions (array-ctype-dimensions type)))
     3646           (or (eq ctype-dimensions '*)
     3647               (if (eql typecode target::subtag-arrayH)
     3648                   (let* ((rank (%svref object target::arrayH.rank-cell)))
     3649                     (declare (fixnum rank))
     3650                     (and (eql rank (length ctype-dimensions))
     3651                          (do* ((i 0 (1+ i))
     3652                                (dim target::arrayH.dim0-cell (1+ dim))
     3653                                (want (array-ctype-dimensions type) (cdr want))
     3654                                (got (%svref object dim) (%svref object dim)))
     3655                               ((eql i rank) t)
     3656                            (unless (or (eq (car want) '*)
     3657                                        (eql (car want) (the fixnum got)))
     3658                              (return nil)))))
     3659                   (and (null (cdr ctype-dimensions))
     3660                        (eql (car ctype-dimensions) (array-total-size object))))))
     3661        (or (eq (array-ctype-element-type type) *wild-type*)
     3662             (eql (array-ctype-typecode type)
     3663                  (if (> typecode target::subtag-vectorH)
    36643664                      typecode
    36653665                      (ldb target::arrayH.flags-cell-subtag-byte (the fixnum (%svref object target::arrayH.flags-cell)))))
    3666                (type= (array-ctype-specialized-element-type type)
    3667                       (specifier-type (array-element-type object))))))))
     3666             (type= (array-ctype-specialized-element-type type)
     3667                    (specifier-type (array-element-type object)))))))
    36683668
    36693669
Note: See TracChangeset for help on using the changeset viewer.