Changeset 14562
- Timestamp:
- Jan 7, 2011, 7:53:59 PM (10 years ago)
- Location:
- release/1.6/source
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
release/1.6/source
- Property svn:mergeinfo changed
/trunk/source merged: 14559
- Property svn:mergeinfo changed
-
release/1.6/source/compiler/optimizers.lisp
r14381 r14562 584 584 585 585 (define-compiler-macro ldb (&whole call &environment env byte integer) 586 (cond ((and (integerp byte) (> byte 0)) 587 (let ((size (byte-size byte)) 588 (position (byte-position byte))) 589 (cond ((nx-form-typep integer 'fixnum env) 590 `(logand ,(byte-mask size) 591 (the fixnum (ash ,integer ,(- position))))) 592 (t `(load-byte ,size ,position ,integer))))) 593 ((and (consp byte) 594 (eq (%car byte) 'byte) 595 (eq (list-length (%cdr byte)) 2)) 596 (let ((size (%cadr byte)) 597 (position (%caddr byte))) 598 (if (and (nx-form-typep integer 'fixnum env) (fixnump position)) 599 ;; I'm not sure this is worth doing 600 `(logand (byte-mask ,size) (the fixnum (ash ,integer ,(- position)))) 601 ;; this IS worth doing 602 `(load-byte ,size ,position ,integer)))) 603 (t call))) 586 (cond ((and (integerp byte) (> byte 0)) 587 (let ((size (byte-size byte)) 588 (position (byte-position byte))) 589 (cond ((nx-form-typep integer 'fixnum env) 590 `(logand ,(byte-mask size) 591 (the fixnum (ash ,integer ,(- position))))) 592 ((zerop position) 593 `(logand ,(byte-mask size) ,integer)) 594 (t `(load-byte ,size ,position ,integer))))) 595 ((and (consp byte) 596 (eq (%car byte) 'byte) 597 (eq (list-length (%cdr byte)) 2)) 598 (let ((size (%cadr byte)) 599 (position (%caddr byte))) 600 (if (eql position 0) 601 `(logand (byte-mask ,size) ,integer) 602 (if (and (nx-form-typep integer 'fixnum env) (fixnump position)) 603 ;; I'm not sure this is worth doing 604 `(logand (byte-mask ,size) (the fixnum (ash ,integer ,(- position)))) 605 ;; this IS worth doing 606 `(load-byte ,size ,position ,integer))))) 607 (t call))) 604 608 605 609 (define-compiler-macro length (&whole call &environment env seq) -
release/1.6/source/level-0/l0-misc.lisp
- Property svn:mergeinfo changed (with no actual effect on merging)
Note: See TracChangeset
for help on using the changeset viewer.