Ignore:
Timestamp:
May 5, 2008, 9:31:32 PM (12 years ago)
Author:
gz
Message:

More string-equal tweaks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/optimizers.lisp

    r9361 r9363  
    18711871        (= ,gtype ,(nx-lookup-target-uvector-subtag :simple-string))))))
    18721872
    1873 (define-compiler-macro string-equal (&whole call
    1874                                      string1 string2
    1875                                      &rest keys)
     1873(define-compiler-macro string-equal (&whole call string1 string2
     1874                                            &environment env
     1875                                            &rest keys)
    18761876  (if (null keys)
    1877     (once-only ((string1 string1)
    1878                 (string2 string2)
    1879                 (s1 0)
    1880                 (e1 `(length ,string1))
    1881                 (s2 0)
    1882                 (e2 `(length ,string2)))
    1883       `(when (eql ,e1 ,e2)
    1884          (if (not (typep ,string1 'simple-string))
    1885            (multiple-value-setq (,string1 ,s1 ,e1)
    1886              (string-start-end (string ,string1) ,s1 ,e1)))
    1887          (if (not (typep ,string2 'simple-string))
    1888            (multiple-value-setq (,string2 ,s2 ,e2)
    1889              (string-start-end (string ,string2) ,s2 ,e2)))
    1890          (%string-equal ,string1 ,s1 ,e1
    1891                         ,string2 ,s2 ,e2)))
     1877    (if (and (nx-form-typep string1 'simple-string env)
     1878             (nx-form-typep string2 'simple-string env))
     1879      (once-only ((string1 string1)
     1880                  (string2 string2)
     1881                  (len1 `(length ,string1))
     1882                  (len2 `(length ,string2)))
     1883        `(and (eq ,len1 ,len2)
     1884              (%string-equal ,string1 0 ,len1 ,string2 0 ,len2)))
     1885      `(string-equal-no-keys ,string1 ,string2))
    18921886    call))
    18931887
Note: See TracChangeset for help on using the changeset viewer.