Changeset 305


Ignore:
Timestamp:
Jan 17, 2004, 7:30:32 PM (21 years ago)
Author:
Gary Byers
Message:

Handle negative bytespecs; don't define synonyms where they may be involved.
Open-code INTEGERP.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/optimizers.lisp

    r304 r305  
    453453
    454454(define-compiler-macro dpb (&whole call &environment env value byte integer)
    455   (cond ((integerp byte)
     455  (cond ((and (integerp byte) (> byte 0))
    456456         (if (integerp value)
    457457           `(logior ,(dpb value byte 0) (logand ,(lognot byte) ,integer))
     
    496496
    497497(define-compiler-macro ldb (&whole call &environment env byte integer)
    498    (cond ((integerp byte)
     498   (cond ((and (integerp byte) (> byte 0))
    499499          (let ((size (byte-size byte))
    500500                (position (byte-position byte)))
     
    12101210(defsynonym rest cdr)
    12111211
    1212 (defsynonym byte-size logcount)
    1213 (defsynonym ldb-test logtest)
    1214 (defsynonym mask-field logand)
    12151212
    12161213(defsynonym functionp lfunp)
     
    15441541  `(eq ppc32::subtag-lock (typecode ,lock)))
    15451542
    1546 
     1543(define-compiler-macro integerp (thing)
     1544  (let* ((typecode (gensym)))
     1545    `(let* ((,typecode (typecode ,thing)))
     1546      (declare (fixnum ,typecode))
     1547      (or (= ,typecode ppc32::tag-fixnum)
     1548          (= ,typecode ppc32::subtag-bignum)))))
     1549       
    15471550
    15481551
Note: See TracChangeset for help on using the changeset viewer.