Changeset 9519


Ignore:
Timestamp:
May 16, 2008, 1:32:09 AM (11 years ago)
Author:
gb
Message:

Since we only have one type of character/string, don't call TYPE-OF
in COPY-STRING-ARG.

Use the new case-folding stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711-perf/ccl/lib/chars.lisp

    r9453 r9519  
    341341    (character
    342342     (return-from copy-string-arg
    343                     (make-string 1 :initial-element string :element-type (type-of string)))))
     343                    (make-string 1 :initial-element string ))))
    344344  (%substr string org (+ len org)))     
    345345
     
    539539               (the fixnum (- end2 start2)))
    540540        (do* ((i start1 (1+ i))
    541               (j start2 (1+ j)))
     541              (j start2 (1+ j))
     542              (map *lower-to-upper*))
    542543             ((= i end1) t)
    543544          (declare (fixnum i j))
     
    546547            (declare (type (mod #x110000) code1 code2))
    547548            (unless (= code1 code2)
    548               (if (and (>= code1 (char-code #\a))
    549                        (<= code1 (char-code #\z)))
    550                 (setq code1 (- code1 (- (char-code #\a) (char-code #\A))))
    551                 (if (> code1 #x80)
    552                   (setq code1 (%non-standard-char-code-upcase code1))))
    553               (if (and (>= code2 (char-code #\a))
    554                        (<= code2 (char-code #\z)))
    555                 (setq code2 (- code2 (- (char-code #\a) (char-code #\A))))
    556                 (if (> code2 #x80)
    557                   (setq code2 (%non-standard-char-code-upcase code2))))
    558               (unless (= code1 code2)
     549              (unless (= (the (mod #x110000) (%char-code-case-fold code1 map))
     550                         (the (mod #x110000) (%char-code-case-fold code2 map)))
    559551                (return)))))))))
    560552
     
    602594          (error ":start1 argument ~s exceeds :end1 argument ~s" start1 end1))
    603595        (when disp1
    604           (incf start1 (the fixnum disp1))
    605           (incf end1 (the fixnum disp1)))
     596          (locally (declare (fixnum disp1))
     597            (incf start1 disp1)
     598            (incf end1 disp1)))
    606599        (if (null start2)
    607600          (setq start2 0)
     
    619612            (error ":start2 argument ~s exceeds :end2 argument ~s" start1 end1))
    620613          (when disp2
    621             (incf start2 (the fixnum disp2))
    622             (incf end2 (the fixnum disp2)))
     614            (locally (declare (fixnum disp2))
     615              (incf start2 disp2)
     616              (incf end2 disp2)))
    623617          (locally
    624618              (declare (optimize (speed 3)(safety 0))
     
    627621                     (the fixnum (- end2 start2)))
    628622              (do* ((i start1 (1+ i))
    629                     (j start2 (1+ j)))
     623                    (j start2 (1+ j))
     624                    (map *lower-to-upper*))
    630625                   ((= i end1) t)
    631626                (declare (fixnum i j))
     
    634629                  (declare (type (mod #x110000) code1 code2))
    635630                  (unless (= code1 code2)
    636                     (if (and (>= code1 (char-code #\a))
    637                              (<= code1 (char-code #\z)))
    638                       (setq code1 (- code1 (- (char-code #\a) (char-code #\A))))
    639                       (if (> code1 #x80)
    640                         (setq code1 (%non-standard-char-code-upcase code1))))
    641                     (if (and (>= code2 (char-code #\a))
    642                              (<= code2 (char-code #\z)))
    643                       (setq code2 (- code2 (- (char-code #\a) (char-code #\A))))
    644                       (if (> code2 #x80)
    645                         (setq code2 (%non-standard-char-code-upcase code2))))
    646                     (unless (= code1 code2)
     631                    (unless (= (the (mod #x110000) (%char-code-case-fold code1 map))
     632                               (the (mod #x110000) (%char-code-case-fold code2 map)))
    647633                      (return))))))))))))
    648634
Note: See TracChangeset for help on using the changeset viewer.