Ignore:
Timestamp:
May 5, 2008, 4:02:54 PM (11 years ago)
Author:
mb
Message:

Implement minor optimizations for string-equal.

File:
1 edited

Legend:

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

    r9357 r9359  
    18721872        (= ,gtype ,(nx-lookup-target-uvector-subtag :simple-string))))))
    18731873
     1874(define-compiler-macro string-equal (&whole call
     1875                                     &environment env
     1876                                     string1 string2
     1877                                     &rest keys)
     1878  (if (null keys)
     1879    (once-only ((string1 string1)
     1880                (string2 string2)
     1881                (s1 0)
     1882                (e1 `(length ,string1))
     1883                (s2 0)
     1884                (e2 `(length ,string2)))
     1885      `(when (= ,e1 ,e2)
     1886         (if (not (typep ,string1 'simple-string env))
     1887           (multiple-value-setq (,string1 ,s1 ,e1)
     1888             (string-start-end (string ,string1) ,s1 ,e1)))
     1889         (if (not (typep ,string2 'simple-string env))
     1890           (multiple-value-setq (,string2 ,s2 ,e2)
     1891             (string-start-end (string ,string2) ,s2 ,e2)))
     1892         (%string-equal ,string1 ,s1 ,e1
     1893                        ,string2 ,s2 ,e2)))
     1894    call))
    18741895
    18751896(defsetf %misc-ref %misc-set)
    1876 
    18771897
    18781898(define-compiler-macro lockp (lock)
Note: See TracChangeset for help on using the changeset viewer.