Changeset 12706
- Timestamp:
- 05/18/10 22:39:43 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/less-reflection/abcl/src/org/armedbear/lisp/compile-file.lisp
r12698 r12706 666 666 (values (truename output-file) warnings-p failure-p))) 667 667 668 (defmacro ncase (expr min max &rest clauses) 669 "A CASE where all test clauses are numbers ranging from a minimum to a maximum." 670 ;;Expr is subject to multiple evaluation, but since we only use ncase for 671 ;;fn-index below, let's ignore it. 672 (let* ((half (floor (/ (- max min) 2))) 673 (middle (+ min half))) 674 (if (> (- max min) 10) 675 `(if (< ,expr ,middle) 676 (ncase ,expr ,min ,middle ,@(subseq clauses 0 half)) 677 (ncase ,expr ,middle ,max ,@(subseq clauses half))) 678 `(case ,expr ,@clauses)))) 679 668 680 (defun generate-loader-function () 669 681 (let* ((basename (base-classname)) 670 682 (expr `(lambda (fasl-loader fn-index) 671 683 (identity fasl-loader) ;;to avoid unused arg 672 ( ecase fn-index684 (ncase fn-index 0 ,(1- *class-number*) 673 685 ,@(loop 674 686 :for i :from 1 :to *class-number*
Note: See TracChangeset
for help on using the changeset viewer.