Changeset 9578


Ignore:
Timestamp:
May 22, 2008, 9:23:02 AM (11 years ago)
Author:
gb
Message:

propagate changes from working-0711-perf branch

Location:
branches/working-0711/ccl
Files:
55 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/X86/X8664/x8664-arch.lisp

    r8030 r9578  
    167167
    168168(defx86reg imm2 rcx)
    169 (defx86reg imm2.l ecx)
    170 (defx86reg nargs cx)
    171 (defx86reg nargs.l ecx)
     169(defx86reg nargs.w cx)
     170(defx86reg nargs ecx)
    172171(defx86reg nargs.q rcx)
    173172(defx86reg imm2.w cx)
    174173(defx86reg imm2.b cl)
     174(defx86reg imm2.l ecx)
    175175(defx86reg shift cl)
    176176
  • branches/working-0711/ccl/compiler/X86/X8664/x8664-vinsns.lisp

    r8031 r9578  
    5050  (shrq (:$ub 3) (:%q dest)))
    5151
     52;;; same as above, but looks better in bit vector contexts
     53(define-x8664-vinsn scale-1bit-misc-index (((dest :u64))
     54                                            ((idx :imm) ; A fixnum
     55                                             )
     56                                            ())
     57  (movq (:%q idx) (:%q dest))
     58  (shrq (:$ub 3) (:%q dest)))
    5259
    5360(define-x8664-vinsn misc-ref-u64  (((dest :u64))
     
    292299                               ((n :s16const)))
    293300  ((:pred = n 0)
    294    (xorw (:%w x8664::nargs ) (:%w x8664::nargs )))
     301   (xorl (:%l x8664::nargs ) (:%l x8664::nargs )))
    295302  ((:not (:pred = n 0))
    296    (movw (:$w (:apply ash n x8664::word-shift)) (:%w x8664::nargs ))))
     303   (movl (:$l (:apply ash n x8664::word-shift)) (:%l x8664::nargs ))))
    297304
    298305(define-x8664-vinsn check-exact-nargs (()
     
    20972104  (andl (:$l x8664::fixnumone) (:%l bitnum))
    20982105  (movl (:%l bitnum) (:%l dest)))
    2099                                            
    2100                                                      
     2106
     2107
     2108(define-x8664-vinsn nref-bit-vector-fixnum (((dest :imm)
     2109                                             (bitnum :s64))
     2110                                            ((bitnum :s64)
     2111                                             (bitvector :lisp))
     2112                                            ())
     2113  (btq (:%q bitnum) (:@ x8664::misc-data-offset (:%q bitvector)))
     2114  (setc (:%b bitnum))
     2115  (movzbl (:%b bitnum) (:%l bitnum))
     2116  (imull (:$b x8664::fixnumone) (:%l bitnum) (:%l dest)))                                     
     2117
     2118(define-x8664-vinsn nref-bit-vector-flags (()
     2119                                            ((bitnum :s64)
     2120                                             (bitvector :lisp))
     2121                                            ())
     2122  (btq (:%q bitnum) (:@ x8664::misc-data-offset (:%q bitvector))))
     2123
    21012124(define-x8664-vinsn misc-ref-c-bit-fixnum (((dest :imm))
    21022125                                           ((src :lisp)
     
    21092132  (andl (:$l x8664::fixnumone) (:%l temp))
    21102133  (movl (:%l temp) (:%l dest)))
     2134
     2135(define-x8664-vinsn misc-ref-c-bit-flags (()
     2136                                           ((src :lisp)
     2137                                            (idx :u64const))
     2138                                          )
     2139  (btq (:$ub (:apply logand 63 idx))
     2140       (:@ (:apply + x8664::misc-data-offset (:apply ash (:apply ash idx -6) x8664::word-shift)) (:%q src))))
    21112141
    21122142(define-x8664-vinsn deref-macptr (((addr :address))
     
    26952725                                               (bitnum :u8)))
    26962726  (btsq (:%q bitnum) (:@ x8664::misc-data-offset (:%q vec) (:%q word-index) 8)))
     2727
     2728;;; In safe code, something else has ensured that the value is of type
     2729;;; BIT.
     2730(define-x8664-vinsn nset-variable-bit-to-variable-value (()
     2731                                                        ((vec :lisp)
     2732                                                         (index :s64)
     2733                                                         (value :lisp)))
     2734  (testb (:%b value) (:%b value))
     2735  (je :clr)
     2736  (btsq (:%q index) (:@ x8664::misc-data-offset (:%q vec)))
     2737  (jmp :done)
     2738  :clr
     2739  (btrq (:%q index) (:@ x8664::misc-data-offset (:%q vec)))
     2740  :done)
     2741
     2742(define-x8664-vinsn nset-variable-bit-to-zero (()
     2743                                              ((vec :lisp)
     2744                                               (index :s64)))
     2745  (btrq (:%q index) (:@ x8664::misc-data-offset (:%q vec))))
     2746
     2747(define-x8664-vinsn nset-variable-bit-to-one (()
     2748                                              ((vec :lisp)
     2749                                               (index :s64)))
     2750  (btsq (:%q index) (:@ x8664::misc-data-offset (:%q vec))))
    26972751
    26982752(define-x8664-vinsn set-constant-bit-to-zero (()
     
    35313585   (movl (:%l src) (:%l dest)))
    35323586  (shll (:$ub (- x8664::charcode-shift x8664::fixnumshift)) (:%l dest))
    3533   (addb (:$b x8664::subtag-character) (:%b dest))
     3587  (addl (:$b x8664::subtag-character) (:%l dest))
     3588  :done)
     3589
     3590;;; src is known to be a code for which CODE-CHAR returns non-nil.
     3591(define-x8664-vinsn code-char->char (((dest :lisp))
     3592                                  ((src :imm))
     3593                                  ())
     3594  ((:not (:pred =
     3595                (:apply %hard-regspec-value dest)
     3596                (:apply %hard-regspec-value src)))
     3597   (movl (:%l src) (:%l dest)))
     3598  (shll (:$ub (- x8664::charcode-shift x8664::fixnumshift)) (:%l dest))
     3599  (addl (:$b x8664::subtag-character) (:%l dest))
    35343600  :done)
    35353601
  • branches/working-0711/ccl/compiler/X86/x86-asm.lisp

    r6465 r9578  
    18781878   (def-x8664-opcode movl ((:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    18791879     #x89 #o0 #x00)
     1880     
     1881   (def-x8664-opcode movl ((:imm32s :insert-imm32s) (:reg32 :insert-opcode-reg))
     1882     #xb8 nil #x00)
    18801883   (def-x8664-opcode movl ((:imm32s :insert-imm32s) (:reg32 :insert-modrm-rm))
    18811884     #xc7 #o300 #x00)
     
    18901893   (def-x8664-opcode movw ((:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    18911894     #x89 #o0 #x00 #x66)
     1895   (def-x8664-opcode movw ((:imm16 :insert-imm16) (:reg16 :insert-opcode-reg))
     1896    #xb8 nil #x00 #x66)
    18921897   (def-x8664-opcode movw ((:imm16 :insert-imm16) (:reg16 :insert-modrm-rm))
    18931898     #xc7 #o300 #x00 #x66)
  • branches/working-0711/ccl/compiler/X86/x86-lapmacros.lisp

    r8018 r9578  
    2828(defx86lapmacro set-nargs (n)
    2929  (if (eql n 0)
    30     `(xorw (% nargs) (% nargs))
    31     `(movw ($ ',n) (% nargs))))
     30    `(xorl (%l nargs) (%l nargs))
     31    `(movl ($ ',n) (%l nargs))))
    3232
    3333(defx86lapmacro anchored-uuo (form)
     
    4343        ,anchor
    4444        ,(if (eql min 0)
    45              `(testw (% nargs) (% nargs))
    46              `(rcmp (% nargs) ($ ',min)))
     45             `(testw (%w nargs) (%w nargs))
     46             `(rcmp (%w nargs) ($ ',min)))
    4747        (jne ,bad)
    4848        (:anchored-uuo-section ,anchor)
     
    5454          `(progn
    5555            ,anchor
    56             (rcmp (% nargs) ($ ',min))
     56            (rcmp (%w nargs) ($ ',min))
    5757            (jb ,bad)
    5858            (:anchored-uuo-section ,anchor)
     
    6363          `(progn
    6464            ,anchor
    65             (rcmp (% nargs) ($ ',max))
     65            (rcmp (%w nargs) ($ ',max))
    6666            (ja ,bad)
    6767            (:anchored-uuo-section ,anchor)
     
    7373            `(progn
    7474              ,anchor
    75               (rcmp (% nargs) ($ ',min))
     75              (rcmp (%w nargs) ($ ',min))
    7676              (jb ,toofew)
    77               (rcmp (% nargs) ($ ',max))
     77              (rcmp (%w nargs) ($ ',max))
    7878              (ja ,toomany)
    7979              (:anchored-uuo-section ,anchor)
     
    271271         (done (gensym)))
    272272  `(progn
    273     (movzwl (% nargs) (%l imm0))
     273    (movzwl (%w nargs) (%l imm0))
    274274    (subq ($ (* $numx8664argregs x8664::node-size)) (% imm0))
    275275    (jle ,push)
     
    368368         (z (gensym)))
    369369  `(progn
    370     (testw (% nargs) (% nargs))
     370    (testw (%w nargs) (%w nargs))
    371371    (je ,done)
    372     (cmpw ($ '2) (% nargs))
     372    (cmpw ($ '2) (%w nargs))
    373373    (je ,yz)
    374374    (jb ,z)
  • branches/working-0711/ccl/compiler/X86/x862.lisp

    r9165 r9578  
    5656          (*x862-reckless* *x862-reckless*)
    5757          (*x862-open-code-inline* *x862-open-code-inline*)
    58           (*x862-trust-declarations* *x862-trust-declarations*))
     58          (*x862-trust-declarations* *x862-trust-declarations*)
     59          (*x862-full-safety* *x862-full-safety*))
    5960     (x862-decls ,declsform)
    6061     ,@body))
     
    169170(defvar *x862-tail-allow* t)
    170171(defvar *x862-reckless* nil)
     172(defvar *x862-full-safety* nil)
    171173(defvar *x862-trust-declarations* nil)
    172174(defvar *x862-entry-vstack* nil)
     
    500502           (*x862-tail-allow* t)
    501503           (*x862-reckless* nil)
     504           (*x862-full-safety* nil)
    502505           (*x862-trust-declarations* t)
    503506           (*x862-entry-vstack* nil)
     
    747750      (setq *x862-tail-allow* (neq 0 (%ilogand2 $decl_tailcalls decls))
    748751            *x862-open-code-inline* (neq 0 (%ilogand2 $decl_opencodeinline decls))
     752            *x862-full-safety* (neq 0 (%ilogand2 $decl_full_safety decls))
    749753            *x862-reckless* (neq 0 (%ilogand2 $decl_unsafe decls))
    750754            *x862-trust-declarations* (neq 0 (%ilogand2 $decl_trustdecls decls))))))
     
    11881192                        (setq fn (svref *x862-specials* (%ilogand #.operator-id-mask (setq op (acode-operator form))))))
    11891193                   (if (and (null vreg)
     1194                            (not *x862-full-safety*)
    11901195                            (%ilogbitp operator-acode-subforms-bit op)
    11911196                            (%ilogbitp operator-assignment-free-bit op))
     
    16891694             (if (and index-known-fixnum (<= index-known-fixnum (arch::target-max-1-bit-constant-index arch)))
    16901695               (! misc-ref-c-bit-fixnum target src index-known-fixnum)
    1691                (with-imm-temps
    1692                    () (word-index bitnum)
    1693                  (if index-known-fixnum
    1694                    (progn
    1695                      (x862-lri seg word-index (+ (arch::target-misc-data-offset arch) (ash index-known-fixnum -6)))
    1696                      (x862-lri seg bitnum (logand index-known-fixnum #x63)))
    1697                    (! word-index-and-bitnum-from-index word-index bitnum unscaled-idx))
    1698                  (! ref-bit-vector-fixnum target bitnum src word-index))))))))
     1696               (with-imm-target () bitnum
     1697                 (if index-known-fixnum
     1698                   (x862-lri seg bitnum index-known-fixnum)
     1699                   (! scale-1bit-misc-index bitnum unscaled-idx))
     1700                 (! nref-bit-vector-fixnum target bitnum src))))))))
    16991701    (^)))
    17001702
     
    17061708(defun x862-vref (seg vreg xfer type-keyword vector index safe)
    17071709  (with-x86-local-vinsn-macros (seg vreg xfer)
     1710    (when *x862-full-safety*
     1711      (unless vreg (setq vreg x8664::arg_z)))
    17081712    (if (null vreg)
    17091713      (progn
     
    23542358                      (progn
    23552359                        (! set-constant-bit-to-variable-value src index-known-fixnum val-reg)))
    2356                     (with-imm-temps () (word-index bit-number)
    2357                       (if index-known-fixnum
    2358                         (progn
    2359                           (x862-lri seg word-index (+ (arch::target-misc-data-offset arch) (ash index-known-fixnum -6)))
    2360                           (x862-lri seg bit-number (logand index-known-fixnum #x63)))
    2361                         (! word-index-and-bitnum-from-index word-index bit-number unscaled-idx))
    2362                       (if constval
    2363                         (if (zerop constval)
    2364                           (! set-variable-bit-to-zero src word-index bit-number)
    2365                           (! set-variable-bit-to-one src word-index bit-number))
    2366                         (progn
    2367                           (! set-variable-bit-to-variable-value src word-index bit-number val-reg))))))))))
     2360                    (progn
     2361                      (if index-known-fixnum
     2362                        (x862-lri seg scaled-idx index-known-fixnum)
     2363                        (! scale-1bit-misc-index scaled-idx unscaled-idx))
     2364                      (if constval
     2365                        (if (zerop constval)
     2366                          (! nset-variable-bit-to-zero src scaled-idx)
     2367                          (! nset-variable-bit-to-one src scaled-idx))
     2368                        (progn
     2369                          (! nset-variable-bit-to-variable-value src scaled-idx val-reg))))))))))
    23682370      (when (and vreg val-reg) (<- val-reg))
    23692371      (^))))
     
    33963398         (^))))))
    33973399
     3400(defun x862-coalesce-fixnum-boolean-comparison (seg vreg xfer fixnum form cr-bit true-p fixnum-was-first)
     3401  (declare (ignorable  fixnum-was-first))
     3402  (let* ((form (nx-untyped-form form)))
     3403    (cond ((and (acode-p form)
     3404                (eql (acode-operator form) (%nx1-operator %typed-uvref))
     3405                (eq (x862-immediate-operand (cadr form)) :bit-vector)
     3406                (or (eql fixnum 0) (eql fixnum (ash 1 *x862-target-fixnum-shift*)))
     3407                (eql cr-bit x86::x86-e-bits))
     3408           (with-x86-local-vinsn-macros (seg vreg xfer)
     3409             (destructuring-bind (vector index) (cddr form)
     3410               (let* ((safe (not *x862-reckless*))
     3411                      (arch (backend-target-arch *target-backend*))
     3412                      (index-known-fixnum (acode-fixnum-form-p index))
     3413                      (unscaled-idx nil)
     3414                      (src nil))
     3415                 (if (or safe (not index-known-fixnum))
     3416                   (multiple-value-setq (src unscaled-idx)
     3417                     (x862-two-untargeted-reg-forms seg vector x8664::arg_y index x8664::arg_z))
     3418                   (setq src (x862-one-untargeted-reg-form seg vector x8664::arg_z)))
     3419                 (when safe
     3420                   (! trap-unless-typecode= src (nx-lookup-target-uvector-subtag :bit-vector))
     3421                   (unless index-known-fixnum
     3422                     (! trap-unless-fixnum unscaled-idx))
     3423                   (! check-misc-bound unscaled-idx src))
     3424                 (if (and index-known-fixnum (<= index-known-fixnum (arch::target-max-1-bit-constant-index arch)))
     3425                   (! misc-ref-c-bit-flags  src index-known-fixnum)
     3426                   (with-imm-target () bitnum
     3427                     (if index-known-fixnum
     3428                       (x862-lri seg bitnum index-known-fixnum)
     3429                       (! scale-1bit-misc-index bitnum unscaled-idx))
     3430                     (! nref-bit-vector-flags bitnum src)))
     3431                 (setq true-p (eq (not (eql fixnum 0)) (not (null true-p)))
     3432                       cr-bit x86::x86-b-bits)
     3433                 (if (backend-crf-p vreg)
     3434                   (^ x86::x86-b-bits true-p)
     3435                   (progn
     3436                     (ensuring-node-target (target vreg)
     3437                       (if (not true-p)
     3438                         (setq cr-bit (logxor 1 cr-bit)))
     3439                       (! cr-bit->boolean target cr-bit))
     3440                     (^))))))
     3441           t)
     3442          (t nil))))
     3443
    33983444;;; There are other cases involving constants that are worth exploiting.
    33993445(defun x862-compare (seg vreg xfer i j cr-bit true-p)
     
    34133459        (if u8-operator
    34143460          (x862-compare-u8 seg vreg xfer u8-operand u8 (if (and iu8 (not (eq cr-bit x86::x86-e-bits))) (logxor 1 cr-bit) cr-bit) true-p u8-operator)
    3415           (if (and boolean (or js32 is32))
    3416             (let* ((reg (x862-one-untargeted-reg-form seg (if js32 i j) x8664::arg_z))
    3417                    (constant (or js32 is32)))
    3418               (if (zerop constant)
    3419                 (! compare-reg-to-zero reg)
    3420                 (! compare-s32-constant reg (or js32 is32)))
    3421               (unless (or js32 (eq cr-bit x86::x86-e-bits))
    3422                 (setq cr-bit (x862-reverse-cr-bit cr-bit)))
    3423               (^ cr-bit true-p))
    3424             (if (and ;(eq cr-bit x86::x86-e-bits)
     3461          (or (and (or js32 is32)
     3462                   (x862-coalesce-fixnum-boolean-comparison seg vreg xfer (or is32 js32) (if is32 j i) cr-bit true-p is32))
     3463              (if (and boolean (or js32 is32))
     3464                (let* ((reg (x862-one-untargeted-reg-form seg (if js32 i j) x8664::arg_z))
     3465                       (constant (or js32 is32)))
     3466                  (if (zerop constant)
     3467                    (! compare-reg-to-zero reg)
     3468                    (! compare-s32-constant reg (or js32 is32)))
     3469                  (unless (or js32 (eq cr-bit x86::x86-e-bits))
     3470                    (setq cr-bit (x862-reverse-cr-bit cr-bit)))
     3471                  (^ cr-bit true-p))
     3472                (if (and ;(eq cr-bit x86::x86-e-bits)
    34253473                     (or js32 is32))
    3426               (progn
    3427                 (unless (or js32 (eq cr-bit x86::x86-e-bits))
    3428                   (setq cr-bit (x862-reverse-cr-bit cr-bit)))
    3429               (x862-test-reg-%izerop
    3430                seg
    3431                vreg
     3474                  (progn
     3475                    (unless (or js32 (eq cr-bit x86::x86-e-bits))
     3476                      (setq cr-bit (x862-reverse-cr-bit cr-bit)))
     3477                    (x862-test-reg-%izerop
     3478                     seg
     3479                     vreg
    34323480               xfer
    34333481               (x862-one-untargeted-reg-form
     
    34393487               (or js32 is32)))
    34403488              (multiple-value-bind (ireg jreg) (x862-two-untargeted-reg-forms seg i x8664::arg_y j x8664::arg_z)
    3441                 (x862-compare-registers seg vreg xfer ireg jreg cr-bit true-p)))))))))
     3489                (x862-compare-registers seg vreg xfer ireg jreg cr-bit true-p))))))))))
    34423490
    34433491(defun x862-natural-compare (seg vreg xfer i j cr-bit true-p)
     
    63186366    (^)))
    63196367
     6368(defx862 x862-%valid-code-char %valid-code-char (seg vreg xfer c)
     6369  (let* ((reg (x862-one-untargeted-reg-form seg c x8664::arg_z)))
     6370    ;; Typecheck even if result unused.
     6371    (unless *x862-reckless* (! require-char-code reg))
     6372    (if vreg
     6373      (ensuring-node-target (target vreg)
     6374        (! code-char->char target reg)))
     6375    (^)))
     6376
    63206377(defx862 x862-eq eq (seg vreg xfer cc form1 form2)
    63216378  (multiple-value-bind (cr-bit true-p) (acode-condition-to-x86-cr-bit cc)
  • branches/working-0711/ccl/compiler/nx-basic.lisp

    r9165 r9578  
    4545(let ((policy (%istruct 'compiler-policy
    4646               #'(lambda (env)
    47                    (neq (debug-optimize-quantity env) 3))   ;  allow-tail-recursion-elimination
    48                #'(lambda (env)
    49                    (eq (debug-optimize-quantity env) 3))   ; inhibit-register-allocation
     47                   (< (debug-optimize-quantity env) 2))   ;  allow-tail-recursion-elimination
     48               #'false   ; inhibit-register-allocation
    5049               #'(lambda (env)
    5150                   (let* ((safety (safety-optimize-quantity env)))
     
    5453                              safety)))) ; trust-declarations
    5554               #'(lambda (env)
    56                    (>= (speed-optimize-quantity env)
    57                        (+ (space-optimize-quantity env) 2)))   ; open-code-inline
     55                   (> (speed-optimize-quantity env)
     56                      (space-optimize-quantity env)))   ; open-code-inline
    5857               #'(lambda (env)
    5958                   (and (eq (speed-optimize-quantity env) 3)
     
    6564                   (neq (debug-optimize-quantity env) 3))   ; inline-self-calls
    6665               #'(lambda (env)
    67                    (and (neq (compilation-speed-optimize-quantity env) 3)
    68                         (neq (safety-optimize-quantity env) 3)
    69                         (neq (debug-optimize-quantity env) 3)))   ; allow-transforms
     66                   (unless (eql (safety-optimize-quantity env) 3)
     67                     (and (neq (compilation-speed-optimize-quantity env) 3)
     68                          (neq (speed-optimize-quantity env) 0)
     69                          (neq (debug-optimize-quantity env) 3))))   ; allow-transforms
    7070               #'(lambda (var env)       ; force-boundp-checks
    7171                   (declare (ignore var))
     
    151151                                  (push '(inline . notinline) decls)))))
    152152                  (values nil nil decls))))
    153           (if (eq (uvref contour 0) 'definition-environment)
     153          (if (istruct-typep contour 'definition-environment)
    154154            (if (assq name (defenv.functions contour))
    155155              (return (values :macro nil nil))
     
    185185                     (setq vartype :symbol-macro)))))
    186186             (return))
    187             ((eq (setq envtype (%svref env 0)) 'definition-environment)
     187            ((eq (setq envtype (istruct-type-name env)) 'definition-environment)
    188188             (cond ((assq var (defenv.constants env))
    189189                    (setq vartype :constant)
     
    234234(defun nx-declared-type (sym &optional (env *nx-lexical-environment*))
    235235  (loop
    236     (when (or (null env) (eq (uvref env 0) 'definition-environment)) (return))
     236    (when (or (null env) (istruct-typep env 'definition-environment)) (return))
    237237    (dolist (decl (lexenv.vdecls env))
    238238      (if (and (eq (car decl) sym)
  • branches/working-0711/ccl/compiler/nx0.lisp

    r9353 r9578  
    2828
    2929; Phony AFUNC "defstruct":
    30 (defun make-afunc (&aux (v (allocate-typed-vector :istruct $afunc-size nil)))
    31   (setf (%svref v 0) 'afunc)
     30(defun make-afunc (&aux (v (%make-afunc)))
    3231  (setf (afunc-fn-refcount v) 0)
    3332  (setf (afunc-fn-downward-refcount v) 0)
     
    706705      (unless (nx-allow-register-allocation env)
    707706        (nx-inhibit-register-allocation))
    708       (setq *nx-new-p2decls*
    709             (%ilogior
    710              (if (nx-tailcalls env) $decl_tailcalls 0)
    711              (if (nx-inhibit-eventchecks env) $decl_eventchk 0)
    712              (if (nx-open-code-in-line env) $decl_opencodeinline 0)
    713              (if (nx-inhibit-safety-checking env) $decl_unsafe 0)
    714              (if (nx-trust-declarations env) $decl_trustdecls 0))))))
     707      (setq *nx-new-p2decls*
     708            (if (eql (safety-optimize-quantity env) 3)
     709              (logior $decl_full_safety
     710                      (if (nx-tailcalls env) $decl_tailcalls 0))
     711              (%ilogior
     712               (if (nx-tailcalls env) $decl_tailcalls 0)
     713               (if (nx-open-code-in-line env) $decl_opencodeinline 0)
     714               (if (nx-inhibit-safety-checking env) $decl_unsafe 0)
     715               (if (nx-trust-declarations env) $decl_trustdecls 0)))))))
    715716
    716717#|     
     
    11021103    (let* ((intervening-functions nil))
    11031104      (do* ((env current-env (lexenv.parent-env env)))
    1104            ((or (eq env target) (null env) (eq (%svref env 0) 'definition-environment)))
     1105           ((or (eq env target) (null env) (istruct-typep env 'definition-environment)))
    11051106        (let* ((fn (lexenv.lambda env)))
    11061107          (when fn (push fn intervening-functions))))
     
    11721173      (info afunc)
    11731174      (do* ((env *nx-lexical-environment* (lexenv.parent-env env))
    1174             (continue env (and env (neq (%svref env 0) 'definition-environment)))
     1175            (continue env (and env (not (istruct-typep env 'definition-environment))))
    11751176            (binder current-function (or (if continue (lexenv.lambda env)) binder)))
    11761177           ((or (not continue) (and (neq binder current-function) current-only))
  • branches/working-0711/ccl/compiler/nx1.lisp

    r9481 r9578  
    6161                (nx1-immediate :eq)
    6262                (nx1-form thing)
    63                 (nx1-form type))
     63                (nx1-form `(register-istruct-cell ,type)))
    6464    (nx1-treat-as-call whole)))
    6565
     
    166166  (make-acode (if (nx-form-typep arg '(unsigned-byte 8) env)
    167167                (%nx1-operator %code-char)
    168                 (%nx1-operator code-char))
     168                (if (nx-form-typep arg 'valid-char-code env)
     169                  (%nx1-operator %valid-code-char)
     170                  (%nx1-operator code-char)))
    169171              (nx1-form arg)))
     172
    170173
    171174(defnx1 nx1-char-code ((char-code)) (arg &environment env)
  • branches/working-0711/ccl/compiler/nxenv.lisp

    r8554 r9578  
    3131#-BOOTSTRAPPED (unless (boundp '$lfbits-info-bit) (set '$lfbits-info-bit 2))
    3232
    33 (defconstant $afunc-size
    34   (def-accessors (afunc) %svref
    35     ()                                    ; 'afunc
    36     afunc-acode
    37     afunc-parent
    38     afunc-vars
    39     afunc-inherited-vars
    40     afunc-blocks
    41     afunc-tags
    42     afunc-inner-functions
    43     afunc-name
    44     afunc-bits
    45     afunc-lfun
    46     afunc-environment
    47     afunc-lambdaform
    48     afunc-argsword
    49     afunc-ref-form
    50     afunc-warnings
    51     afunc-fn-refcount
    52     afunc-fn-downward-refcount
    53     afunc-all-vars
    54     afunc-callers
    55     afunc-vcells
    56     afunc-fcells
    57     afunc-fwd-refs
    58     afunc-lfun-info
    59     afunc-linkmap))
     33
    6034
    6135;
    6236
    63 (def-accessors (compiler-policy) uvref
    64   nil                                   ; 'compiler-policy
    65   policy.allow-tail-recursion-elimination
    66   policy.inhibit-register-allocation
    67   policy.trust-declarations
    68   policy.open-code-inline
    69   policy.inhibit-safety-checking
    70   policy.inhibit-event-checking
    71   policy.inline-self-calls
    72   policy.allow-transforms
    73   policy.force-boundp-checks
    74   policy.allow-constant-substitution
    75   policy.misc)
     37
    7638
    7739(defconstant $vbittemporary 16)    ; a compiler temporary
     
    9355(defconstant $vrefmask #xff)
    9456
    95 (defconstant $decl_optimize (%ilsl 16 0))
    96 (defconstant $decl_tailcalls (%ilsl 16 1))
    97 (defconstant $decl_opencodeinline (%ilsl 16 4))
    98 (defconstant $decl_eventchk (%ilsl 16 8))
    99 (defconstant $decl_unsafe (%ilsl 16 16))
    100 (defconstant $decl_trustdecls (%ilsl 16 32))
     57(defconstant $decl_optimize (%ilsl 16 0))  ; today's chuckle
     58(defconstant $decl_tailcalls (ash 1 16))
     59(defconstant $decl_opencodeinline (ash 4 16))
     60(defconstant $decl_eventchk (ash 8 16))
     61(defconstant $decl_unsafe (ash 16 16))
     62(defconstant $decl_trustdecls (ash 32 16))
     63(defconstant $decl_full_safety (ash 64 16))
    10164
    10265(defconstant $regnote-ea 1)
     
    225188     (lap-inline . 0)
    226189     (%function . #.operator-single-valued-mask)
    227      (%ttagp . #.(logior operator-cc-invertable-mask operator-single-valued-mask))
     190     (%valid-code-char . #.(logior operator-single-valued-mask operator-acode-subforms-mask operator-side-effect-free-mask operator-cc-invertable-mask))
    228191     (%ttag . #.operator-single-valued-mask) 
    229192     (uvsize . #.operator-single-valued-mask)
     
    541504  `(consp ,x))
    542505
    543 (defmacro defnx2 (name locative arglist &body forms)
    544   (multiple-value-bind (body decls)
    545                        (parse-body forms nil t)
    546     (let ((fn `(nfunction ,name (lambda ,arglist ,@decls (block ,name .,body)))))
    547     `(progn
    548        (record-source-file ',name 'function)
    549        (svset *nx2-specials* (%ilogand operator-id-mask (%nx1-operator ,locative)) ,fn)))))
    550506
    551507(defmacro defnxdecl (sym lambda-list &body forms)
     
    569525         
    570526
    571 (defmacro with-p2-declarations (declsform &body body)
    572   `(let* ((*nx2-tail-allow* *nx2-tail-allow*)
    573           (*nx2-reckless* *nx2-reckless*)
    574           (*nx2-inhibit-eventchecks* *nx2-inhibit-eventchecks*)
    575           (*nx2-open-code-inline* *nx2-open-code-inline*)
    576           (*nx2-trust-declarations* *nx2-trust-declarations*))
    577      (nx2-decls ,declsform)
    578      ,@body))
     527
    579528
    580529(eval-when (:compile-toplevel :load-toplevel :execute)
  • branches/working-0711/ccl/compiler/optimizers.lisp

    r9483 r9578  
    567567(defun package-designator-p (object)
    568568  (or (string-designator-p object) (packagep object)))
    569 
    570 (define-compiler-macro intern (&whole call str &optional package)
    571   (if (or (and (quoted-form-p package) (package-designator-p (%cadr package)))
    572           (keywordp package)
    573           (stringp package))
    574     `(intern ,str (load-time-value (or (find-package ,package) ,package)))
    575     call))
    576569
    577570(define-compiler-macro ldb (&whole call &environment env byte integer)
     
    15331526                                  `(typep ,thing ',expanded-type))))
    15341527                           ((structure-class-p type env)
    1535                             `(structure-typep ,thing ',type))
     1528                            `(structure-typep ,thing ',(find-class-cell type t)))
    15361529                           ((find-class type nil env)
    1537                             `(class-cell-typep ,thing (load-time-value (find-class-cell ',type t))))
     1530                            (let* ((class (find-class type nil)))
     1531                              (if (and class
     1532                                       (subtypep class *istruct-class*)
     1533                                       (null (class-direct-subclasses class)))
     1534                                `(istruct-typep ,thing ',type)
     1535                                `(class-cell-typep ,thing (load-time-value (find-class-cell ',type t))))))
    15381536                           ((info-type-builtin type) ; bootstrap troubles here?
    15391537                            `(builtin-typep ,thing (load-time-value (find-builtin-cell ',type))))
     
    15721570      call)))
    15731571
     1572(define-compiler-macro structure-typep (&whole w thing type)
     1573  (if (not (quoted-form-p type))
     1574    (progn
     1575      (warn "Non-qouted structure-type in ~s" w)
     1576      w)
     1577    (let* ((type (nx-unquote type)))
     1578      (if (symbolp type)
     1579        `(structure-typep ,thing ',(find-class-cell type t))
     1580        w))))
     1581
    15741582(define-compiler-macro true (&rest args)
    15751583  `(progn
     
    17141722
    17151723
    1716 
     1724(define-compiler-macro slot-boundp (&whole whole instance slot-name-form)
     1725  (declare (ignore env))
     1726  (let* ((name (and (quoted-form-p slot-name-form)
     1727                    (typep (cadr slot-name-form) 'symbol)
     1728                    (cadr slot-name-form))))
     1729    (if name
     1730      `(slot-id-boundp ,instance (load-time-value (ensure-slot-id ',name)))
     1731      whole)))
    17171732
    17181733(defsynonym %get-unsigned-byte %get-byte)
     
    20022017        (= ,gtype ,(nx-lookup-target-uvector-subtag :simple-string))))))
    20032018
    2004 (define-compiler-macro string-equal (&whole call string1 string2
    2005                                             &environment env
    2006                                             &rest keys)
    2007   (if (null keys)
    2008     (if (and (nx-form-typep string1 'simple-string env)
    2009              (nx-form-typep string2 'simple-string env))
    2010       (once-only ((string1 string1)
    2011                   (string2 string2)
    2012                   (len1 `(length ,string1))
    2013                   (len2 `(length ,string2)))
    2014         `(and (eq ,len1 ,len2)
    2015               (%string-equal ,string1 0 ,len1 ,string2 0 ,len2)))
    2016       `(string-equal-no-keys ,string1 ,string2))
    2017     call))
     2019
    20182020
    20192021(defsetf %misc-ref %misc-set)
     
    20232025    `(eq ,tag (typecode ,lock))))
    20242026
     2027(define-compiler-macro structurep (s)
     2028  (let* ((tag (nx-lookup-target-uvector-subtag :struct)))
     2029    `(eq ,tag (typecode ,s))))
     2030 
    20252031
    20262032(define-compiler-macro integerp (thing)
     
    20852091  (if (null others)
    20862092    (if other-p
    2087       `(eq (%char-code (char-upcase ,ch)) (%char-code (char-upcase ,other)))
     2093      `(eq (%char-code-upcase (char-code ,ch)) (%char-code-upcase (char-code ,other)))
    20882094      `(progn (char-code ,ch) t))
    20892095    (if (null (cdr others))
    20902096      (let* ((third (car others))
    20912097             (code (gensym)))
    2092         `(let* ((,code (%char-code (char-upcase ,ch))))
    2093           (and (eq ,code (setq ,code (%char-code (char-upcase ,other))))
    2094            (eq ,code (%char-code (char-upcase ,third))))))
     2098        `(let* ((,code (%char-code-upcase (char-code ,ch))))
     2099          (and (eq ,code (setq ,code (%char-code-upcase (char-code ,other))))
     2100           (eq ,code (%char-code-upcase (char-code ,third))))))
    20952101      call)))
    20962102
     
    22302236          (foreign-instance-class-wrapper ,temp))))))
    22312237
     2238(define-compiler-macro %class-ordinal (class &optional error)
     2239  (let* ((temp (gensym)))
     2240    `(let* ((,temp ,class))
     2241      (if (eql (the (unsigned-byte 8) (typecode ,temp))
     2242               ,(nx-lookup-target-uvector-subtag :instance))
     2243        (instance.hash ,temp)
     2244        (funcall '%class-ordinal ,temp ,error)))))
     2245
     2246(define-compiler-macro native-class-p (class)
     2247  (let* ((temp (gensym)))
     2248    `(let* ((,temp ,class))
     2249      (if (eql (the (unsigned-byte 8) (typecode ,temp))
     2250               ,(nx-lookup-target-uvector-subtag :instance))
     2251        (< (the fixnum (instance.hash ,temp)) max-class-ordinal)))))
     2252 
     2253
     2254
    22322255(define-compiler-macro unsigned-byte-p (x)
    22332256  (if (typep (nx-unquote x) 'unsigned-byte)
     
    22372260        (and (integerp ,val) (not (< ,val 0)))))))
    22382261
     2262(define-compiler-macro subtypep (&whole w t1 t2 &optional rtenv  &environment env)
     2263  (if (and (consp t1)
     2264           (consp (cdr t1))
     2265           (null (cddr t1))
     2266           (eq (car t1) 'type-of))
     2267    ;; People really write code like this.  I've seen it.
     2268    `(typep ,(cadr t1) ,t2 ,@(and rtenv `(,rtenv)))
     2269    (if (and (null rtenv) (quoted-form-p t2))
     2270      `(cell-csubtypep-2 ,t1 (load-time-value (register-type-cell ,t2)))
     2271      w)))
     2272
     2273
     2274(define-compiler-macro string-equal (&whole w s1 s2 &rest keys)
     2275  (if (null keys)
     2276    `(%fixed-string-equal ,s1 ,s2)
     2277    (let* ((s1-arg (gensym))
     2278           (s2-arg (gensym)))
     2279      `(funcall
     2280        (lambda (,s1-arg ,s2-arg &key start1 end1 start2 end2)
     2281          (%bounded-string-equal ,s1-arg ,s2-arg start1 end1 start2 end2))
     2282        ,s1 ,s2 ,@keys))))
     2283
     2284;;; Try to use "package-references" to speed up package lookup when
     2285;;; a package name is used as a constant argument to some functions.
     2286
     2287(defun package-ref-form (arg)
     2288  (when (and arg (constantp arg) (typep (setq arg (nx-unquote arg))
     2289                                        '(or symbol string)))
     2290    `(load-time-value (register-package-ref ,(string arg)))))
     2291
     2292
     2293(define-compiler-macro intern (&whole w string &optional package)
     2294  (let* ((ref (package-ref-form package)))
     2295    (if (or ref
     2296            (setq ref (and (consp package)
     2297                           (eq (car package) 'find-package)
     2298                           (consp (cdr package))
     2299                           (null (cddr package))
     2300                           (package-ref-form (cadr package)))))
     2301      `(%pkg-ref-intern ,string ,ref)
     2302      w)))
     2303
     2304(define-compiler-macro find-symbol (&whole w string &optional package)
     2305  (let* ((ref (package-ref-form package)))
     2306    (if (or ref
     2307            (setq ref (and (consp package)
     2308                           (eq (car package) 'find-package)
     2309                           (consp (cdr package))
     2310                           (null (cddr package))
     2311                           (package-ref-form (cadr package)))))
     2312      `(%pkg-ref-find-symbol ,string ,ref)
     2313      w)))
     2314
     2315(define-compiler-macro find-package (&whole w package)
     2316  (let* ((ref (package-ref-form package)))
     2317    (if ref
     2318      `(package-ref.pkg ,ref)
     2319      w)))
     2320
     2321(define-compiler-macro pkg-arg (&whole w package &optional allow-deleted)
     2322  (let* ((ref (unless allow-deleted (package-ref-form package))))
     2323    (if ref
     2324      (let* ((r (gensym)))
     2325        `(let* ((,r ,ref))
     2326          (or (package-ref.pkg ,ref)
     2327           (%kernel-restart $xnopkg (package-ref.pkg ,r)))))
     2328      w)))
     2329
     2330
     2331;;; In practice, things that're STREAMP are almost always
     2332;;; BASIC-STREAMs or FUNDAMENTAL-STREAMs, but STREAMP is a generic
     2333;;; function.
     2334(define-compiler-macro streamp (arg)
     2335  (let* ((s (gensym)))
     2336    `(let* ((,s ,arg))
     2337      (or (typep ,s 'basic-stream)
     2338       (typep ,s 'fundamental-stream)
     2339       ;; Don't recurse
     2340       (funcall 'streamp ,s)))))
     2341
     2342
     2343(define-compiler-macro %char-code-case-fold (&whole w code vector &environment env)
     2344  (if (nx-open-code-in-line env)
     2345    (let* ((c (gensym))
     2346           (table (gensym)))
     2347      `(let* ((,c ,code)
     2348              (,table ,vector))
     2349        (declare (type (mod #x110000) ,c)
     2350                 (type (simple-array (signed-byte 16) (*)) ,table))
     2351        (if (< ,c (length ,table))
     2352          (the fixnum (+ ,c (the (signed-byte 16)
     2353                              (locally (declare (optimize (speed 3) (safety 0)))
     2354                                (aref ,table ,c)))))
     2355          ,c)))
     2356    w))
     2357       
     2358(define-compiler-macro %char-code-upcase (&whole w code &environment env)
     2359  (if (typep code '(mod #x110000))
     2360    (%char-code-upcase code)
     2361    `(%char-code-case-fold ,code *lower-to-upper*)))
     2362
     2363(define-compiler-macro %char-code-downcase (&whole w code &environment env)
     2364  (if (typep code '(mod #x110000))
     2365    (%char-code-downcase code)
     2366    `(%char-code-case-fold ,code *upper-to-lower*)))
     2367
     2368(define-compiler-macro char-upcase (char)
     2369  `(code-char (%char-code-upcase (char-code ,char))))
     2370
     2371
     2372(define-compiler-macro register-istruct-cell (&whole w arg)
     2373  (if (and (quoted-form-p arg)
     2374           (cadr arg)
     2375           (typep (cadr arg) 'symbol))
     2376    `',(register-istruct-cell (cadr arg))
     2377    w))
     2378
     2379(define-compiler-macro get-character-encoding (&whole w name)
     2380  (or (if (typep name 'keyword) (lookup-character-encoding name))
     2381      w))
     2382   
    22392383(provide "OPTIMIZERS")
  • branches/working-0711/ccl/level-0/X86/x86-array.lisp

    r7847 r9578  
    195195(defun %extend-vector (start oldv newsize)
    196196  (declare (fixnum start))
    197   (let* ((new (%alloc-misc newsize (typecode oldv)))
     197  (let* ((typecode (typecode oldv))
     198         (new (%alloc-misc newsize typecode))
    198199         (oldsize (uvsize oldv)))
    199     (declare (fixnum oldsize))
    200     (do* ((i 0 (1+ i))
    201           (j start (1+ j)))
    202          ((= i oldsize) new)
    203       (declare (fixnum i j))
    204       (setf (uvref new j) (uvref oldv i)))))
     200    (declare (fixnum oldsize typecode))
     201    (if (gvectorp oldv)
     202      (%extend-gvector oldv start oldsize new)
     203      (if (not (zerop start))
     204        (do* ((i 0 (1+ i))
     205              (j start (1+ j)))
     206             ((= i oldsize) new)
     207          (declare (fixnum i j))
     208          (setf (uvref new j) (uvref oldv i)))
     209        (%copy-ivector-to-ivector oldv 0 new 0 (subtag-bytes typecode oldsize))))))
    205210   
    206 
    207 
     211(defx86lapfunction %extend-gvector ((oldv 8)
     212                                    #|(ra 0)|#
     213                                    (start arg_x)
     214                                    (oldsize arg_y)
     215                                    (new arg_z))
     216  (let ((rold temp0)
     217        (val temp1)
     218        (out temp2))
     219    (movq (@ oldv (% rsp)) (% rold))
     220    (xorl (%l out) (%l out))
     221    (jmp @test)
     222    @loop
     223    (movq (@ x8664::misc-data-offset (% rold) (% start)) (% val))
     224    (movq (% val) (@ x8664::misc-data-offset (% new) (% out)))
     225    (addq ($ '1) (% out))
     226    (addq ($ '1) (% start))
     227    @test
     228    (cmpq (% start) (% oldsize))
     229    (jne @loop)
     230    (single-value-return 3)))
    208231
    209232
  • branches/working-0711/ccl/level-0/X86/x86-clos.lisp

    r7850 r9578  
    172172      (save-frame-variable-arg-count)
    173173      (push-argregs)
    174       (movzwl (% nargs) (%l nargs))
     174      (movzwl (%w nargs) (%l nargs))
    175175      (pushq (%q nargs))
    176176      (movq (% rsp) (% arg_z))
     
    251251      (save-frame-variable-arg-count)
    252252      (push-argregs)
    253       (movzwl (% nargs) (%l nargs))
     253      (movzwl (%w nargs) (%l nargs))
    254254      (pushq (%q nargs))
    255255      (movq (% rsp) (% arg_z))
  • branches/working-0711/ccl/level-0/X86/x86-def.lisp

    r9365 r9578  
    168168  (:arglist (fixnum &optional offset))
    169169  (check-nargs 1 2)
    170   (cmpw ($ x8664::fixnumone) (% nargs))
     170  (cmpw ($ x8664::fixnumone) (%w nargs))
    171171  (jne @2-args)
    172172  (movq (% offset) (% fixnum))
     
    180180  (:arglist (fixnum &optional offset))
    181181  (check-nargs 1 2)
    182   (cmpw ($ x8664::fixnumone) (% nargs))
     182  (cmpw ($ x8664::fixnumone) (%w nargs))
    183183  (jne @2-args)
    184184  (movq (% offset) (% fixnum))
     
    192192  (:arglist (fixnum offset &optional newval))
    193193  (check-nargs 2 3)
    194   (cmpw ($ '2) (% nargs))
     194  (cmpw ($ '2) (%w nargs))
    195195  (jne @3-args)
    196196  (movq (% offset) (% fixnum))
     
    207207  (check-nargs 2 3)
    208208  (save-simple-frame)
    209   (cmpw ($ '2) (% nargs))
     209  (cmpw ($ '2) (%w nargs))
    210210  (jne @3-args)
    211211  (movq (% offset) (% fixnum))
     
    357357  (set-nargs 0)
    358358  (movq (@ (% args)) (% imm0))          ;lexpr-count
    359   (movw (% imm0.w) (% nargs))
     359  (movw (% imm0.w) (%w nargs))
    360360  (leaq (@ x8664::node-size (% arg_z) (% imm0)) (% imm1))
    361361  (subw ($ '3) (% imm0.w))
     
    377377  (jmp @go)
    378378  @reg-only
    379   (testw (% nargs) (% nargs))
     379  (testw (%w nargs) (%w nargs))
    380380  (je @go)
    381   (rcmpw (% nargs) ($ '2))
     381  (rcmpw (%w nargs) ($ '2))
    382382  (je @two)
    383383  (jb @one)
     
    417417  (jne @loop)
    418418  @done
    419   (addw (% imm0.w) (% nargs))
     419  (addw (% imm0.w) (%w nargs))
    420420  (jne @pop)
    421421  @discard-and-go
     
    423423  (jmp @go)
    424424  @pop
    425   (cmpw ($ '1) (% nargs))
     425  (cmpw ($ '1) (%w nargs))
    426426  (pop (% arg_z))
    427427  (je @discard-and-go)
    428   (cmpw ($ '2) (% nargs))
     428  (cmpw ($ '2) (%w nargs))
    429429  (pop (% arg_y))
    430430  (je @discard-and-go)
    431   (cmpw ($ '3) (% nargs))
     431  (cmpw ($ '3) (%w nargs))
    432432  (pop (% arg_x))
    433433  (je @discard-and-go)
     
    455455  (movq (@ x8664::lisp-frame.return-address (% rbp)) (% ra0))
    456456  (movq (@ 0 (% rbp)) (% rbp))
    457   (rcmpw (% nargs) ($ '3))
     457  (rcmpw (%w nargs) ($ '3))
    458458  (jbe @pop-regs)
    459459  ;; More than 3 args; some must have been pushed by caller,
     
    465465  @pop-regs
    466466  (je @pop3)
    467   (rcmpw (% nargs) ($ '1))
     467  (rcmpw (%w nargs) ($ '1))
    468468  (jb @discard)
    469469  (ja @pop2)
     
    500500   (:arglist (function arg1 arg2 &rest other-args))
    501501   (check-nargs 3 nil)
    502    (cmpw ($ '3) (% nargs))
     502   (cmpw ($ '3) (%w nargs))
    503503   (pop (% ra0))
    504504   (ja @no-frame)
     
    509509   (movq (% arg_z) (% temp0))           ; last
    510510   (movq (% arg_y) (% arg_z))           ; butlast
    511    (subw ($ '2) (% nargs))              ; remove count for butlast & last
     511   (subw ($ '2) (%w nargs))              ; remove count for butlast & last
    512512   ;; Do .SPspreadargz inline here
    513513   (xorl (%l imm0) (%l imm0))
     
    528528   ;; nargs was at least 1 when we started spreading, and can't have gotten
    529529   ;; any smaller.
    530    (addw (%w imm0) (% nargs))
     530   (addw (%w imm0) (%w nargs))
    531531   (movq (% temp0) (% arg_z))
    532532   (pop (% arg_y))
    533533   (pop (% arg_x))
    534    (addw ($ '1) (% nargs))
    535    (cmpw ($ '3) (% nargs))
     534   (addw ($ '1) (%w nargs))
     535   (cmpw ($ '3) (%w nargs))
    536536   (jne @no-discard)
    537537   (discard-reserved-frame)
  • branches/working-0711/ccl/level-0/X86/x86-misc.lisp

    r8027 r9578  
    8080
    8181
    82 
    83 (defx86lapfunction %copy-ivector-to-ivector ((src-offset 16)
    84                                              (src-byte-offset 8)
    85                                              #|(ra 0)|#
    86                                              (dest arg_x)
    87                                              (dest-byte-offset arg_y)
    88                                              (nbytes arg_z))
     82(defun %copy-ivector-to-ivector (src src-byte-offset dest dest-byte-offset nbytes)
     83  (declare (fixnum src-byte-offset dest-byte-offset nbytes))
     84  (if (or (eq src dest)
     85          (not (eql 0 src-byte-offset))
     86          (not (eql 0 dest-byte-offset))
     87          (< nbytes 8))
     88    (%copy-ivector-to-ivector-bytes src src-byte-offset dest dest-byte-offset nbytes)
     89    (%copy-ivector-to-ivector-words src dest (ash nbytes -3) (logand nbytes 7))))
     90
     91(defx86lapfunction %copy-ivector-to-ivector-words ((src 8)
     92                                                   #|(ra 0)|#
     93                                                   (dest arg_x)
     94                                                   (nwords arg_y)
     95                                                   (nbytes arg_z))
     96  (let ((rsrc temp0)
     97         (ridx imm1)
     98         (rval imm0))
     99    (xorl (%l ridx) (%l ridx))
     100    (movq (@ src (% rsp)) (% rsrc))
     101    (jmp @word-test)
     102    @word-loop
     103    (movq (@ x8664::misc-data-offset (% rsrc) (% ridx)) (% rval))
     104    (movq (% rval) (@ x8664::misc-data-offset (% dest) (% ridx)))
     105    (addq ($ 8) (% ridx))
     106    @word-test
     107    (cmpq (% ridx) (% nwords))
     108    (jne @word-loop)
     109    (jmp @byte-test)
     110    @byte-loop
     111    (movb (@ x8664::misc-data-offset (% rsrc) (% ridx)) (%b rval))
     112    (movb (%b rval) (@ x8664::misc-data-offset (% dest) (% ridx)))
     113    (addq ($ 1) (% ridx))
     114    @byte-test
     115    (subq ($ '1) (% nbytes))
     116    (jns @byte-loop)
     117    (movq (% dest) (% arg_z))
     118    (single-value-return 3)))
     119         
     120   
     121   
     122
     123(defx86lapfunction %copy-ivector-to-ivector-bytes ((src-offset 16)
     124                                                   (src-byte-offset 8)
     125                                                   #|(ra 0)|#
     126                                                   (dest arg_x)
     127                                                   (dest-byte-offset arg_y)
     128                                                   (nbytes arg_z))
    89129  (let ((rsrc temp0)
    90130        (rsrc-byte-offset temp1))
  • branches/working-0711/ccl/level-0/X86/x86-utils.lisp

    r7624 r9578  
    501501
    502502(defx86lapfunction true ()
    503   (movzwl (% nargs) (%l nargs))
     503  (movzwl (%w nargs) (%l nargs))
    504504  (subq ($ '3) (% nargs.q))
    505505  (leaq (@ '2 (% rsp) (% nargs.q)) (% imm0))
     
    509509
    510510(defx86lapfunction false ()
    511   (movzwl (% nargs) (%l nargs))
     511  (movzwl (%w nargs) (%l nargs))
    512512  (subq ($ '3) (% nargs.q))
    513513  (leaq (@ '2 (% rsp) (% nargs.q)) (% imm0))
  • branches/working-0711/ccl/level-0/l0-aprims.lisp

    r7925 r9578  
    203203  (istruct-typep x 'semaphore))
    204204
    205 (setf (type-predicate 'semaphore) 'semaphorep)
    206205
    207206(defun make-list (size &key initial-element)
  • branches/working-0711/ccl/level-0/l0-array.lisp

    r9117 r9578  
    1717(in-package "CCL")
    1818
    19 (defun make-string (size &key (initial-element () initial-element-p) (element-type 'character element-type-p))
    20   "Given a character count and an optional fill character, makes and returns
    21    a new string COUNT long filled with the fill character."
    22   (when (and initial-element-p (not (typep initial-element 'character)))
    23     (report-bad-arg initial-element 'character))
    24   (when (and element-type-p
    25              (not (or (member element-type '(character base-char standard-char))
    26                       (subtypep element-type 'character))))
    27     (error ":element-type ~S is not a subtype of CHARACTER" element-type))
    28   (if initial-element-p
    29       (make-string size :element-type 'base-char :initial-element initial-element)
    30       (make-string size :element-type 'base-char)))
     19
    3120
    3221
  • branches/working-0711/ccl/level-0/l0-cfm-support.lisp

    r7591 r9578  
    4040
    4141
    42 (def-accessor-macros %svref
    43   nil                                 ; 'external-entry-point
    44   eep.address
    45   eep.name
    46   eep.container)
    47 
    48 (defun %cons-external-entry-point (name &optional container)
    49   (%istruct 'external-entry-point nil name container))
    5042
    5143(defun external-entry-point-p (x)
    5244  (istruct-typep x 'external-entry-point))
    53 
    54 (def-accessor-macros %svref
    55     nil                                 ;'foreign-variable
    56   fv.addr                               ; a MACPTR, or nil
    57   fv.name                               ; a string
    58   fv.type                               ; a foreign type
    59   fv.container                          ; containing library
    60   )
    61 
    62 (defun %cons-foreign-variable (name type &optional container)
    63   (%istruct 'foreign-variable nil name type container))
    64 
    65 (def-accessor-macros %svref
    66     nil                                 ;'shlib
    67   shlib.soname
    68   shlib.pathname
    69   shlib.opened-by-lisp-kernel
    70   shlib.map
    71   shlib.base
    72   shlib.opencount)
    73 
    74 (defun %cons-shlib (soname pathname map base)
    75   (%istruct 'shlib soname pathname nil map base 0))
    7645
    7746(defvar *rtld-next*)
  • branches/working-0711/ccl/level-0/l0-hash.lisp

    r8605 r9578  
    615615  "This removes all the entries from HASH-TABLE and returns the hash table
    616616   itself."
    617   (unless (hash-table-p hash)
     617  (unless (typep hash 'hash-table)
    618618    (report-bad-arg hash 'hash-table))
    619619  (with-lock-context
     
    699699   value and T as multiple values, or returns DEFAULT and NIL if there is no
    700700   such entry. Entries can be added using SETF."
    701   (unless (hash-table-p hash)
     701  (unless (typep hash 'hash-table)
    702702    (report-bad-arg hash 'hash-table))
    703703  (let* ((value nil)
     
    749749  "Remove the entry in HASH-TABLE associated with KEY. Return T if there
    750750   was such an entry, or NIL if not."
    751   (unless (hash-table-p hash)
     751  (unless (typep hash 'hash-table)
    752752    (setq hash (require-type hash 'hash-table)))
    753753  (let* ((foundp nil))
     
    808808(defun puthash (key hash default &optional (value default))
    809809  (declare (optimize (speed 3) (space 0)))
    810   (unless (hash-table-p hash)
     810  (unless (typep hash 'hash-table)
    811811    (report-bad-arg hash 'hash-table))
    812812  (if (eq key (%unbound-marker))
     
    884884
    885885(defun grow-hash-table (hash)
    886   (unless (hash-table-p hash)
     886  (unless (typep hash 'hash-table)
    887887    (setq hash (require-type hash 'hash-table)))
    888888  (%grow-hash-table hash))
     
    15751575                     (return (values hash address-p)))
    15761576                   (setq key (cdr key)))))
    1577               ((hash-table-p key)
     1577              ((typep key 'hash-table)
    15781578               (equalphash-hash-table key))
    15791579              ; what are the dudes called that contain bits? they are uvectors but not gvectors?
     
    16881688
    16891689(defun assert-hash-table-readonly (hash)
    1690   (unless (hash-table-p hash)
     1690  (unless (typep hash 'hash-table)
    16911691    (report-bad-arg hash 'hash-table))
    16921692  (or (nhash.read-only hash)
     
    17101710;; hash table. Use it responsibly.
    17111711(defun assert-hash-table-writeable (hash)
    1712   (unless (hash-table-p hash)
     1712  (unless (typep hash 'hash-table)
    17131713    (report-bad-arg hash 'hash-table))
    17141714  (when (nhash.read-only hash)
     
    17171717
    17181718(defun readonly-hash-table-p (hash)
    1719   (unless (hash-table-p hash)
     1719  (unless (typep hash 'hash-table)
    17201720    (report-bad-arg hash 'hash-table))
    17211721  (nhash.read-only hash))
    17221722
    17231723(defun hash-table-owner (hash)
    1724   (unless (hash-table-p hash)
     1724  (unless (typep hash 'hash-table)
    17251725    (report-bad-arg hash 'hash-table))
    17261726  (nhash.owner hash))
    17271727
    17281728(defun claim-hash-table (hash &optional steal)
    1729   (unless (hash-table-p hash)
     1729  (unless (typep hash 'hash-table)
    17301730    (report-bad-arg hash 'hash-table))
    17311731  (let* ((owner (nhash.owner hash)))
     
    17451745
    17461746(defun enumerate-hash-keys (hash out)
    1747   (unless (hash-table-p hash)
     1747  (unless (typep hash 'hash-table)
    17481748    (report-bad-arg hash 'hash-table))
    17491749  (with-lock-context
     
    17671767
    17681768(defun enumerate-hash-keys-and-values (hash keys values)
    1769   (unless (hash-table-p hash)
     1769  (unless (typep hash 'hash-table)
    17701770    (report-bad-arg hash 'hash-table))
    17711771  (with-lock-context
  • branches/working-0711/ccl/level-0/l0-pred.lisp

    r8969 r9578  
    2626  (cons type nil))
    2727
    28 (defun find-class-cell (type create?)
    29   (declare (ignore create?))
    30   (make-class-cell type))
    3128
    3229(defun builtin-typep (form cell)
     
    374371        (if (= x-type y-type)
    375372            (if (= x-type target::subtag-istruct)
    376                 (and (let* ((structname (%svref x 0)))
    377                        (and (eq structname (%svref y 0))
     373                (and (let* ((structname (istruct-cell-name (%svref x 0))))
     374                       (and (eq structname (istruct-cell-name (%svref y 0)))
    378375                            (or (eq structname 'pathname)
    379376                                (eq structname 'logical-pathname)))
     
    882879  (= (the fixnum (typecode form)) target::subtag-istruct))
    883880
     881
     882;;; Not to be conused with STRUCTURE-TYPE-P, defined in ccl:lib;pprint.lisp.
    884883(defun structure-typep (thing type)
    885884  (if (= (the fixnum (typecode thing)) target::subtag-struct)
    886     (if (memq type (%svref thing 0))
    887       t)))
     885    (let* ((types (%svref thing 0)))
     886      (if (typep type 'symbol)
     887        (dolist (x types)
     888          (when (eq (class-cell-name x) type)
     889            (return t)))
     890        (dolist (x types)
     891          (when (eq x type)
     892            (return t)))))))
     893
     894
    888895
    889896
    890897(defun istruct-typep (thing type)
    891898  (if (= (the fixnum (typecode thing)) target::subtag-istruct)
    892     (eq (%svref thing 0) type)))
     899    (eq (istruct-cell-name (%svref thing 0)) type)))
     900
     901(defun istruct-type-name (thing)
     902  (if (= (the fixnum (typecode thing)) target::subtag-istruct)
     903    (istruct-cell-name (%svref thing 0))))
     904
     905
     906;;; This is actually set to an alist in the xloader.
     907(defparameter *istruct-cells* nil)
     908
     909;;; This should only ever push anything on the list in the cold
     910;;; load (e.g., when running single-threaded.)
     911(defun register-istruct-cell (name)
     912  (or (assq name *istruct-cells*)
     913      (let* ((pair (cons name nil)))
     914        (push pair *istruct-cells*)
     915        pair)))
     916
     917(defun set-istruct-cell-info (cell info)
     918  (etypecase cell
     919    (cons (%rplacd cell info)))
     920  info)
     921
     922
    893923
    894924(defun symbolp (thing)
     
    919949
    920950(setf (type-predicate 'uvector) 'uvectorp)
     951
     952(defparameter *type-cells* nil)
     953
     954
     955
     956(defparameter *type-cells-lock* nil)
     957
     958
     959;;; The weird handling to the special variables here has to do with
     960;;; xload issues.
     961(defun register-type-cell (specifier)
     962  (with-lock-grabbed ((or *type-cells-lock*
     963                         (setq *type-cells-lock* (make-lock))))
     964    (unless *type-cells*
     965      (setq *type-cells* (make-hash-table :test 'equal)))
     966    (or (values (gethash specifier *type-cells*))
     967        (setf (gethash specifier *type-cells*)
     968              (make-type-cell specifier)))))
     969
     970
     971(defvar %find-classes% nil)
     972
     973(setq %find-classes% (make-hash-table :test 'eq))
     974
     975
     976(defun find-class-cell (name create?)
     977  (unless %find-classes%
     978    (dbg name))
     979  (let ((cell (gethash name %find-classes%)))
     980    (or cell
     981        (and create?
     982             (setf (gethash name %find-classes%) (make-class-cell name))))))
     983
  • branches/working-0711/ccl/level-0/nfasload.lisp

    r8867 r9578  
    2222
    2323
    24 
    2524(defconstant $primsizes (make-array 23
    2625                                    :element-type '(unsigned-byte 16)
     
    4241  (assert (= 80 numfaslops)))
    4342
     43
     44
     45
     46(setq *package-refs* (make-hash-table))
     47
    4448(defvar *fasl-dispatch-table* #80(%bad-fasl))
     49
     50
     51
     52
    4553
    4654(defun %bad-fasl (s)
     
    240248        (%epushval s symbol)))))
    241249
     250(defvar *package-refs*)
     251(setq *package-refs* (make-hash-table :test #'equal))
     252
     253(defun register-package-ref (name)
     254  (or (gethash name *package-refs*)
     255      (setf (gethash name *package-refs*) (make-package-ref name))))
     256
     257(dolist (p %all-packages%)
     258  (dolist (name (pkg.names p))
     259    (setf (package-ref.pkg (register-package-ref name)) p)))
     260
     261
    242262(defun find-package (name)
    243   (if (packagep name)
     263  (if (typep  name 'package)
    244264    name
    245265    (%find-pkg (string name))))
     266
     267(defun %pkg-ref-find-package (ref)
     268  (package-ref.pkg ref))
    246269
    247270(defun set-package (name &aux (pkg (find-package name)))
     
    293316  (multiple-value-bind (str len new-p) (%fasl-nvreadstr s)
    294317    (let* ((p (%find-pkg str len)))
    295       (%epushval s (or p (%kernel-restart $XNOPKG (if new-p str (%fasl-copystr str len))))))))
     318      (%epushval s (or p  (%kernel-restart $XNOPKG (if new-p str (%fasl-copystr str len))))))))
    296319
    297320(defun %fasl-vlistX (s dotp)
     
    494517               (and (symbolp f)
    495518                    (functionp (fboundp f)))))
    496       (apply (%car form) (%cdr form))
     519      (do* ((tail (%cdr form) (%cdr tail)))
     520           ((null tail) (apply (%car form) (%cdr form)))
     521        (let* ((head (car tail)))
     522          (when (and (consp head) (eq (car head) 'quote))
     523            (setf (car tail) (cadr head)))))
    497524      (error "Can't eval yet: ~s" form))))
    498525
     
    689716
    690717(deffaslop $fasl-provide (s)
    691   (provide (%fasl-expr s)))   
     718  (provide (%fasl-expr s)))
     719
     720(deffaslop $fasl-istruct-cell (s)
     721  (%epushval s (register-istruct-cell (%fasl-expr-preserve-epush s))))
     722
    692723
    693724
     
    10821113      (declare (special *xload-cold-load-functions*
    10831114                        *xload-cold-load-documentation*
    1084                         *xload-startup-file*))
     1115                        *xload-startup-file*
     1116                        *early-class-cells*))
    10851117      (%set-tcr-toplevel-function (%current-tcr) nil) ; should get reset by l1-boot.
    10861118      (setq %system-locks% (%cons-population nil))
     
    10901122      (dolist (f (prog1 *xload-cold-load-functions* (setq *xload-cold-load-functions* nil)))
    10911123        (funcall f))
     1124      (dolist (pair (prog1 *early-class-cells* (setq *early-class-cells* nil)))
     1125        (setf (gethash (car pair) %find-classes%) (cdr pair)))
    10921126      (dolist (p %all-packages%)
    10931127        (%resize-htab (pkg.itab p))
  • branches/working-0711/ccl/level-1/l1-aprims.lisp

    r8742 r9578  
    399399)
    400400
     401
    401402(defun check-sequence-bounds (seq start end)
     403  (flet ((bad-sequence-interval (seq start end)
     404           (unless (typep start 'unsigned-byte)
     405             (report-bad-arg start 'unsigned-byte))
     406           (if (and end (not (typep end 'unsigned-byte)))
     407             (report-bad-arg end '(or null unsigned-byte)))
     408           (error "Bad interval for sequence operation on ~s : start = ~s, end = ~s" seq start end)))
    402409  (let* ((length (length seq)))
    403410    (declare (fixnum length))
    404     (if (not end)
    405       (setq end length)
    406       (unless (typep end 'fixnum)
    407         (report-bad-arg end 'fixnum)))
    408     (unless (typep start 'fixnum)
    409       (report-bad-arg start 'fixnum))
    410     (locally (declare (fixnum start end))
    411       (cond ((> end length)
    412              (report-bad-arg end `(integer 0 (,length))))
    413             ((< start 0)
    414              (report-bad-arg start `(integer 0)))
    415             ((< end 0)
    416              (report-bad-arg end `(integer 0 (,length))))
    417             ((> start end)
    418              (report-bad-arg start `(integer 0 ,end)))
    419             (t end)))))
     411    (if (and (typep start 'fixnum)
     412             (<= 0 (the fixnum start))
     413             (if (null end)
     414               (<= (the fixnum start) (the fixnum (setq end length)))
     415               (and (typep end 'fixnum)
     416                    (<= (the fixnum start) (the fixnum end))
     417                    (<= (the fixnum end) (the fixnum length)))))
     418
     419      end
     420      (bad-sequence-interval seq start end)))))
     421
    420422 
    421423
     
    873875(defun char-downcase (c)
    874876  "Return CHAR converted to lower-case if that is possible."
    875   (let* ((code (char-code c)))
    876     (declare (type (mod #x110000) code))
    877     (if (and (>= code (char-code #\A))(<= code (char-code #\Z)))
    878       (%code-char (%i+ code #.(- (char-code #\a)(char-code #\A))))
    879       (or (and (>= code #x80)
    880                (%non-standard-lower-case-equivalent c))
    881           c))))
     877  (declare (optimize (speed 3))) ; open-code the %CHAR-CODE-DOWNCASE here.
     878  (code-char (the valid-char-code (%char-code-downcase (char-code c)))))
    882879
    883880
     
    908905
    909906
    910 (defun char-upcase (c)
    911   "Return CHAR converted to upper-case if that is possible.  Don't convert
    912    lowercase eszet (U+DF)."
    913   (let* ((code (char-code c)))
    914     (declare (type (mod #x110000) code))
    915     (if (and (>= code (char-code #\a))(<= code (char-code #\z)))
    916       (%code-char (%i- code #.(- (char-code #\a)(char-code #\A))))
    917       (or (and (>= code #x80) (%non-standard-upper-case-equivalent c))
    918           c))))
    919 
    920907
    921908
     
    11581145       (= (uvsize p) target::xmacptr.element-count)))
    11591146
    1160 (defstatic *non-standard-lower-to-upper* (make-hash-table :test #'eq)
    1161   "Maps non-STANDARD-CHAR lowercase chars to uppercase equivalents")
    1162 
    1163 (defstatic *non-standard-upper-to-lower* (make-hash-table :test #'eq)
    1164   "Maps non-STANDARD-CHAR uppercase chars to lowercase equivalents")
    1165 
    1166 ;;; This alist is automatically (and not to cleverly ...) generated.
     1147(defstatic *upper-to-lower* nil)
     1148(defstatic *lower-to-upper*  nil)
     1149
     1150
     1151
     1152;;; This alist is automatically (and not too cleverly ...) generated.
    11671153;;; The (upper . lower) pairs have the property that UPPER is the
    11681154;;; value "simple uppercase equivalent" entry for LOWER in the
    11691155;;; UnicodeData.txt file and LOWER is the corresponding entry for
    1170 ;;; UPPER.
    1171 (dolist (pair '((#\Latin_Capital_Letter_A_With_Grave . #\Latin_Small_Letter_A_With_Grave)
     1156;;; UPPER,
     1157(let* ((mapping
     1158        '((#\Latin_Capital_Letter_A_With_Grave . #\Latin_Small_Letter_A_With_Grave)
    11721159                (#\Latin_Capital_Letter_A_With_Acute . #\Latin_Small_Letter_A_With_Acute)
    11731160                (#\Latin_Capital_Letter_A_With_Circumflex
     
    11781165                (#\Latin_Capital_Letter_A_With_Ring_Above
    11791166                 . #\Latin_Small_Letter_A_With_Ring_Above)
     1167         
    11801168                (#\Latin_Capital_Letter_Ae . #\Latin_Small_Letter_Ae)
     1169         
    11811170                (#\Latin_Capital_Letter_C_With_Cedilla . #\Latin_Small_Letter_C_With_Cedilla)
     1171         
    11821172                (#\Latin_Capital_Letter_E_With_Grave . #\Latin_Small_Letter_E_With_Grave)
     1173         
    11831174                (#\Latin_Capital_Letter_E_With_Acute . #\Latin_Small_Letter_E_With_Acute)
     1175         
    11841176                (#\Latin_Capital_Letter_E_With_Circumflex
    11851177                 . #\Latin_Small_Letter_E_With_Circumflex)
     1178         
    11861179                (#\Latin_Capital_Letter_E_With_Diaeresis
    11871180                 . #\Latin_Small_Letter_E_With_Diaeresis)
     1181         
    11881182                (#\Latin_Capital_Letter_I_With_Grave . #\Latin_Small_Letter_I_With_Grave)
     1183         
    11891184                (#\Latin_Capital_Letter_I_With_Acute . #\Latin_Small_Letter_I_With_Acute)
     1185         
    11901186                (#\Latin_Capital_Letter_I_With_Circumflex
    11911187                 . #\Latin_Small_Letter_I_With_Circumflex)
     1188         
    11921189                (#\Latin_Capital_Letter_I_With_Diaeresis
    11931190                 . #\Latin_Small_Letter_I_With_Diaeresis)
     1191         
    11941192                (#\Latin_Capital_Letter_Eth . #\Latin_Small_Letter_Eth)
     1193         
    11951194                (#\Latin_Capital_Letter_N_With_Tilde . #\Latin_Small_Letter_N_With_Tilde)
     1195         
    11961196                (#\Latin_Capital_Letter_O_With_Grave . #\Latin_Small_Letter_O_With_Grave)
     1197         
    11971198                (#\Latin_Capital_Letter_O_With_Acute . #\Latin_Small_Letter_O_With_Acute)
     1199         
    11981200                (#\Latin_Capital_Letter_O_With_Circumflex
    11991201                 . #\Latin_Small_Letter_O_With_Circumflex)
     1202         
    12001203                (#\Latin_Capital_Letter_O_With_Tilde . #\Latin_Small_Letter_O_With_Tilde)
     1204         
    12011205                (#\Latin_Capital_Letter_O_With_Diaeresis
    12021206                 . #\Latin_Small_Letter_O_With_Diaeresis)
     1207         
    12031208                (#\Latin_Capital_Letter_O_With_Stroke . #\Latin_Small_Letter_O_With_Stroke)
     1209         
    12041210                (#\Latin_Capital_Letter_U_With_Grave . #\Latin_Small_Letter_U_With_Grave)
     1211         
    12051212                (#\Latin_Capital_Letter_U_With_Acute . #\Latin_Small_Letter_U_With_Acute)
     1213         
    12061214                (#\Latin_Capital_Letter_U_With_Circumflex
    12071215                 . #\Latin_Small_Letter_U_With_Circumflex)
     1216         
    12081217                (#\Latin_Capital_Letter_U_With_Diaeresis
    12091218                 . #\Latin_Small_Letter_U_With_Diaeresis)
     1219         
    12101220                (#\Latin_Capital_Letter_Y_With_Acute . #\Latin_Small_Letter_Y_With_Acute)
     1221         
    12111222                (#\Latin_Capital_Letter_Thorn . #\Latin_Small_Letter_Thorn)
     1223         
    12121224                (#\Latin_Capital_Letter_A_With_Macron . #\Latin_Small_Letter_A_With_Macron)
     1225         
    12131226                (#\Latin_Capital_Letter_A_With_Breve . #\Latin_Small_Letter_A_With_Breve)
     1227         
    12141228                (#\Latin_Capital_Letter_A_With_Ogonek . #\Latin_Small_Letter_A_With_Ogonek)
     1229         
    12151230                (#\Latin_Capital_Letter_C_With_Acute . #\Latin_Small_Letter_C_With_Acute)
     1231         
    12161232                (#\Latin_Capital_Letter_C_With_Circumflex
    12171233                 . #\Latin_Small_Letter_C_With_Circumflex)
     1234         
    12181235                (#\Latin_Capital_Letter_C_With_Dot_Above
    12191236                 . #\Latin_Small_Letter_C_With_Dot_Above)
     1237         
    12201238                (#\Latin_Capital_Letter_C_With_Caron . #\Latin_Small_Letter_C_With_Caron)
     1239         
    12211240                (#\Latin_Capital_Letter_D_With_Caron . #\Latin_Small_Letter_D_With_Caron)
     1241         
    12221242                (#\Latin_Capital_Letter_D_With_Stroke . #\Latin_Small_Letter_D_With_Stroke)
     1243         
    12231244                (#\Latin_Capital_Letter_E_With_Macron . #\Latin_Small_Letter_E_With_Macron)
     1245         
    12241246                (#\Latin_Capital_Letter_E_With_Breve . #\Latin_Small_Letter_E_With_Breve)
     1247         
    12251248                (#\Latin_Capital_Letter_E_With_Dot_Above
    12261249                 . #\Latin_Small_Letter_E_With_Dot_Above)
     1250         
    12271251                (#\Latin_Capital_Letter_E_With_Ogonek . #\Latin_Small_Letter_E_With_Ogonek)
     1252         
    12281253                (#\Latin_Capital_Letter_E_With_Caron . #\Latin_Small_Letter_E_With_Caron)
     1254         
    12291255                (#\Latin_Capital_Letter_G_With_Circumflex
    12301256                 . #\Latin_Small_Letter_G_With_Circumflex)
     1257         
    12311258                (#\Latin_Capital_Letter_G_With_Breve . #\Latin_Small_Letter_G_With_Breve)
     1259         
    12321260                (#\Latin_Capital_Letter_G_With_Dot_Above
    12331261                 . #\Latin_Small_Letter_G_With_Dot_Above)
     1262         
    12341263                (#\Latin_Capital_Letter_G_With_Cedilla . #\Latin_Small_Letter_G_With_Cedilla)
     1264         
    12351265                (#\Latin_Capital_Letter_H_With_Circumflex
    12361266                 . #\Latin_Small_Letter_H_With_Circumflex)
     1267         
    12371268                (#\Latin_Capital_Letter_H_With_Stroke . #\Latin_Small_Letter_H_With_Stroke)
     1269         
    12381270                (#\Latin_Capital_Letter_I_With_Tilde . #\Latin_Small_Letter_I_With_Tilde)
     1271         
    12391272                (#\Latin_Capital_Letter_I_With_Macron . #\Latin_Small_Letter_I_With_Macron)
     1273         
    12401274                (#\Latin_Capital_Letter_I_With_Breve . #\Latin_Small_Letter_I_With_Breve)
     1275         
    12411276                (#\Latin_Capital_Letter_I_With_Ogonek . #\Latin_Small_Letter_I_With_Ogonek)
     1277         
    12421278                (#\Latin_Capital_Ligature_Ij . #\Latin_Small_Ligature_Ij)
     1279         
    12431280                (#\Latin_Capital_Letter_J_With_Circumflex
    12441281                 . #\Latin_Small_Letter_J_With_Circumflex)
     1282         
    12451283                (#\Latin_Capital_Letter_K_With_Cedilla . #\Latin_Small_Letter_K_With_Cedilla)
     1284         
    12461285                (#\Latin_Capital_Letter_L_With_Acute . #\Latin_Small_Letter_L_With_Acute)
     1286         
    12471287                (#\Latin_Capital_Letter_L_With_Cedilla . #\Latin_Small_Letter_L_With_Cedilla)
     1288         
    12481289                (#\Latin_Capital_Letter_L_With_Caron . #\Latin_Small_Letter_L_With_Caron)
     1290         
    12491291                (#\Latin_Capital_Letter_L_With_Middle_Dot
    12501292                 . #\Latin_Small_Letter_L_With_Middle_Dot)
     1293         
    12511294                (#\Latin_Capital_Letter_L_With_Stroke . #\Latin_Small_Letter_L_With_Stroke)
     1295         
    12521296                (#\Latin_Capital_Letter_N_With_Acute . #\Latin_Small_Letter_N_With_Acute)
     1297         
    12531298                (#\Latin_Capital_Letter_N_With_Cedilla . #\Latin_Small_Letter_N_With_Cedilla)
     1299         
    12541300                (#\Latin_Capital_Letter_N_With_Caron . #\Latin_Small_Letter_N_With_Caron)
     1301         
    12551302                (#\Latin_Capital_Letter_Eng . #\Latin_Small_Letter_Eng)
     1303         
    12561304                (#\Latin_Capital_Letter_O_With_Macron . #\Latin_Small_Letter_O_With_Macron)
     1305         
    12571306                (#\Latin_Capital_Letter_O_With_Breve . #\Latin_Small_Letter_O_With_Breve)
     1307         
    12581308                (#\Latin_Capital_Letter_O_With_Double_Acute
    12591309                 . #\Latin_Small_Letter_O_With_Double_Acute)
     1310         
    12601311                (#\Latin_Capital_Ligature_Oe . #\Latin_Small_Ligature_Oe)
     1312         
    12611313                (#\Latin_Capital_Letter_R_With_Acute . #\Latin_Small_Letter_R_With_Acute)
     1314         
    12621315                (#\Latin_Capital_Letter_R_With_Cedilla . #\Latin_Small_Letter_R_With_Cedilla)
     1316         
    12631317                (#\Latin_Capital_Letter_R_With_Caron . #\Latin_Small_Letter_R_With_Caron)
     1318         
    12641319                (#\Latin_Capital_Letter_S_With_Acute . #\Latin_Small_Letter_S_With_Acute)
     1320         
    12651321                (#\Latin_Capital_Letter_S_With_Circumflex
    12661322                 . #\Latin_Small_Letter_S_With_Circumflex)
     1323         
    12671324                (#\Latin_Capital_Letter_S_With_Cedilla . #\Latin_Small_Letter_S_With_Cedilla)
     1325         
    12681326                (#\Latin_Capital_Letter_S_With_Caron . #\Latin_Small_Letter_S_With_Caron)
     1327         
    12691328                (#\Latin_Capital_Letter_T_With_Cedilla . #\Latin_Small_Letter_T_With_Cedilla)
     1329         
    12701330                (#\Latin_Capital_Letter_T_With_Caron . #\Latin_Small_Letter_T_With_Caron)
     1331         
    12711332                (#\Latin_Capital_Letter_T_With_Stroke . #\Latin_Small_Letter_T_With_Stroke)
     1333         
    12721334                (#\Latin_Capital_Letter_U_With_Tilde . #\Latin_Small_Letter_U_With_Tilde)
     1335         
    12731336                (#\Latin_Capital_Letter_U_With_Macron . #\Latin_Small_Letter_U_With_Macron)
     1337         
    12741338                (#\Latin_Capital_Letter_U_With_Breve . #\Latin_Small_Letter_U_With_Breve)
     1339         
    12751340                (#\Latin_Capital_Letter_U_With_Ring_Above
    12761341                 . #\Latin_Small_Letter_U_With_Ring_Above)
     1342         
    12771343                (#\Latin_Capital_Letter_U_With_Double_Acute
    12781344                 . #\Latin_Small_Letter_U_With_Double_Acute)
     1345         
    12791346                (#\Latin_Capital_Letter_U_With_Ogonek . #\Latin_Small_Letter_U_With_Ogonek)
     1347         
    12801348                (#\Latin_Capital_Letter_W_With_Circumflex
    12811349                 . #\Latin_Small_Letter_W_With_Circumflex)
     1350         
    12821351                (#\Latin_Capital_Letter_Y_With_Circumflex
    12831352                 . #\Latin_Small_Letter_Y_With_Circumflex)
     1353         
    12841354                (#\Latin_Capital_Letter_Y_With_Diaeresis
    12851355                 . #\Latin_Small_Letter_Y_With_Diaeresis)
     1356         
    12861357                (#\Latin_Capital_Letter_Z_With_Acute . #\Latin_Small_Letter_Z_With_Acute)
     1358         
    12871359                (#\Latin_Capital_Letter_Z_With_Dot_Above
    12881360                 . #\Latin_Small_Letter_Z_With_Dot_Above)
     1361         
    12891362                (#\Latin_Capital_Letter_Z_With_Caron . #\Latin_Small_Letter_Z_With_Caron)
     1363         
    12901364                (#\Latin_Capital_Letter_B_With_Hook . #\Latin_Small_Letter_B_With_Hook)
     1365         
    12911366                (#\Latin_Capital_Letter_B_With_Topbar . #\Latin_Small_Letter_B_With_Topbar)
     1367         
    12921368                (#\Latin_Capital_Letter_Tone_Six . #\Latin_Small_Letter_Tone_Six)
     1369         
    12931370                (#\Latin_Capital_Letter_Open_O . #\Latin_Small_Letter_Open_O)
     1371         
    12941372                (#\Latin_Capital_Letter_C_With_Hook . #\Latin_Small_Letter_C_With_Hook)
     1373         
    12951374                (#\Latin_Capital_Letter_African_D . #\Latin_Small_Letter_D_With_Tail)
     1375         
    12961376                (#\Latin_Capital_Letter_D_With_Hook . #\Latin_Small_Letter_D_With_Hook)
     1377         
    12971378                (#\Latin_Capital_Letter_D_With_Topbar . #\Latin_Small_Letter_D_With_Topbar)
     1379         
    12981380                (#\Latin_Capital_Letter_Reversed_E . #\Latin_Small_Letter_Turned_E)
     1381         
    12991382                (#\Latin_Capital_Letter_Schwa . #\Latin_Small_Letter_Schwa)
     1383         
    13001384                (#\Latin_Capital_Letter_Open_E . #\Latin_Small_Letter_Open_E)
     1385         
    13011386                (#\Latin_Capital_Letter_F_With_Hook . #\Latin_Small_Letter_F_With_Hook)
     1387         
    13021388                (#\Latin_Capital_Letter_G_With_Hook . #\Latin_Small_Letter_G_With_Hook)
     1389         
    13031390                (#\Latin_Capital_Letter_Gamma . #\Latin_Small_Letter_Gamma)
     1391         
    13041392                (#\Latin_Capital_Letter_Iota . #\Latin_Small_Letter_Iota)
     1393         
    13051394                (#\Latin_Capital_Letter_I_With_Stroke . #\Latin_Small_Letter_I_With_Stroke)
     1395         
    13061396                (#\Latin_Capital_Letter_K_With_Hook . #\Latin_Small_Letter_K_With_Hook)
     1397         
    13071398                (#\Latin_Capital_Letter_Turned_M . #\Latin_Small_Letter_Turned_M)
     1399         
    13081400                (#\Latin_Capital_Letter_N_With_Left_Hook
    13091401                 . #\Latin_Small_Letter_N_With_Left_Hook)
     1402         
    13101403                (#\Latin_Capital_Letter_O_With_Middle_Tilde . #\Latin_Small_Letter_Barred_O)
     1404         
    13111405                (#\Latin_Capital_Letter_O_With_Horn . #\Latin_Small_Letter_O_With_Horn)
     1406         
    13121407                (#\Latin_Capital_Letter_Oi . #\Latin_Small_Letter_Oi)
     1408         
    13131409                (#\Latin_Capital_Letter_P_With_Hook . #\Latin_Small_Letter_P_With_Hook)
     1410         
    13141411                (#\Latin_Letter_Yr . #\Latin_Letter_Small_Capital_R)
     1412         
    13151413                (#\Latin_Capital_Letter_Tone_Two . #\Latin_Small_Letter_Tone_Two)
     1414         
    13161415                (#\Latin_Capital_Letter_Esh . #\Latin_Small_Letter_Esh)
     1416         
    13171417                (#\Latin_Capital_Letter_T_With_Hook . #\Latin_Small_Letter_T_With_Hook)
     1418         
    13181419                (#\Latin_Capital_Letter_T_With_Retroflex_Hook
    13191420                 . #\Latin_Small_Letter_T_With_Retroflex_Hook)
     1421         
    13201422                (#\Latin_Capital_Letter_U_With_Horn . #\Latin_Small_Letter_U_With_Horn)
     1423         
    13211424                (#\Latin_Capital_Letter_Upsilon . #\Latin_Small_Letter_Upsilon)
     1425         
    13221426                (#\Latin_Capital_Letter_V_With_Hook . #\Latin_Small_Letter_V_With_Hook)
     1427         
    13231428                (#\Latin_Capital_Letter_Y_With_Hook . #\Latin_Small_Letter_Y_With_Hook)
     1429         
    13241430                (#\Latin_Capital_Letter_Z_With_Stroke . #\Latin_Small_Letter_Z_With_Stroke)
     1431         
    13251432                (#\Latin_Capital_Letter_Ezh . #\Latin_Small_Letter_Ezh)
     1433         
    13261434                (#\Latin_Capital_Letter_Ezh_Reversed . #\Latin_Small_Letter_Ezh_Reversed)
     1435         
    13271436                (#\Latin_Capital_Letter_Tone_Five . #\Latin_Small_Letter_Tone_Five)
     1437         
    13281438                (#\Latin_Capital_Letter_Dz_With_Caron . #\Latin_Small_Letter_Dz_With_Caron)
     1439         
    13291440                (#\Latin_Capital_Letter_Lj . #\Latin_Small_Letter_Lj)
     1441         
    13301442                (#\Latin_Capital_Letter_Nj . #\Latin_Small_Letter_Nj)
     1443         
    13311444                (#\Latin_Capital_Letter_A_With_Caron . #\Latin_Small_Letter_A_With_Caron)
     1445         
    13321446                (#\Latin_Capital_Letter_I_With_Caron . #\Latin_Small_Letter_I_With_Caron)
     1447         
    13331448                (#\Latin_Capital_Letter_O_With_Caron . #\Latin_Small_Letter_O_With_Caron)
     1449         
    13341450                (#\Latin_Capital_Letter_U_With_Caron . #\Latin_Small_Letter_U_With_Caron)
     1451         
    13351452                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Macron
    13361453                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Macron)
     1454         
    13371455                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Acute
    13381456                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Acute)
     1457         
    13391458                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Caron
    13401459                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Caron)
     1460         
    13411461                (#\Latin_Capital_Letter_U_With_Diaeresis_And_Grave
    13421462                 . #\Latin_Small_Letter_U_With_Diaeresis_And_Grave)
     1463         
    13431464                (#\Latin_Capital_Letter_A_With_Diaeresis_And_Macron
    13441465                 . #\Latin_Small_Letter_A_With_Diaeresis_And_Macron)
     1466         
    13451467                (#\Latin_Capital_Letter_A_With_Dot_Above_And_Macron
    13461468                 . #\Latin_Small_Letter_A_With_Dot_Above_And_Macron)
     1469         
    13471470                (#\Latin_Capital_Letter_Ae_With_Macron . #\Latin_Small_Letter_Ae_With_Macron)
     1471         
    13481472                (#\Latin_Capital_Letter_G_With_Stroke . #\Latin_Small_Letter_G_With_Stroke)
     1473         
    13491474                (#\Latin_Capital_Letter_G_With_Caron . #\Latin_Small_Letter_G_With_Caron)
     1475         
    13501476                (#\Latin_Capital_Letter_K_With_Caron . #\Latin_Small_Letter_K_With_Caron)
     1477         
    13511478                (#\Latin_Capital_Letter_O_With_Ogonek . #\Latin_Small_Letter_O_With_Ogonek)
     1479         
    13521480                (#\Latin_Capital_Letter_O_With_Ogonek_And_Macron
    13531481                 . #\Latin_Small_Letter_O_With_Ogonek_And_Macron)
     1482         
    13541483                (#\Latin_Capital_Letter_Ezh_With_Caron . #\Latin_Small_Letter_Ezh_With_Caron)
     1484         
    13551485                (#\Latin_Capital_Letter_Dz . #\Latin_Small_Letter_Dz)
     1486         
    13561487                (#\Latin_Capital_Letter_G_With_Acute . #\Latin_Small_Letter_G_With_Acute)
     1488         
    13571489                (#\Latin_Capital_Letter_Hwair . #\Latin_Small_Letter_Hv)
     1490         
    13581491                (#\Latin_Capital_Letter_Wynn . #\Latin_Letter_Wynn)
     1492         
    13591493                (#\Latin_Capital_Letter_N_With_Grave . #\Latin_Small_Letter_N_With_Grave)
     1494         
    13601495                (#\Latin_Capital_Letter_A_With_Ring_Above_And_Acute
    13611496                 . #\Latin_Small_Letter_A_With_Ring_Above_And_Acute)
     1497         
    13621498                (#\Latin_Capital_Letter_Ae_With_Acute . #\Latin_Small_Letter_Ae_With_Acute)
     1499         
    13631500                (#\Latin_Capital_Letter_O_With_Stroke_And_Acute
    13641501                 . #\Latin_Small_Letter_O_With_Stroke_And_Acute)
     1502         
    13651503                (#\Latin_Capital_Letter_A_With_Double_Grave
    13661504                 . #\Latin_Small_Letter_A_With_Double_Grave)
     1505         
    13671506                (#\Latin_Capital_Letter_A_With_Inverted_Breve
    13681507                 . #\Latin_Small_Letter_A_With_Inverted_Breve)
     1508         
    13691509                (#\Latin_Capital_Letter_E_With_Double_Grave
    13701510                 . #\Latin_Small_Letter_E_With_Double_Grave)
     1511         
    13711512                (#\Latin_Capital_Letter_E_With_Inverted_Breve
    13721513                 . #\Latin_Small_Letter_E_With_Inverted_Breve)
     1514         
    13731515                (#\Latin_Capital_Letter_I_With_Double_Grave
    13741516                 . #\Latin_Small_Letter_I_With_Double_Grave)
     1517         
    13751518                (#\Latin_Capital_Letter_I_With_Inverted_Breve
    13761519                 . #\Latin_Small_Letter_I_With_Inverted_Breve)
     1520         
    13771521                (#\Latin_Capital_Letter_O_With_Double_Grave
    13781522                 . #\Latin_Small_Letter_O_With_Double_Grave)
     1523         
    13791524                (#\Latin_Capital_Letter_O_With_Inverted_Breve
    13801525                 . #\Latin_Small_Letter_O_With_Inverted_Breve)
     1526         
    13811527                (#\Latin_Capital_Letter_R_With_Double_Grave
    13821528                 . #\Latin_Small_Letter_R_With_Double_Grave)
     1529         
    13831530                (#\Latin_Capital_Letter_R_With_Inverted_Breve
    13841531                 . #\Latin_Small_Letter_R_With_Inverted_Breve)
     1532         
    13851533                (#\Latin_Capital_Letter_U_With_Double_Grave
    13861534                 . #\Latin_Small_Letter_U_With_Double_Grave)
     1535         
    13871536                (#\Latin_Capital_Letter_U_With_Inverted_Breve
    13881537                 . #\Latin_Small_Letter_U_With_Inverted_Breve)
     1538         
    13891539                (#\Latin_Capital_Letter_S_With_Comma_Below
    13901540                 . #\Latin_Small_Letter_S_With_Comma_Below)
     1541         
    13911542                (#\Latin_Capital_Letter_T_With_Comma_Below
    13921543                 . #\Latin_Small_Letter_T_With_Comma_Below)
     1544         
    13931545                (#\Latin_Capital_Letter_Yogh . #\Latin_Small_Letter_Yogh)
     1546         
    13941547                (#\Latin_Capital_Letter_H_With_Caron . #\Latin_Small_Letter_H_With_Caron)
     1548         
    13951549                (#\Latin_Capital_Letter_N_With_Long_Right_Leg
    13961550                 . #\Latin_Small_Letter_N_With_Long_Right_Leg)
     1551         
    13971552                (#\Latin_Capital_Letter_Ou . #\Latin_Small_Letter_Ou)
     1553         
    13981554                (#\Latin_Capital_Letter_Z_With_Hook . #\Latin_Small_Letter_Z_With_Hook)
     1555         
    13991556                (#\Latin_Capital_Letter_A_With_Dot_Above
    14001557                 . #\Latin_Small_Letter_A_With_Dot_Above)
     1558         
    14011559                (#\Latin_Capital_Letter_E_With_Cedilla . #\Latin_Small_Letter_E_With_Cedilla)
     1560         
    14021561                (#\Latin_Capital_Letter_O_With_Diaeresis_And_Macron
    14031562                 . #\Latin_Small_Letter_O_With_Diaeresis_And_Macron)
     1563         
    14041564                (#\Latin_Capital_Letter_O_With_Tilde_And_Macron
    14051565                 . #\Latin_Small_Letter_O_With_Tilde_And_Macron)
     1566         
    14061567                (#\Latin_Capital_Letter_O_With_Dot_Above
    14071568                 . #\Latin_Small_Letter_O_With_Dot_Above)
     1569         
    14081570                (#\Latin_Capital_Letter_O_With_Dot_Above_And_Macron
    14091571                 . #\Latin_Small_Letter_O_With_Dot_Above_And_Macron)
     1572         
    14101573                (#\Latin_Capital_Letter_Y_With_Macron . #\Latin_Small_Letter_Y_With_Macron)
     1574         
    14111575                (#\Latin_Capital_Letter_A_With_Stroke . #\U+2C65)
     1576         
    14121577                (#\Latin_Capital_Letter_C_With_Stroke . #\Latin_Small_Letter_C_With_Stroke)
     1578         
    14131579                (#\Latin_Capital_Letter_L_With_Bar . #\Latin_Small_Letter_L_With_Bar)
     1580         
    14141581                (#\Latin_Capital_Letter_T_With_Diagonal_Stroke . #\U+2C66)
     1582         
    14151583                (#\Latin_Capital_Letter_Glottal_Stop . #\Latin_Small_Letter_Glottal_Stop)
     1584         
    14161585                (#\Latin_Capital_Letter_B_With_Stroke . #\Latin_Small_Letter_B_With_Stroke)
     1586         
    14171587                (#\Latin_Capital_Letter_U_Bar . #\Latin_Small_Letter_U_Bar)
     1588         
    14181589                (#\Latin_Capital_Letter_Turned_V . #\Latin_Small_Letter_Turned_V)
     1590         
    14191591                (#\Latin_Capital_Letter_E_With_Stroke . #\Latin_Small_Letter_E_With_Stroke)
     1592         
    14201593                (#\Latin_Capital_Letter_J_With_Stroke . #\Latin_Small_Letter_J_With_Stroke)
     1594         
    14211595                (#\Latin_Capital_Letter_Small_Q_With_Hook_Tail
    14221596                 . #\Latin_Small_Letter_Q_With_Hook_Tail)
     1597         
    14231598                (#\Latin_Capital_Letter_R_With_Stroke . #\Latin_Small_Letter_R_With_Stroke)
     1599         
    14241600                (#\Latin_Capital_Letter_Y_With_Stroke . #\Latin_Small_Letter_Y_With_Stroke)
     1601         
    14251602                (#\Greek_Capital_Letter_Alpha_With_Tonos
    14261603                 . #\Greek_Small_Letter_Alpha_With_Tonos)
     1604         
    14271605                (#\Greek_Capital_Letter_Epsilon_With_Tonos
    14281606                 . #\Greek_Small_Letter_Epsilon_With_Tonos)
     1607         
    14291608                (#\Greek_Capital_Letter_Eta_With_Tonos . #\Greek_Small_Letter_Eta_With_Tonos)
     1609         
    14301610                (#\Greek_Capital_Letter_Iota_With_Tonos
    14311611                 . #\Greek_Small_Letter_Iota_With_Tonos)
     1612         
    14321613                (#\Greek_Capital_Letter_Omicron_With_Tonos
    14331614                 . #\Greek_Small_Letter_Omicron_With_Tonos)
     1615         
    14341616                (#\Greek_Capital_Letter_Upsilon_With_Tonos
    14351617                 . #\Greek_Small_Letter_Upsilon_With_Tonos)
     1618         
    14361619                (#\Greek_Capital_Letter_Omega_With_Tonos
    14371620                 . #\Greek_Small_Letter_Omega_With_Tonos)
     1621         
    14381622                (#\Greek_Capital_Letter_Alpha . #\Greek_Small_Letter_Alpha)
     1623         
    14391624                (#\Greek_Capital_Letter_Beta . #\Greek_Small_Letter_Beta)
     1625         
    14401626                (#\Greek_Capital_Letter_Gamma . #\Greek_Small_Letter_Gamma)
     1627         
    14411628                (#\Greek_Capital_Letter_Delta . #\Greek_Small_Letter_Delta)
     1629         
    14421630                (#\Greek_Capital_Letter_Epsilon . #\Greek_Small_Letter_Epsilon)
     1631         
    14431632                (#\Greek_Capital_Letter_Zeta . #\Greek_Small_Letter_Zeta)
     1633         
    14441634                (#\Greek_Capital_Letter_Eta . #\Greek_Small_Letter_Eta)
     1635         
    14451636                (#\Greek_Capital_Letter_Theta . #\Greek_Small_Letter_Theta)
     1637         
    14461638                (#\Greek_Capital_Letter_Iota . #\Greek_Small_Letter_Iota)
     1639         
    14471640                (#\Greek_Capital_Letter_Kappa . #\Greek_Small_Letter_Kappa)
     1641         
    14481642                (#\Greek_Capital_Letter_Lamda . #\Greek_Small_Letter_Lamda)
     1643         
    14491644                (#\Greek_Capital_Letter_Mu . #\Greek_Small_Letter_Mu)
     1645         
    14501646                (#\Greek_Capital_Letter_Nu . #\Greek_Small_Letter_Nu)
     1647         
    14511648                (#\Greek_Capital_Letter_Xi . #\Greek_Small_Letter_Xi)
     1649         
    14521650                (#\Greek_Capital_Letter_Omicron . #\Greek_Small_Letter_Omicron)
     1651         
    14531652                (#\Greek_Capital_Letter_Pi . #\Greek_Small_Letter_Pi)
     1653         
    14541654                (#\Greek_Capital_Letter_Rho . #\Greek_Small_Letter_Rho)
     1655         
    14551656                (#\Greek_Capital_Letter_Sigma . #\Greek_Small_Letter_Sigma)
     1657         
    14561658                (#\Greek_Capital_Letter_Tau . #\Greek_Small_Letter_Tau)
     1659         
    14571660                (#\Greek_Capital_Letter_Upsilon . #\Greek_Small_Letter_Upsilon)
     1661         
    14581662                (#\Greek_Capital_Letter_Phi . #\Greek_Small_Letter_Phi)
     1663         
    14591664                (#\Greek_Capital_Letter_Chi . #\Greek_Small_Letter_Chi)
     1665         
    14601666                (#\Greek_Capital_Letter_Psi . #\Greek_Small_Letter_Psi)
     1667         
    14611668                (#\Greek_Capital_Letter_Omega . #\Greek_Small_Letter_Omega)
     1669         
    14621670                (#\Greek_Capital_Letter_Iota_With_Dialytika
    14631671                 . #\Greek_Small_Letter_Iota_With_Dialytika)
     1672         
    14641673                (#\Greek_Capital_Letter_Upsilon_With_Dialytika
    14651674                 . #\Greek_Small_Letter_Upsilon_With_Dialytika)
     1675         
    14661676                (#\Greek_Letter_Archaic_Koppa . #\Greek_Small_Letter_Archaic_Koppa)
     1677         
    14671678                (#\Greek_Letter_Stigma . #\Greek_Small_Letter_Stigma)
     1679         
    14681680                (#\Greek_Letter_Digamma . #\Greek_Small_Letter_Digamma)
     1681         
    14691682                (#\Greek_Letter_Koppa . #\Greek_Small_Letter_Koppa)
     1683         
    14701684                (#\Greek_Letter_Sampi . #\Greek_Small_Letter_Sampi)
     1685         
    14711686                (#\Coptic_Capital_Letter_Shei . #\Coptic_Small_Letter_Shei)
     1687         
    14721688                (#\Coptic_Capital_Letter_Fei . #\Coptic_Small_Letter_Fei)
     1689         
    14731690                (#\Coptic_Capital_Letter_Khei . #\Coptic_Small_Letter_Khei)
     1691         
    14741692                (#\Coptic_Capital_Letter_Hori . #\Coptic_Small_Letter_Hori)
     1693         
    14751694                (#\Coptic_Capital_Letter_Gangia . #\Coptic_Small_Letter_Gangia)
     1695         
    14761696                (#\Coptic_Capital_Letter_Shima . #\Coptic_Small_Letter_Shima)
     1697         
    14771698                (#\Coptic_Capital_Letter_Dei . #\Coptic_Small_Letter_Dei)
     1699         
    14781700                (#\Greek_Capital_Letter_Sho . #\Greek_Small_Letter_Sho)
     1701         
    14791702                (#\Greek_Capital_Lunate_Sigma_Symbol . #\Greek_Lunate_Sigma_Symbol)
     1703         
    14801704                (#\Greek_Capital_Letter_San . #\Greek_Small_Letter_San)
     1705         
    14811706                (#\Greek_Capital_Reversed_Lunate_Sigma_Symbol
    14821707                 . #\Greek_Small_Reversed_Lunate_Sigma_Symbol)
     1708         
    14831709                (#\Greek_Capital_Dotted_Lunate_Sigma_Symbol
    14841710                 . #\Greek_Small_Dotted_Lunate_Sigma_Symbol)
     1711         
    14851712                (#\Greek_Capital_Reversed_Dotted_Lunate_Sigma_Symbol
    14861713                 . #\Greek_Small_Reversed_Dotted_Lunate_Sigma_Symbol)
     1714         
    14871715                (#\Cyrillic_Capital_Letter_Ie_With_Grave
    14881716                 . #\Cyrillic_Small_Letter_Ie_With_Grave)
     1717         
    14891718                (#\Cyrillic_Capital_Letter_Io . #\Cyrillic_Small_Letter_Io)
     1719         
    14901720                (#\Cyrillic_Capital_Letter_Dje . #\Cyrillic_Small_Letter_Dje)
     1721         
    14911722                (#\Cyrillic_Capital_Letter_Gje . #\Cyrillic_Small_Letter_Gje)
     1723         
    14921724                (#\Cyrillic_Capital_Letter_Ukrainian_Ie
    14931725                 . #\Cyrillic_Small_Letter_Ukrainian_Ie)
     1726         
    14941727                (#\Cyrillic_Capital_Letter_Dze . #\Cyrillic_Small_Letter_Dze)
     1728         
    14951729                (#\Cyrillic_Capital_Letter_Byelorussian-Ukrainian_I
    14961730                 . #\Cyrillic_Small_Letter_Byelorussian-Ukrainian_I)
     1731         
    14971732                (#\Cyrillic_Capital_Letter_Yi . #\Cyrillic_Small_Letter_Yi)
     1733         
    14981734                (#\Cyrillic_Capital_Letter_Je . #\Cyrillic_Small_Letter_Je)
     1735         
    14991736                (#\Cyrillic_Capital_Letter_Lje . #\Cyrillic_Small_Letter_Lje)
     1737         
    15001738                (#\Cyrillic_Capital_Letter_Nje . #\Cyrillic_Small_Letter_Nje)
     1739         
    15011740                (#\Cyrillic_Capital_Letter_Tshe . #\Cyrillic_Small_Letter_Tshe)
     1741         
    15021742                (#\Cyrillic_Capital_Letter_Kje . #\Cyrillic_Small_Letter_Kje)
     1743         
    15031744                (#\Cyrillic_Capital_Letter_I_With_Grave
    15041745                 . #\Cyrillic_Small_Letter_I_With_Grave)
     1746         
    15051747                (#\Cyrillic_Capital_Letter_Short_U . #\Cyrillic_Small_Letter_Short_U)
     1748         
    15061749                (#\Cyrillic_Capital_Letter_Dzhe . #\Cyrillic_Small_Letter_Dzhe)
     1750         
    15071751                (#\Cyrillic_Capital_Letter_A . #\Cyrillic_Small_Letter_A)
     1752         
    15081753                (#\Cyrillic_Capital_Letter_Be . #\Cyrillic_Small_Letter_Be)
     1754         
    15091755                (#\Cyrillic_Capital_Letter_Ve . #\Cyrillic_Small_Letter_Ve)
     1756         
    15101757                (#\Cyrillic_Capital_Letter_Ghe . #\Cyrillic_Small_Letter_Ghe)
     1758         
    15111759                (#\Cyrillic_Capital_Letter_De . #\Cyrillic_Small_Letter_De)
     1760         
    15121761                (#\Cyrillic_Capital_Letter_Ie . #\Cyrillic_Small_Letter_Ie)
     1762         
    15131763                (#\Cyrillic_Capital_Letter_Zhe . #\Cyrillic_Small_Letter_Zhe)
     1764         
    15141765                (#\Cyrillic_Capital_Letter_Ze . #\Cyrillic_Small_Letter_Ze)
     1766         
    15151767                (#\Cyrillic_Capital_Letter_I . #\Cyrillic_Small_Letter_I)
     1768         
    15161769                (#\Cyrillic_Capital_Letter_Short_I . #\Cyrillic_Small_Letter_Short_I)
     1770         
    15171771                (#\Cyrillic_Capital_Letter_Ka . #\Cyrillic_Small_Letter_Ka)
     1772         
    15181773                (#\Cyrillic_Capital_Letter_El . #\Cyrillic_Small_Letter_El)
     1774         
    15191775                (#\Cyrillic_Capital_Letter_Em . #\Cyrillic_Small_Letter_Em)
     1776         
    15201777                (#\Cyrillic_Capital_Letter_En . #\Cyrillic_Small_Letter_En)
     1778         
    15211779                (#\Cyrillic_Capital_Letter_O . #\Cyrillic_Small_Letter_O)
     1780         
    15221781                (#\Cyrillic_Capital_Letter_Pe . #\Cyrillic_Small_Letter_Pe)
     1782         
    15231783                (#\Cyrillic_Capital_Letter_Er . #\Cyrillic_Small_Letter_Er)
     1784         
    15241785                (#\Cyrillic_Capital_Letter_Es . #\Cyrillic_Small_Letter_Es)
     1786         
    15251787                (#\Cyrillic_Capital_Letter_Te . #\Cyrillic_Small_Letter_Te)
     1788         
    15261789                (#\Cyrillic_Capital_Letter_U . #\Cyrillic_Small_Letter_U)
     1790         
    15271791                (#\Cyrillic_Capital_Letter_Ef . #\Cyrillic_Small_Letter_Ef)
     1792         
    15281793                (#\Cyrillic_Capital_Letter_Ha . #\Cyrillic_Small_Letter_Ha)
     1794         
    15291795                (#\Cyrillic_Capital_Letter_Tse . #\Cyrillic_Small_Letter_Tse)
     1796         
    15301797                (#\Cyrillic_Capital_Letter_Che . #\Cyrillic_Small_Letter_Che)
     1798         
    15311799                (#\Cyrillic_Capital_Letter_Sha . #\Cyrillic_Small_Letter_Sha)
     1800         
    15321801                (#\Cyrillic_Capital_Letter_Shcha . #\Cyrillic_Small_Letter_Shcha)
     1802         
    15331803                (#\Cyrillic_Capital_Letter_Hard_Sign . #\Cyrillic_Small_Letter_Hard_Sign)
     1804         
    15341805                (#\Cyrillic_Capital_Letter_Yeru . #\Cyrillic_Small_Letter_Yeru)
     1806         
    15351807                (#\Cyrillic_Capital_Letter_Soft_Sign . #\Cyrillic_Small_Letter_Soft_Sign)
     1808         
    15361809                (#\Cyrillic_Capital_Letter_E . #\Cyrillic_Small_Letter_E)
     1810         
    15371811                (#\Cyrillic_Capital_Letter_Yu . #\Cyrillic_Small_Letter_Yu)
     1812         
    15381813                (#\Cyrillic_Capital_Letter_Ya . #\Cyrillic_Small_Letter_Ya)
     1814         
    15391815                (#\Cyrillic_Capital_Letter_Omega . #\Cyrillic_Small_Letter_Omega)
     1816         
    15401817                (#\Cyrillic_Capital_Letter_Yat . #\Cyrillic_Small_Letter_Yat)
     1818         
    15411819                (#\Cyrillic_Capital_Letter_Iotified_E . #\Cyrillic_Small_Letter_Iotified_E)
     1820         
    15421821                (#\Cyrillic_Capital_Letter_Little_Yus . #\Cyrillic_Small_Letter_Little_Yus)
     1822         
    15431823                (#\Cyrillic_Capital_Letter_Iotified_Little_Yus
    15441824                 . #\Cyrillic_Small_Letter_Iotified_Little_Yus)
     1825         
    15451826                (#\Cyrillic_Capital_Letter_Big_Yus . #\Cyrillic_Small_Letter_Big_Yus)
     1827         
    15461828                (#\Cyrillic_Capital_Letter_Iotified_Big_Yus
    15471829                 . #\Cyrillic_Small_Letter_Iotified_Big_Yus)
     1830         
    15481831                (#\Cyrillic_Capital_Letter_Ksi . #\Cyrillic_Small_Letter_Ksi)
     1832         
    15491833                (#\Cyrillic_Capital_Letter_Psi . #\Cyrillic_Small_Letter_Psi)
     1834         
    15501835                (#\Cyrillic_Capital_Letter_Fita . #\Cyrillic_Small_Letter_Fita)
     1836         
    15511837                (#\Cyrillic_Capital_Letter_Izhitsa . #\Cyrillic_Small_Letter_Izhitsa)
     1838         
    15521839                (#\Cyrillic_Capital_Letter_Izhitsa_With_Double_Grave_Accent
    15531840                 . #\Cyrillic_Small_Letter_Izhitsa_With_Double_Grave_Accent)
     1841         
    15541842                (#\Cyrillic_Capital_Letter_Uk . #\Cyrillic_Small_Letter_Uk)
     1843         
    15551844                (#\Cyrillic_Capital_Letter_Round_Omega . #\Cyrillic_Small_Letter_Round_Omega)
     1845         
    15561846                (#\Cyrillic_Capital_Letter_Omega_With_Titlo
    15571847                 . #\Cyrillic_Small_Letter_Omega_With_Titlo)
     1848         
    15581849                (#\Cyrillic_Capital_Letter_Ot . #\Cyrillic_Small_Letter_Ot)
     1850         
    15591851                (#\Cyrillic_Capital_Letter_Koppa . #\Cyrillic_Small_Letter_Koppa)
     1852         
    15601853                (#\Cyrillic_Capital_Letter_Short_I_With_Tail
    15611854                 . #\Cyrillic_Small_Letter_Short_I_With_Tail)
     1855         
    15621856                (#\Cyrillic_Capital_Letter_Semisoft_Sign
    15631857                 . #\Cyrillic_Small_Letter_Semisoft_Sign)
     1858         
    15641859                (#\Cyrillic_Capital_Letter_Er_With_Tick
    15651860                 . #\Cyrillic_Small_Letter_Er_With_Tick)
     1861         
    15661862                (#\Cyrillic_Capital_Letter_Ghe_With_Upturn
    15671863                 . #\Cyrillic_Small_Letter_Ghe_With_Upturn)
     1864         
    15681865                (#\Cyrillic_Capital_Letter_Ghe_With_Stroke
    15691866                 . #\Cyrillic_Small_Letter_Ghe_With_Stroke)
     1867         
    15701868                (#\Cyrillic_Capital_Letter_Ghe_With_Middle_Hook
    15711869                 . #\Cyrillic_Small_Letter_Ghe_With_Middle_Hook)
     1870         
    15721871                (#\Cyrillic_Capital_Letter_Zhe_With_Descender
    15731872                 . #\Cyrillic_Small_Letter_Zhe_With_Descender)
     1873         
    15741874                (#\Cyrillic_Capital_Letter_Ze_With_Descender
    15751875                 . #\Cyrillic_Small_Letter_Ze_With_Descender)
     1876         
    15761877                (#\Cyrillic_Capital_Letter_Ka_With_Descender
    15771878                 . #\Cyrillic_Small_Letter_Ka_With_Descender)
     1879         
    15781880                (#\Cyrillic_Capital_Letter_Ka_With_Vertical_Stroke
    15791881                 . #\Cyrillic_Small_Letter_Ka_With_Vertical_Stroke)
     1882         
    15801883                (#\Cyrillic_Capital_Letter_Ka_With_Stroke
    15811884                 . #\Cyrillic_Small_Letter_Ka_With_Stroke)
     1885         
    15821886                (#\Cyrillic_Capital_Letter_Bashkir_Ka . #\Cyrillic_Small_Letter_Bashkir_Ka)
     1887         
    15831888                (#\Cyrillic_Capital_Letter_En_With_Descender
    15841889                 . #\Cyrillic_Small_Letter_En_With_Descender)
     1890         
    15851891                (#\Cyrillic_Capital_Ligature_En_Ghe . #\Cyrillic_Small_Ligature_En_Ghe)
     1892         
    15861893                (#\Cyrillic_Capital_Letter_Pe_With_Middle_Hook
    15871894                 . #\Cyrillic_Small_Letter_Pe_With_Middle_Hook)
     1895         
    15881896                (#\Cyrillic_Capital_Letter_Abkhasian_Ha
    15891897                 . #\Cyrillic_Small_Letter_Abkhasian_Ha)
     1898         
    15901899                (#\Cyrillic_Capital_Letter_Es_With_Descender
    15911900                 . #\Cyrillic_Small_Letter_Es_With_Descender)
     1901         
    15921902                (#\Cyrillic_Capital_Letter_Te_With_Descender
    15931903                 . #\Cyrillic_Small_Letter_Te_With_Descender)
     1904         
    15941905                (#\Cyrillic_Capital_Letter_Straight_U . #\Cyrillic_Small_Letter_Straight_U)
     1906         
    15951907                (#\Cyrillic_Capital_Letter_Straight_U_With_Stroke
    15961908                 . #\Cyrillic_Small_Letter_Straight_U_With_Stroke)
     1909         
    15971910                (#\Cyrillic_Capital_Letter_Ha_With_Descender
    15981911                 . #\Cyrillic_Small_Letter_Ha_With_Descender)
     1912         
    15991913                (#\Cyrillic_Capital_Ligature_Te_Tse . #\Cyrillic_Small_Ligature_Te_Tse)
     1914         
    16001915                (#\Cyrillic_Capital_Letter_Che_With_Descender
    16011916                 . #\Cyrillic_Small_Letter_Che_With_Descender)
     1917         
    16021918                (#\Cyrillic_Capital_Letter_Che_With_Vertical_Stroke
    16031919                 . #\Cyrillic_Small_Letter_Che_With_Vertical_Stroke)
     1920         
    16041921                (#\Cyrillic_Capital_Letter_Shha . #\Cyrillic_Small_Letter_Shha)
     1922         
    16051923                (#\Cyrillic_Capital_Letter_Abkhasian_Che
    16061924                 . #\Cyrillic_Small_Letter_Abkhasian_Che)
     1925         
    16071926                (#\Cyrillic_Capital_Letter_Abkhasian_Che_With_Descender
    16081927                 . #\Cyrillic_Small_Letter_Abkhasian_Che_With_Descender)
     1928         
    16091929                (#\Cyrillic_Letter_Palochka . #\Cyrillic_Small_Letter_Palochka)
     1930         
    16101931                (#\Cyrillic_Capital_Letter_Zhe_With_Breve
    16111932                 . #\Cyrillic_Small_Letter_Zhe_With_Breve)
     1933         
    16121934                (#\Cyrillic_Capital_Letter_Ka_With_Hook
    16131935                 . #\Cyrillic_Small_Letter_Ka_With_Hook)
     1936         
    16141937                (#\Cyrillic_Capital_Letter_El_With_Tail
    16151938                 . #\Cyrillic_Small_Letter_El_With_Tail)
     1939         
    16161940                (#\Cyrillic_Capital_Letter_En_With_Hook
    16171941                 . #\Cyrillic_Small_Letter_En_With_Hook)
     1942         
    16181943                (#\Cyrillic_Capital_Letter_En_With_Tail
    16191944                 . #\Cyrillic_Small_Letter_En_With_Tail)
     1945         
    16201946                (#\Cyrillic_Capital_Letter_Khakassian_Che
    16211947                 . #\Cyrillic_Small_Letter_Khakassian_Che)
     1948         
    16221949                (#\Cyrillic_Capital_Letter_Em_With_Tail
    16231950                 . #\Cyrillic_Small_Letter_Em_With_Tail)
     1951         
    16241952                (#\Cyrillic_Capital_Letter_A_With_Breve
    16251953                 . #\Cyrillic_Small_Letter_A_With_Breve)
     1954         
    16261955                (#\Cyrillic_Capital_Letter_A_With_Diaeresis
    16271956                 . #\Cyrillic_Small_Letter_A_With_Diaeresis)
     1957         
    16281958                (#\Cyrillic_Capital_Ligature_A_Ie . #\Cyrillic_Small_Ligature_A_Ie)
     1959         
    16291960                (#\Cyrillic_Capital_Letter_Ie_With_Breve
    16301961                 . #\Cyrillic_Small_Letter_Ie_With_Breve)
     1962         
    16311963                (#\Cyrillic_Capital_Letter_Schwa . #\Cyrillic_Small_Letter_Schwa)
     1964         
    16321965                (#\Cyrillic_Capital_Letter_Schwa_With_Diaeresis
    16331966                 . #\Cyrillic_Small_Letter_Schwa_With_Diaeresis)
     1967         
    16341968                (#\Cyrillic_Capital_Letter_Zhe_With_Diaeresis
    16351969                 . #\Cyrillic_Small_Letter_Zhe_With_Diaeresis)
     1970         
    16361971                (#\Cyrillic_Capital_Letter_Ze_With_Diaeresis
    16371972                 . #\Cyrillic_Small_Letter_Ze_With_Diaeresis)
     1973         
    16381974                (#\Cyrillic_Capital_Letter_Abkhasian_Dze
    16391975                 . #\Cyrillic_Small_Letter_Abkhasian_Dze)
     1976         
    16401977                (#\Cyrillic_Capital_Letter_I_With_Macron
    16411978                 . #\Cyrillic_Small_Letter_I_With_Macron)
     1979         
    16421980                (#\Cyrillic_Capital_Letter_I_With_Diaeresis
    16431981                 . #\Cyrillic_Small_Letter_I_With_Diaeresis)
     1982         
    16441983                (#\Cyrillic_Capital_Letter_O_With_Diaeresis
    16451984                 . #\Cyrillic_Small_Letter_O_With_Diaeresis)
     1985         
    16461986                (#\Cyrillic_Capital_Letter_Barred_O . #\Cyrillic_Small_Letter_Barred_O)
     1987         
    16471988                (#\Cyrillic_Capital_Letter_Barred_O_With_Diaeresis
    16481989                 . #\Cyrillic_Small_Letter_Barred_O_With_Diaeresis)
     1990         
    16491991                (#\Cyrillic_Capital_Letter_E_With_Diaeresis
    16501992                 . #\Cyrillic_Small_Letter_E_With_Diaeresis)
     1993         
    16511994                (#\Cyrillic_Capital_Letter_U_With_Macron
    16521995                 . #\Cyrillic_Small_Letter_U_With_Macron)
     1996         
    16531997                (#\Cyrillic_Capital_Letter_U_With_Diaeresis
    16541998                 . #\Cyrillic_Small_Letter_U_With_Diaeresis)
     1999         
    16552000                (#\Cyrillic_Capital_Letter_U_With_Double_Acute
    16562001                 . #\Cyrillic_Small_Letter_U_With_Double_Acute)
     2002         
    16572003                (#\Cyrillic_Capital_Letter_Che_With_Diaeresis
    16582004                 . #\Cyrillic_Small_Letter_Che_With_Diaeresis)
     2005         
    16592006                (#\Cyrillic_Capital_Letter_Ghe_With_Descender
    16602007                 . #\Cyrillic_Small_Letter_Ghe_With_Descender)
     2008         
    16612009                (#\Cyrillic_Capital_Letter_Yeru_With_Diaeresis
    16622010                 . #\Cyrillic_Small_Letter_Yeru_With_Diaeresis)
     2011         
    16632012                (#\Cyrillic_Capital_Letter_Ghe_With_Stroke_And_Hook
    16642013                 . #\Cyrillic_Small_Letter_Ghe_With_Stroke_And_Hook)
     2014         
    16652015                (#\Cyrillic_Capital_Letter_Ha_With_Hook
    16662016                 . #\Cyrillic_Small_Letter_Ha_With_Hook)
     2017         
    16672018                (#\Cyrillic_Capital_Letter_Ha_With_Stroke
    16682019                 . #\Cyrillic_Small_Letter_Ha_With_Stroke)
     2020         
    16692021                (#\Cyrillic_Capital_Letter_Komi_De . #\Cyrillic_Small_Letter_Komi_De)
     2022         
    16702023                (#\Cyrillic_Capital_Letter_Komi_Dje . #\Cyrillic_Small_Letter_Komi_Dje)
     2024         
    16712025                (#\Cyrillic_Capital_Letter_Komi_Zje . #\Cyrillic_Small_Letter_Komi_Zje)
     2026         
    16722027                (#\Cyrillic_Capital_Letter_Komi_Dzje . #\Cyrillic_Small_Letter_Komi_Dzje)
     2028         
    16732029                (#\Cyrillic_Capital_Letter_Komi_Lje . #\Cyrillic_Small_Letter_Komi_Lje)
     2030         
    16742031                (#\Cyrillic_Capital_Letter_Komi_Nje . #\Cyrillic_Small_Letter_Komi_Nje)
     2032         
    16752033                (#\Cyrillic_Capital_Letter_Komi_Sje . #\Cyrillic_Small_Letter_Komi_Sje)
     2034         
    16762035                (#\Cyrillic_Capital_Letter_Komi_Tje . #\Cyrillic_Small_Letter_Komi_Tje)
     2036         
    16772037                (#\Cyrillic_Capital_Letter_Reversed_Ze . #\Cyrillic_Small_Letter_Reversed_Ze)
     2038         
    16782039                (#\Cyrillic_Capital_Letter_El_With_Hook
    16792040                 . #\Cyrillic_Small_Letter_El_With_Hook)
     2041         
    16802042                (#\Armenian_Capital_Letter_Ayb . #\Armenian_Small_Letter_Ayb)
     2043         
    16812044                (#\Armenian_Capital_Letter_Ben . #\Armenian_Small_Letter_Ben)
     2045         
    16822046                (#\Armenian_Capital_Letter_Gim . #\Armenian_Small_Letter_Gim)
     2047         
    16832048                (#\Armenian_Capital_Letter_Da . #\Armenian_Small_Letter_Da)
     2049         
    16842050                (#\Armenian_Capital_Letter_Ech . #\Armenian_Small_Letter_Ech)
     2051         
    16852052                (#\Armenian_Capital_Letter_Za . #\Armenian_Small_Letter_Za)
     2053         
    16862054                (#\Armenian_Capital_Letter_Eh . #\Armenian_Small_Letter_Eh)
     2055         
    16872056                (#\Armenian_Capital_Letter_Et . #\Armenian_Small_Letter_Et)
     2057         
    16882058                (#\Armenian_Capital_Letter_To . #\Armenian_Small_Letter_To)
     2059         
    16892060                (#\Armenian_Capital_Letter_Zhe . #\Armenian_Small_Letter_Zhe)
     2061         
    16902062                (#\Armenian_Capital_Letter_Ini . #\Armenian_Small_Letter_Ini)
     2063         
    16912064                (#\Armenian_Capital_Letter_Liwn . #\Armenian_Small_Letter_Liwn)
     2065         
    16922066                (#\Armenian_Capital_Letter_Xeh . #\Armenian_Small_Letter_Xeh)
     2067         
    16932068                (#\Armenian_Capital_Letter_Ca . #\Armenian_Small_Letter_Ca)
     2069         
    16942070                (#\Armenian_Capital_Letter_Ken . #\Armenian_Small_Letter_Ken)
     2071         
    16952072                (#\Armenian_Capital_Letter_Ho . #\Armenian_Small_Letter_Ho)
     2073         
    16962074                (#\Armenian_Capital_Letter_Ja . #\Armenian_Small_Letter_Ja)
     2075         
    16972076                (#\Armenian_Capital_Letter_Ghad . #\Armenian_Small_Letter_Ghad)
     2077         
    16982078                (#\Armenian_Capital_Letter_Cheh . #\Armenian_Small_Letter_Cheh)
     2079         
    16992080                (#\Armenian_Capital_Letter_Men . #\Armenian_Small_Letter_Men)
     2081         
    17002082                (#\Armenian_Capital_Letter_Yi . #\Armenian_Small_Letter_Yi)
     2083         
    17012084                (#\Armenian_Capital_Letter_Now . #\Armenian_Small_Letter_Now)
     2085         
    17022086                (#\Armenian_Capital_Letter_Sha . #\Armenian_Small_Letter_Sha)
     2087         
    17032088                (#\Armenian_Capital_Letter_Vo . #\Armenian_Small_Letter_Vo)
     2089         
    17042090                (#\Armenian_Capital_Letter_Cha . #\Armenian_Small_Letter_Cha)
     2091         
    17052092                (#\Armenian_Capital_Letter_Peh . #\Armenian_Small_Letter_Peh)
     2093         
    17062094                (#\Armenian_Capital_Letter_Jheh . #\Armenian_Small_Letter_Jheh)
     2095         
    17072096                (#\Armenian_Capital_Letter_Ra . #\Armenian_Small_Letter_Ra)
     2097         
    17082098                (#\Armenian_Capital_Letter_Seh . #\Armenian_Small_Letter_Seh)
     2099         
    17092100                (#\Armenian_Capital_Letter_Vew . #\Armenian_Small_Letter_Vew)
     2101         
    17102102                (#\Armenian_Capital_Letter_Tiwn . #\Armenian_Small_Letter_Tiwn)
     2103         
    17112104                (#\Armenian_Capital_Letter_Reh . #\Armenian_Small_Letter_Reh)
     2105         
    17122106                (#\Armenian_Capital_Letter_Co . #\Armenian_Small_Letter_Co)
     2107         
    17132108                (#\Armenian_Capital_Letter_Yiwn . #\Armenian_Small_Letter_Yiwn)
     2109         
    17142110                (#\Armenian_Capital_Letter_Piwr . #\Armenian_Small_Letter_Piwr)
     2111         
    17152112                (#\Armenian_Capital_Letter_Keh . #\Armenian_Small_Letter_Keh)
     2113         
    17162114                (#\Armenian_Capital_Letter_Oh . #\Armenian_Small_Letter_Oh)
     2115         
    17172116                (#\Armenian_Capital_Letter_Feh . #\Armenian_Small_Letter_Feh)
    1718                 (#\U+10A0 . #\U+2D00) (#\U+10A1 . #\U+2D01) (#\U+10A2 . #\U+2D02)
    1719                 (#\U+10A3 . #\U+2D03) (#\U+10A4 . #\U+2D04) (#\U+10A5 . #\U+2D05)
    1720                 (#\U+10A6 . #\U+2D06) (#\U+10A7 . #\U+2D07) (#\U+10A8 . #\U+2D08)
    1721                 (#\U+10A9 . #\U+2D09) (#\U+10AA . #\U+2D0A) (#\U+10AB . #\U+2D0B)
    1722                 (#\U+10AC . #\U+2D0C) (#\U+10AD . #\U+2D0D) (#\U+10AE . #\U+2D0E)
    1723                 (#\U+10AF . #\U+2D0F) (#\U+10B0 . #\U+2D10) (#\U+10B1 . #\U+2D11)
    1724                 (#\U+10B2 . #\U+2D12) (#\U+10B3 . #\U+2D13) (#\U+10B4 . #\U+2D14)
    1725                 (#\U+10B5 . #\U+2D15) (#\U+10B6 . #\U+2D16) (#\U+10B7 . #\U+2D17)
    1726                 (#\U+10B8 . #\U+2D18) (#\U+10B9 . #\U+2D19) (#\U+10BA . #\U+2D1A)
    1727                 (#\U+10BB . #\U+2D1B) (#\U+10BC . #\U+2D1C) (#\U+10BD . #\U+2D1D)
    1728                 (#\U+10BE . #\U+2D1E) (#\U+10BF . #\U+2D1F) (#\U+10C0 . #\U+2D20)
    1729                 (#\U+10C1 . #\U+2D21) (#\U+10C2 . #\U+2D22) (#\U+10C3 . #\U+2D23)
    1730                 (#\U+10C4 . #\U+2D24) (#\U+10C5 . #\U+2D25) (#\U+1E00 . #\U+1E01)
    1731                 (#\U+1E02 . #\U+1E03) (#\U+1E04 . #\U+1E05) (#\U+1E06 . #\U+1E07)
    1732                 (#\U+1E08 . #\U+1E09) (#\U+1E0A . #\U+1E0B) (#\U+1E0C . #\U+1E0D)
    1733                 (#\U+1E0E . #\U+1E0F) (#\U+1E10 . #\U+1E11) (#\U+1E12 . #\U+1E13)
    1734                 (#\U+1E14 . #\U+1E15) (#\U+1E16 . #\U+1E17) (#\U+1E18 . #\U+1E19)
    1735                 (#\U+1E1A . #\U+1E1B) (#\U+1E1C . #\U+1E1D) (#\U+1E1E . #\U+1E1F)
    1736                 (#\U+1E20 . #\U+1E21) (#\U+1E22 . #\U+1E23) (#\U+1E24 . #\U+1E25)
    1737                 (#\U+1E26 . #\U+1E27) (#\U+1E28 . #\U+1E29) (#\U+1E2A . #\U+1E2B)
    1738                 (#\U+1E2C . #\U+1E2D) (#\U+1E2E . #\U+1E2F) (#\U+1E30 . #\U+1E31)
    1739                 (#\U+1E32 . #\U+1E33) (#\U+1E34 . #\U+1E35) (#\U+1E36 . #\U+1E37)
    1740                 (#\U+1E38 . #\U+1E39) (#\U+1E3A . #\U+1E3B) (#\U+1E3C . #\U+1E3D)
    1741                 (#\U+1E3E . #\U+1E3F) (#\U+1E40 . #\U+1E41) (#\U+1E42 . #\U+1E43)
    1742                 (#\U+1E44 . #\U+1E45) (#\U+1E46 . #\U+1E47) (#\U+1E48 . #\U+1E49)
    1743                 (#\U+1E4A . #\U+1E4B) (#\U+1E4C . #\U+1E4D) (#\U+1E4E . #\U+1E4F)
    1744                 (#\U+1E50 . #\U+1E51) (#\U+1E52 . #\U+1E53) (#\U+1E54 . #\U+1E55)
    1745                 (#\U+1E56 . #\U+1E57) (#\U+1E58 . #\U+1E59) (#\U+1E5A . #\U+1E5B)
    1746                 (#\U+1E5C . #\U+1E5D) (#\U+1E5E . #\U+1E5F) (#\U+1E60 . #\U+1E61)
    1747                 (#\U+1E62 . #\U+1E63) (#\U+1E64 . #\U+1E65) (#\U+1E66 . #\U+1E67)
    1748                 (#\U+1E68 . #\U+1E69) (#\U+1E6A . #\U+1E6B) (#\U+1E6C . #\U+1E6D)
    1749                 (#\U+1E6E . #\U+1E6F) (#\U+1E70 . #\U+1E71) (#\U+1E72 . #\U+1E73)
    1750                 (#\U+1E74 . #\U+1E75) (#\U+1E76 . #\U+1E77) (#\U+1E78 . #\U+1E79)
    1751                 (#\U+1E7A . #\U+1E7B) (#\U+1E7C . #\U+1E7D) (#\U+1E7E . #\U+1E7F)
    1752                 (#\U+1E80 . #\U+1E81) (#\U+1E82 . #\U+1E83) (#\U+1E84 . #\U+1E85)
    1753                 (#\U+1E86 . #\U+1E87) (#\U+1E88 . #\U+1E89) (#\U+1E8A . #\U+1E8B)
    1754                 (#\U+1E8C . #\U+1E8D) (#\U+1E8E . #\U+1E8F) (#\U+1E90 . #\U+1E91)
    1755                 (#\U+1E92 . #\U+1E93) (#\U+1E94 . #\U+1E95) (#\U+1EA0 . #\U+1EA1)
    1756                 (#\U+1EA2 . #\U+1EA3) (#\U+1EA4 . #\U+1EA5) (#\U+1EA6 . #\U+1EA7)
    1757                 (#\U+1EA8 . #\U+1EA9) (#\U+1EAA . #\U+1EAB) (#\U+1EAC . #\U+1EAD)
    1758                 (#\U+1EAE . #\U+1EAF) (#\U+1EB0 . #\U+1EB1) (#\U+1EB2 . #\U+1EB3)
    1759                 (#\U+1EB4 . #\U+1EB5) (#\U+1EB6 . #\U+1EB7) (#\U+1EB8 . #\U+1EB9)
    1760                 (#\U+1EBA . #\U+1EBB) (#\U+1EBC . #\U+1EBD) (#\U+1EBE . #\U+1EBF)
    1761                 (#\U+1EC0 . #\U+1EC1) (#\U+1EC2 . #\U+1EC3) (#\U+1EC4 . #\U+1EC5)
    1762                 (#\U+1EC6 . #\U+1EC7) (#\U+1EC8 . #\U+1EC9) (#\U+1ECA . #\U+1ECB)
    1763                 (#\U+1ECC . #\U+1ECD) (#\U+1ECE . #\U+1ECF) (#\U+1ED0 . #\U+1ED1)
    1764                 (#\U+1ED2 . #\U+1ED3) (#\U+1ED4 . #\U+1ED5) (#\U+1ED6 . #\U+1ED7)
    1765                 (#\U+1ED8 . #\U+1ED9) (#\U+1EDA . #\U+1EDB) (#\U+1EDC . #\U+1EDD)
    1766                 (#\U+1EDE . #\U+1EDF) (#\U+1EE0 . #\U+1EE1) (#\U+1EE2 . #\U+1EE3)
    1767                 (#\U+1EE4 . #\U+1EE5) (#\U+1EE6 . #\U+1EE7) (#\U+1EE8 . #\U+1EE9)
    1768                 (#\U+1EEA . #\U+1EEB) (#\U+1EEC . #\U+1EED) (#\U+1EEE . #\U+1EEF)
    1769                 (#\U+1EF0 . #\U+1EF1) (#\U+1EF2 . #\U+1EF3) (#\U+1EF4 . #\U+1EF5)
    1770                 (#\U+1EF6 . #\U+1EF7) (#\U+1EF8 . #\U+1EF9) (#\U+1F08 . #\U+1F00)
    1771                 (#\U+1F09 . #\U+1F01) (#\U+1F0A . #\U+1F02) (#\U+1F0B . #\U+1F03)
    1772                 (#\U+1F0C . #\U+1F04) (#\U+1F0D . #\U+1F05) (#\U+1F0E . #\U+1F06)
    1773                 (#\U+1F0F . #\U+1F07) (#\U+1F18 . #\U+1F10) (#\U+1F19 . #\U+1F11)
    1774                 (#\U+1F1A . #\U+1F12) (#\U+1F1B . #\U+1F13) (#\U+1F1C . #\U+1F14)
    1775                 (#\U+1F1D . #\U+1F15) (#\U+1F28 . #\U+1F20) (#\U+1F29 . #\U+1F21)
    1776                 (#\U+1F2A . #\U+1F22) (#\U+1F2B . #\U+1F23) (#\U+1F2C . #\U+1F24)
    1777                 (#\U+1F2D . #\U+1F25) (#\U+1F2E . #\U+1F26) (#\U+1F2F . #\U+1F27)
    1778                 (#\U+1F38 . #\U+1F30) (#\U+1F39 . #\U+1F31) (#\U+1F3A . #\U+1F32)
    1779                 (#\U+1F3B . #\U+1F33) (#\U+1F3C . #\U+1F34) (#\U+1F3D . #\U+1F35)
    1780                 (#\U+1F3E . #\U+1F36) (#\U+1F3F . #\U+1F37) (#\U+1F48 . #\U+1F40)
    1781                 (#\U+1F49 . #\U+1F41) (#\U+1F4A . #\U+1F42) (#\U+1F4B . #\U+1F43)
    1782                 (#\U+1F4C . #\U+1F44) (#\U+1F4D . #\U+1F45) (#\U+1F59 . #\U+1F51)
    1783                 (#\U+1F5B . #\U+1F53) (#\U+1F5D . #\U+1F55) (#\U+1F5F . #\U+1F57)
    1784                 (#\U+1F68 . #\U+1F60) (#\U+1F69 . #\U+1F61) (#\U+1F6A . #\U+1F62)
    1785                 (#\U+1F6B . #\U+1F63) (#\U+1F6C . #\U+1F64) (#\U+1F6D . #\U+1F65)
    1786                 (#\U+1F6E . #\U+1F66) (#\U+1F6F . #\U+1F67) (#\U+1F88 . #\U+1F80)
    1787                 (#\U+1F89 . #\U+1F81) (#\U+1F8A . #\U+1F82) (#\U+1F8B . #\U+1F83)
    1788                 (#\U+1F8C . #\U+1F84) (#\U+1F8D . #\U+1F85) (#\U+1F8E . #\U+1F86)
    1789                 (#\U+1F8F . #\U+1F87) (#\U+1F98 . #\U+1F90) (#\U+1F99 . #\U+1F91)
    1790                 (#\U+1F9A . #\U+1F92) (#\U+1F9B . #\U+1F93) (#\U+1F9C . #\U+1F94)
    1791                 (#\U+1F9D . #\U+1F95) (#\U+1F9E . #\U+1F96) (#\U+1F9F . #\U+1F97)
    1792                 (#\U+1FA8 . #\U+1FA0) (#\U+1FA9 . #\U+1FA1) (#\U+1FAA . #\U+1FA2)
    1793                 (#\U+1FAB . #\U+1FA3) (#\U+1FAC . #\U+1FA4) (#\U+1FAD . #\U+1FA5)
    1794                 (#\U+1FAE . #\U+1FA6) (#\U+1FAF . #\U+1FA7) (#\U+1FB8 . #\U+1FB0)
    1795                 (#\U+1FB9 . #\U+1FB1) (#\U+1FBA . #\U+1F70) (#\U+1FBB . #\U+1F71)
    1796                 (#\U+1FBC . #\U+1FB3) (#\U+1FC8 . #\U+1F72) (#\U+1FC9 . #\U+1F73)
    1797                 (#\U+1FCA . #\U+1F74) (#\U+1FCB . #\U+1F75) (#\U+1FCC . #\U+1FC3)
    1798                 (#\U+1FD8 . #\U+1FD0) (#\U+1FD9 . #\U+1FD1) (#\U+1FDA . #\U+1F76)
    1799                 (#\U+1FDB . #\U+1F77) (#\U+1FE8 . #\U+1FE0) (#\U+1FE9 . #\U+1FE1)
    1800                 (#\U+1FEA . #\U+1F7A) (#\U+1FEB . #\U+1F7B) (#\U+1FEC . #\U+1FE5)
    1801                 (#\U+1FF8 . #\U+1F78) (#\U+1FF9 . #\U+1F79) (#\U+1FFA . #\U+1F7C)
    1802                 (#\U+1FFB . #\U+1F7D) (#\U+1FFC . #\U+1FF3) (#\U+2132 . #\U+214E)
    1803                 (#\U+2160 . #\U+2170) (#\U+2161 . #\U+2171) (#\U+2162 . #\U+2172)
    1804                 (#\U+2163 . #\U+2173) (#\U+2164 . #\U+2174) (#\U+2165 . #\U+2175)
    1805                 (#\U+2166 . #\U+2176) (#\U+2167 . #\U+2177) (#\U+2168 . #\U+2178)
    1806                 (#\U+2169 . #\U+2179) (#\U+216A . #\U+217A) (#\U+216B . #\U+217B)
    1807                 (#\U+216C . #\U+217C) (#\U+216D . #\U+217D) (#\U+216E . #\U+217E)
    1808                 (#\U+216F . #\U+217F) (#\U+2183 . #\U+2184) (#\U+24B6 . #\U+24D0)
    1809                 (#\U+24B7 . #\U+24D1) (#\U+24B8 . #\U+24D2) (#\U+24B9 . #\U+24D3)
    1810                 (#\U+24BA . #\U+24D4) (#\U+24BB . #\U+24D5) (#\U+24BC . #\U+24D6)
    1811                 (#\U+24BD . #\U+24D7) (#\U+24BE . #\U+24D8) (#\U+24BF . #\U+24D9)
    1812                 (#\U+24C0 . #\U+24DA) (#\U+24C1 . #\U+24DB) (#\U+24C2 . #\U+24DC)
    1813                 (#\U+24C3 . #\U+24DD) (#\U+24C4 . #\U+24DE) (#\U+24C5 . #\U+24DF)
    1814                 (#\U+24C6 . #\U+24E0) (#\U+24C7 . #\U+24E1) (#\U+24C8 . #\U+24E2)
    1815                 (#\U+24C9 . #\U+24E3) (#\U+24CA . #\U+24E4) (#\U+24CB . #\U+24E5)
    1816                 (#\U+24CC . #\U+24E6) (#\U+24CD . #\U+24E7) (#\U+24CE . #\U+24E8)
    1817                 (#\U+24CF . #\U+24E9) (#\U+2C00 . #\U+2C30) (#\U+2C01 . #\U+2C31)
    1818                 (#\U+2C02 . #\U+2C32) (#\U+2C03 . #\U+2C33) (#\U+2C04 . #\U+2C34)
    1819                 (#\U+2C05 . #\U+2C35) (#\U+2C06 . #\U+2C36) (#\U+2C07 . #\U+2C37)
    1820                 (#\U+2C08 . #\U+2C38) (#\U+2C09 . #\U+2C39) (#\U+2C0A . #\U+2C3A)
    1821                 (#\U+2C0B . #\U+2C3B) (#\U+2C0C . #\U+2C3C) (#\U+2C0D . #\U+2C3D)
    1822                 (#\U+2C0E . #\U+2C3E) (#\U+2C0F . #\U+2C3F) (#\U+2C10 . #\U+2C40)
    1823                 (#\U+2C11 . #\U+2C41) (#\U+2C12 . #\U+2C42) (#\U+2C13 . #\U+2C43)
    1824                 (#\U+2C14 . #\U+2C44) (#\U+2C15 . #\U+2C45) (#\U+2C16 . #\U+2C46)
    1825                 (#\U+2C17 . #\U+2C47) (#\U+2C18 . #\U+2C48) (#\U+2C19 . #\U+2C49)
    1826                 (#\U+2C1A . #\U+2C4A) (#\U+2C1B . #\U+2C4B) (#\U+2C1C . #\U+2C4C)
    1827                 (#\U+2C1D . #\U+2C4D) (#\U+2C1E . #\U+2C4E) (#\U+2C1F . #\U+2C4F)
    1828                 (#\U+2C20 . #\U+2C50) (#\U+2C21 . #\U+2C51) (#\U+2C22 . #\U+2C52)
    1829                 (#\U+2C23 . #\U+2C53) (#\U+2C24 . #\U+2C54) (#\U+2C25 . #\U+2C55)
    1830                 (#\U+2C26 . #\U+2C56) (#\U+2C27 . #\U+2C57) (#\U+2C28 . #\U+2C58)
    1831                 (#\U+2C29 . #\U+2C59) (#\U+2C2A . #\U+2C5A) (#\U+2C2B . #\U+2C5B)
    1832                 (#\U+2C2C . #\U+2C5C) (#\U+2C2D . #\U+2C5D) (#\U+2C2E . #\U+2C5E)
    1833                 (#\U+2C60 . #\U+2C61) (#\U+2C62 . #\Latin_Small_Letter_L_With_Middle_Tilde)
    1834                 (#\U+2C63 . #\U+1D7D) (#\U+2C64 . #\Latin_Small_Letter_R_With_Tail)
    1835                 (#\U+2C67 . #\U+2C68) (#\U+2C69 . #\U+2C6A) (#\U+2C6B . #\U+2C6C)
    1836                 (#\U+2C75 . #\U+2C76) (#\U+2C80 . #\U+2C81) (#\U+2C82 . #\U+2C83)
    1837                 (#\U+2C84 . #\U+2C85) (#\U+2C86 . #\U+2C87) (#\U+2C88 . #\U+2C89)
    1838                 (#\U+2C8A . #\U+2C8B) (#\U+2C8C . #\U+2C8D) (#\U+2C8E . #\U+2C8F)
    1839                 (#\U+2C90 . #\U+2C91) (#\U+2C92 . #\U+2C93) (#\U+2C94 . #\U+2C95)
    1840                 (#\U+2C96 . #\U+2C97) (#\U+2C98 . #\U+2C99) (#\U+2C9A . #\U+2C9B)
    1841                 (#\U+2C9C . #\U+2C9D) (#\U+2C9E . #\U+2C9F) (#\U+2CA0 . #\U+2CA1)
    1842                 (#\U+2CA2 . #\U+2CA3) (#\U+2CA4 . #\U+2CA5) (#\U+2CA6 . #\U+2CA7)
    1843                 (#\U+2CA8 . #\U+2CA9) (#\U+2CAA . #\U+2CAB) (#\U+2CAC . #\U+2CAD)
    1844                 (#\U+2CAE . #\U+2CAF) (#\U+2CB0 . #\U+2CB1) (#\U+2CB2 . #\U+2CB3)
    1845                 (#\U+2CB4 . #\U+2CB5) (#\U+2CB6 . #\U+2CB7) (#\U+2CB8 . #\U+2CB9)
    1846                 (#\U+2CBA . #\U+2CBB) (#\U+2CBC . #\U+2CBD) (#\U+2CBE . #\U+2CBF)
    1847                 (#\U+2CC0 . #\U+2CC1) (#\U+2CC2 . #\U+2CC3) (#\U+2CC4 . #\U+2CC5)
    1848                 (#\U+2CC6 . #\U+2CC7) (#\U+2CC8 . #\U+2CC9) (#\U+2CCA . #\U+2CCB)
    1849                 (#\U+2CCC . #\U+2CCD) (#\U+2CCE . #\U+2CCF) (#\U+2CD0 . #\U+2CD1)
    1850                 (#\U+2CD2 . #\U+2CD3) (#\U+2CD4 . #\U+2CD5) (#\U+2CD6 . #\U+2CD7)
    1851                 (#\U+2CD8 . #\U+2CD9) (#\U+2CDA . #\U+2CDB) (#\U+2CDC . #\U+2CDD)
    1852                 (#\U+2CDE . #\U+2CDF) (#\U+2CE0 . #\U+2CE1) (#\U+2CE2 . #\U+2CE3)
    1853                 (#\U+FF21 . #\U+FF41) (#\U+FF22 . #\U+FF42) (#\U+FF23 . #\U+FF43)
    1854                 (#\U+FF24 . #\U+FF44) (#\U+FF25 . #\U+FF45) (#\U+FF26 . #\U+FF46)
    1855                 (#\U+FF27 . #\U+FF47) (#\U+FF28 . #\U+FF48) (#\U+FF29 . #\U+FF49)
    1856                 (#\U+FF2A . #\U+FF4A) (#\U+FF2B . #\U+FF4B) (#\U+FF2C . #\U+FF4C)
    1857                 (#\U+FF2D . #\U+FF4D) (#\U+FF2E . #\U+FF4E) (#\U+FF2F . #\U+FF4F)
    1858                 (#\U+FF30 . #\U+FF50) (#\U+FF31 . #\U+FF51) (#\U+FF32 . #\U+FF52)
    1859                 (#\U+FF33 . #\U+FF53) (#\U+FF34 . #\U+FF54) (#\U+FF35 . #\U+FF55)
    1860                 (#\U+FF36 . #\U+FF56) (#\U+FF37 . #\U+FF57) (#\U+FF38 . #\U+FF58)
    1861                 (#\U+FF39 . #\U+FF59) (#\U+FF3A . #\U+FF5A) (#\U+10400 . #\U+10428)
    1862                 (#\U+10401 . #\U+10429) (#\U+10402 . #\U+1042A) (#\U+10403 . #\U+1042B)
    1863                 (#\U+10404 . #\U+1042C) (#\U+10405 . #\U+1042D) (#\U+10406 . #\U+1042E)
    1864                 (#\U+10407 . #\U+1042F) (#\U+10408 . #\U+10430) (#\U+10409 . #\U+10431)
    1865                 (#\U+1040A . #\U+10432) (#\U+1040B . #\U+10433) (#\U+1040C . #\U+10434)
    1866                 (#\U+1040D . #\U+10435) (#\U+1040E . #\U+10436) (#\U+1040F . #\U+10437)
    1867                 (#\U+10410 . #\U+10438) (#\U+10411 . #\U+10439) (#\U+10412 . #\U+1043A)
    1868                 (#\U+10413 . #\U+1043B) (#\U+10414 . #\U+1043C) (#\U+10415 . #\U+1043D)
    1869                 (#\U+10416 . #\U+1043E) (#\U+10417 . #\U+1043F) (#\U+10418 . #\U+10440)
    1870                 (#\U+10419 . #\U+10441) (#\U+1041A . #\U+10442) (#\U+1041B . #\U+10443)
    1871                 (#\U+1041C . #\U+10444) (#\U+1041D . #\U+10445) (#\U+1041E . #\U+10446)
    1872                 (#\U+1041F . #\U+10447) (#\U+10420 . #\U+10448) (#\U+10421 . #\U+10449)
    1873                 (#\U+10422 . #\U+1044A) (#\U+10423 . #\U+1044B) (#\U+10424 . #\U+1044C)
    1874                 (#\U+10425 . #\U+1044D) (#\U+10426 . #\U+1044E) (#\U+10427 . #\U+1044F)))
    1875   (destructuring-bind (upper . lower) pair
    1876     (setf (gethash upper *non-standard-upper-to-lower*) lower
    1877           (gethash lower *non-standard-lower-to-upper*) upper)))
    1878 
    1879 (assert-hash-table-readonly *non-standard-upper-to-lower*)
    1880 (assert-hash-table-readonly *non-standard-lower-to-upper*)
     2117         
     2118                (#\U+10A0 . #\U+2D00)
     2119          (#\U+10A1 . #\U+2D01)
     2120          (#\U+10A2 . #\U+2D02)
     2121         
     2122                (#\U+10A3 . #\U+2D03)
     2123          (#\U+10A4 . #\U+2D04)
     2124          (#\U+10A5 . #\U+2D05)
     2125         
     2126                (#\U+10A6 . #\U+2D06)
     2127          (#\U+10A7 . #\U+2D07)
     2128          (#\U+10A8 . #\U+2D08)
     2129         
     2130                (#\U+10A9 . #\U+2D09)
     2131          (#\U+10AA . #\U+2D0A)
     2132          (#\U+10AB . #\U+2D0B)
     2133         
     2134                (#\U+10AC . #\U+2D0C)
     2135          (#\U+10AD . #\U+2D0D)
     2136          (#\U+10AE . #\U+2D0E)
     2137         
     2138                (#\U+10AF . #\U+2D0F)
     2139          (#\U+10B0 . #\U+2D10)
     2140          (#\U+10B1 . #\U+2D11)
     2141         
     2142                (#\U+10B2 . #\U+2D12)
     2143          (#\U+10B3 . #\U+2D13)
     2144          (#\U+10B4 . #\U+2D14)
     2145         
     2146                (#\U+10B5 . #\U+2D15)
     2147          (#\U+10B6 . #\U+2D16)
     2148          (#\U+10B7 . #\U+2D17)
     2149         
     2150                (#\U+10B8 . #\U+2D18)
     2151          (#\U+10B9 . #\U+2D19)
     2152          (#\U+10BA . #\U+2D1A)
     2153         
     2154                (#\U+10BB . #\U+2D1B)
     2155          (#\U+10BC . #\U+2D1C)
     2156          (#\U+10BD . #\U+2D1D)
     2157         
     2158                (#\U+10BE . #\U+2D1E)
     2159          (#\U+10BF . #\U+2D1F)
     2160          (#\U+10C0 . #\U+2D20)
     2161         
     2162                (#\U+10C1 . #\U+2D21)
     2163          (#\U+10C2 . #\U+2D22)
     2164          (#\U+10C3 . #\U+2D23)
     2165         
     2166                (#\U+10C4 . #\U+2D24)
     2167          (#\U+10C5 . #\U+2D25)
     2168          (#\U+1E00 . #\U+1E01)
     2169         
     2170                (#\U+1E02 . #\U+1E03)
     2171          (#\U+1E04 . #\U+1E05)
     2172          (#\U+1E06 . #\U+1E07)
     2173         
     2174                (#\U+1E08 . #\U+1E09)
     2175          (#\U+1E0A . #\U+1E0B)
     2176          (#\U+1E0C . #\U+1E0D)
     2177         
     2178                (#\U+1E0E . #\U+1E0F)
     2179          (#\U+1E10 . #\U+1E11)
     2180          (#\U+1E12 . #\U+1E13)
     2181         
     2182                (#\U+1E14 . #\U+1E15)
     2183          (#\U+1E16 . #\U+1E17)
     2184          (#\U+1E18 . #\U+1E19)
     2185         
     2186                (#\U+1E1A . #\U+1E1B)
     2187          (#\U+1E1C . #\U+1E1D)
     2188          (#\U+1E1E . #\U+1E1F)
     2189         
     2190                (#\U+1E20 . #\U+1E21)
     2191          (#\U+1E22 . #\U+1E23)
     2192          (#\U+1E24 . #\U+1E25)
     2193         
     2194                (#\U+1E26 . #\U+1E27)
     2195          (#\U+1E28 . #\U+1E29)
     2196          (#\U+1E2A . #\U+1E2B)
     2197         
     2198                (#\U+1E2C . #\U+1E2D)
     2199          (#\U+1E2E . #\U+1E2F)
     2200          (#\U+1E30 . #\U+1E31)
     2201         
     2202                (#\U+1E32 . #\U+1E33)
     2203          (#\U+1E34 . #\U+1E35)
     2204          (#\U+1E36 . #\U+1E37)
     2205         
     2206                (#\U+1E38 . #\U+1E39)
     2207          (#\U+1E3A . #\U+1E3B)
     2208          (#\U+1E3C . #\U+1E3D)
     2209         
     2210                (#\U+1E3E . #\U+1E3F)
     2211          (#\U+1E40 . #\U+1E41)
     2212          (#\U+1E42 . #\U+1E43)
     2213         
     2214                (#\U+1E44 . #\U+1E45)
     2215          (#\U+1E46 . #\U+1E47)
     2216          (#\U+1E48 . #\U+1E49)
     2217         
     2218                (#\U+1E4A . #\U+1E4B)
     2219          (#\U+1E4C . #\U+1E4D)
     2220          (#\U+1E4E . #\U+1E4F)
     2221         
     2222                (#\U+1E50 . #\U+1E51)
     2223          (#\U+1E52 . #\U+1E53)
     2224          (#\U+1E54 . #\U+1E55)
     2225         
     2226                (#\U+1E56 . #\U+1E57)
     2227          (#\U+1E58 . #\U+1E59)
     2228          (#\U+1E5A . #\U+1E5B)
     2229         
     2230                (#\U+1E5C . #\U+1E5D)
     2231          (#\U+1E5E . #\U+1E5F)
     2232          (#\U+1E60 . #\U+1E61)
     2233         
     2234                (#\U+1E62 . #\U+1E63)
     2235          (#\U+1E64 . #\U+1E65)
     2236          (#\U+1E66 . #\U+1E67)
     2237         
     2238                (#\U+1E68 . #\U+1E69)
     2239          (#\U+1E6A . #\U+1E6B)
     2240          (#\U+1E6C . #\U+1E6D)
     2241         
     2242                (#\U+1E6E . #\U+1E6F)
     2243          (#\U+1E70 . #\U+1E71)
     2244          (#\U+1E72 . #\U+1E73)
     2245         
     2246                (#\U+1E74 . #\U+1E75)
     2247          (#\U+1E76 . #\U+1E77)
     2248          (#\U+1E78 . #\U+1E79)
     2249         
     2250                (#\U+1E7A . #\U+1E7B)
     2251          (#\U+1E7C . #\U+1E7D)
     2252          (#\U+1E7E . #\U+1E7F)
     2253         
     2254                (#\U+1E80 . #\U+1E81)
     2255          (#\U+1E82 . #\U+1E83)
     2256          (#\U+1E84 . #\U+1E85)
     2257         
     2258                (#\U+1E86 . #\U+1E87)
     2259          (#\U+1E88 . #\U+1E89)
     2260          (#\U+1E8A . #\U+1E8B)
     2261         
     2262                (#\U+1E8C . #\U+1E8D)
     2263          (#\U+1E8E . #\U+1E8F)
     2264          (#\U+1E90 . #\U+1E91)
     2265         
     2266                (#\U+1E92 . #\U+1E93)
     2267          (#\U+1E94 . #\U+1E95)
     2268          (#\U+1EA0 . #\U+1EA1)
     2269         
     2270                (#\U+1EA2 . #\U+1EA3)
     2271          (#\U+1EA4 . #\U+1EA5)
     2272          (#\U+1EA6 . #\U+1EA7)
     2273         
     2274                (#\U+1EA8 . #\U+1EA9)
     2275          (#\U+1EAA . #\U+1EAB)
     2276          (#\U+1EAC . #\U+1EAD)
     2277         
     2278                (#\U+1EAE . #\U+1EAF)
     2279          (#\U+1EB0 . #\U+1EB1)
     2280          (#\U+1EB2 . #\U+1EB3)
     2281         
     2282                (#\U+1EB4 . #\U+1EB5)
     2283          (#\U+1EB6 . #\U+1EB7)
     2284          (#\U+1EB8 . #\U+1EB9)
     2285         
     2286                (#\U+1EBA . #\U+1EBB)
     2287          (#\U+1EBC . #\U+1EBD)
     2288          (#\U+1EBE . #\U+1EBF)
     2289         
     2290                (#\U+1EC0 . #\U+1EC1)
     2291          (#\U+1EC2 . #\U+1EC3)
     2292          (#\U+1EC4 . #\U+1EC5)
     2293         
     2294                (#\U+1EC6 . #\U+1EC7)
     2295          (#\U+1EC8 . #\U+1EC9)
     2296          (#\U+1ECA . #\U+1ECB)
     2297         
     2298                (#\U+1ECC . #\U+1ECD)
     2299          (#\U+1ECE . #\U+1ECF)
     2300          (#\U+1ED0 . #\U+1ED1)
     2301         
     2302                (#\U+1ED2 . #\U+1ED3)
     2303          (#\U+1ED4 . #\U+1ED5)
     2304          (#\U+1ED6 . #\U+1ED7)
     2305         
     2306                (#\U+1ED8 . #\U+1ED9)
     2307          (#\U+1EDA . #\U+1EDB)
     2308          (#\U+1EDC . #\U+1EDD)
     2309         
     2310                (#\U+1EDE . #\U+1EDF)
     2311          (#\U+1EE0 . #\U+1EE1)
     2312          (#\U+1EE2 . #\U+1EE3)
     2313         
     2314                (#\U+1EE4 . #\U+1EE5)
     2315          (#\U+1EE6 . #\U+1EE7)
     2316          (#\U+1EE8 . #\U+1EE9)
     2317         
     2318                (#\U+1EEA . #\U+1EEB)
     2319          (#\U+1EEC . #\U+1EED)
     2320          (#\U+1EEE . #\U+1EEF)
     2321         
     2322                (#\U+1EF0 . #\U+1EF1)
     2323          (#\U+1EF2 . #\U+1EF3)
     2324          (#\U+1EF4 . #\U+1EF5)
     2325         
     2326                (#\U+1EF6 . #\U+1EF7)
     2327          (#\U+1EF8 . #\U+1EF9)
     2328          (#\U+1F08 . #\U+1F00)
     2329         
     2330                (#\U+1F09 . #\U+1F01)
     2331          (#\U+1F0A . #\U+1F02)
     2332          (#\U+1F0B . #\U+1F03)
     2333         
     2334                (#\U+1F0C . #\U+1F04)
     2335          (#\U+1F0D . #\U+1F05)
     2336          (#\U+1F0E . #\U+1F06)
     2337         
     2338                (#\U+1F0F . #\U+1F07)
     2339          (#\U+1F18 . #\U+1F10)
     2340          (#\U+1F19 . #\U+1F11)
     2341         
     2342                (#\U+1F1A . #\U+1F12)
     2343          (#\U+1F1B . #\U+1F13)
     2344          (#\U+1F1C . #\U+1F14)
     2345         
     2346                (#\U+1F1D . #\U+1F15)
     2347          (#\U+1F28 . #\U+1F20)
     2348          (#\U+1F29 . #\U+1F21)
     2349         
     2350                (#\U+1F2A . #\U+1F22)
     2351          (#\U+1F2B . #\U+1F23)
     2352          (#\U+1F2C . #\U+1F24)
     2353         
     2354                (#\U+1F2D . #\U+1F25)
     2355          (#\U+1F2E . #\U+1F26)
     2356          (#\U+1F2F . #\U+1F27)
     2357         
     2358                (#\U+1F38 . #\U+1F30)
     2359          (#\U+1F39 . #\U+1F31)
     2360          (#\U+1F3A . #\U+1F32)
     2361         
     2362                (#\U+1F3B . #\U+1F33)
     2363          (#\U+1F3C . #\U+1F34)
     2364          (#\U+1F3D . #\U+1F35)
     2365         
     2366                (#\U+1F3E . #\U+1F36)
     2367          (#\U+1F3F . #\U+1F37)
     2368          (#\U+1F48 . #\U+1F40)
     2369         
     2370                (#\U+1F49 . #\U+1F41)
     2371          (#\U+1F4A . #\U+1F42)
     2372          (#\U+1F4B . #\U+1F43)
     2373         
     2374                (#\U+1F4C . #\U+1F44)
     2375          (#\U+1F4D . #\U+1F45)
     2376          (#\U+1F59 . #\U+1F51)
     2377         
     2378                (#\U+1F5B . #\U+1F53)
     2379          (#\U+1F5D . #\U+1F55)
     2380          (#\U+1F5F . #\U+1F57)
     2381         
     2382                (#\U+1F68 . #\U+1F60)
     2383          (#\U+1F69 . #\U+1F61)
     2384          (#\U+1F6A . #\U+1F62)
     2385         
     2386                (#\U+1F6B . #\U+1F63)
     2387          (#\U+1F6C . #\U+1F64)
     2388          (#\U+1F6D . #\U+1F65)
     2389         
     2390                (#\U+1F6E . #\U+1F66)
     2391          (#\U+1F6F . #\U+1F67)
     2392          (#\U+1F88 . #\U+1F80)
     2393         
     2394                (#\U+1F89 . #\U+1F81)
     2395          (#\U+1F8A . #\U+1F82)
     2396          (#\U+1F8B . #\U+1F83)
     2397         
     2398                (#\U+1F8C . #\U+1F84)
     2399          (#\U+1F8D . #\U+1F85)
     2400          (#\U+1F8E . #\U+1F86)
     2401         
     2402                (#\U+1F8F . #\U+1F87)
     2403          (#\U+1F98 . #\U+1F90)
     2404          (#\U+1F99 . #\U+1F91)
     2405         
     2406                (#\U+1F9A . #\U+1F92)
     2407          (#\U+1F9B . #\U+1F93)
     2408          (#\U+1F9C . #\U+1F94)
     2409         
     2410                (#\U+1F9D . #\U+1F95)
     2411          (#\U+1F9E . #\U+1F96)
     2412          (#\U+1F9F . #\U+1F97)
     2413         
     2414                (#\U+1FA8 . #\U+1FA0)
     2415          (#\U+1FA9 . #\U+1FA1)
     2416          (#\U+1FAA . #\U+1FA2)
     2417         
     2418                (#\U+1FAB . #\U+1FA3)
     2419          (#\U+1FAC . #\U+1FA4)
     2420          (#\U+1FAD . #\U+1FA5)
     2421         
     2422                (#\U+1FAE . #\U+1FA6)
     2423          (#\U+1FAF . #\U+1FA7)
     2424          (#\U+1FB8 . #\U+1FB0)
     2425         
     2426                (#\U+1FB9 . #\U+1FB1)
     2427          (#\U+1FBA . #\U+1F70)
     2428          (#\U+1FBB . #\U+1F71)
     2429         
     2430                (#\U+1FBC . #\U+1FB3)
     2431          (#\U+1FC8 . #\U+1F72)
     2432          (#\U+1FC9 . #\U+1F73)
     2433         
     2434                (#\U+1FCA . #\U+1F74)
     2435          (#\U+1FCB . #\U+1F75)
     2436          (#\U+1FCC . #\U+1FC3)
     2437         
     2438                (#\U+1FD8 . #\U+1FD0)
     2439          (#\U+1FD9 . #\U+1FD1)
     2440          (#\U+1FDA . #\U+1F76)
     2441         
     2442                (#\U+1FDB . #\U+1F77)
     2443          (#\U+1FE8 . #\U+1FE0)
     2444          (#\U+1FE9 . #\U+1FE1)
     2445         
     2446                (#\U+1FEA . #\U+1F7A)
     2447          (#\U+1FEB . #\U+1F7B)
     2448          (#\U+1FEC . #\U+1FE5)
     2449         
     2450                (#\U+1FF8 . #\U+1F78)
     2451          (#\U+1FF9 . #\U+1F79)
     2452          (#\U+1FFA . #\U+1F7C)
     2453         
     2454                (#\U+1FFB . #\U+1F7D)
     2455          (#\U+1FFC . #\U+1FF3)
     2456          (#\U+2132 . #\U+214E)
     2457         
     2458                (#\U+2160 . #\U+2170)
     2459          (#\U+2161 . #\U+2171)
     2460          (#\U+2162 . #\U+2172)
     2461         
     2462                (#\U+2163 . #\U+2173)
     2463          (#\U+2164 . #\U+2174)
     2464          (#\U+2165 . #\U+2175)
     2465         
     2466                (#\U+2166 . #\U+2176)
     2467          (#\U+2167 . #\U+2177)
     2468          (#\U+2168 . #\U+2178)
     2469         
     2470                (#\U+2169 . #\U+2179)
     2471          (#\U+216A . #\U+217A)
     2472          (#\U+216B . #\U+217B)
     2473         
     2474                (#\U+216C . #\U+217C)
     2475          (#\U+216D . #\U+217D)
     2476          (#\U+216E . #\U+217E)
     2477         
     2478                (#\U+216F . #\U+217F)
     2479          (#\U+2183 . #\U+2184)
     2480          (#\U+24B6 . #\U+24D0)
     2481         
     2482                (#\U+24B7 . #\U+24D1)
     2483          (#\U+24B8 . #\U+24D2)
     2484          (#\U+24B9 . #\U+24D3)
     2485         
     2486                (#\U+24BA . #\U+24D4)
     2487          (#\U+24BB . #\U+24D5)
     2488          (#\U+24BC . #\U+24D6)
     2489         
     2490                (#\U+24BD . #\U+24D7)
     2491          (#\U+24BE . #\U+24D8)
     2492          (#\U+24BF . #\U+24D9)
     2493         
     2494                (#\U+24C0 . #\U+24DA)
     2495          (#\U+24C1 . #\U+24DB)
     2496          (#\U+24C2 . #\U+24DC)
     2497         
     2498                (#\U+24C3 . #\U+24DD)
     2499          (#\U+24C4 . #\U+24DE)
     2500          (#\U+24C5 . #\U+24DF)
     2501         
     2502                (#\U+24C6 . #\U+24E0)
     2503          (#\U+24C7 . #\U+24E1)
     2504          (#\U+24C8 . #\U+24E2)
     2505         
     2506                (#\U+24C9 . #\U+24E3)
     2507          (#\U+24CA . #\U+24E4)
     2508          (#\U+24CB . #\U+24E5)
     2509         
     2510                (#\U+24CC . #\U+24E6)
     2511          (#\U+24CD . #\U+24E7)
     2512          (#\U+24CE . #\U+24E8)
     2513         
     2514                (#\U+24CF . #\U+24E9)
     2515          (#\U+2C00 . #\U+2C30)
     2516          (#\U+2C01 . #\U+2C31)
     2517         
     2518                (#\U+2C02 . #\U+2C32)
     2519          (#\U+2C03 . #\U+2C33)
     2520          (#\U+2C04 . #\U+2C34)
     2521         
     2522                (#\U+2C05 . #\U+2C35)
     2523          (#\U+2C06 . #\U+2C36)
     2524          (#\U+2C07 . #\U+2C37)
     2525         
     2526                (#\U+2C08 . #\U+2C38)
     2527          (#\U+2C09 . #\U+2C39)
     2528          (#\U+2C0A . #\U+2C3A)
     2529         
     2530                (#\U+2C0B . #\U+2C3B)
     2531          (#\U+2C0C . #\U+2C3C)
     2532          (#\U+2C0D . #\U+2C3D)
     2533         
     2534                (#\U+2C0E . #\U+2C3E)
     2535          (#\U+2C0F . #\U+2C3F)
     2536          (#\U+2C10 . #\U+2C40)
     2537         
     2538                (#\U+2C11 . #\U+2C41)
     2539          (#\U+2C12 . #\U+2C42)
     2540          (#\U+2C13 . #\U+2C43)
     2541         
     2542                (#\U+2C14 . #\U+2C44)
     2543          (#\U+2C15 . #\U+2C45)
     2544          (#\U+2C16 . #\U+2C46)
     2545         
     2546                (#\U+2C17 . #\U+2C47)
     2547          (#\U+2C18 . #\U+2C48)
     2548          (#\U+2C19 . #\U+2C49)
     2549         
     2550                (#\U+2C1A . #\U+2C4A)
     2551          (#\U+2C1B . #\U+2C4B)
     2552          (#\U+2C1C . #\U+2C4C)
     2553         
     2554                (#\U+2C1D . #\U+2C4D)
     2555          (#\U+2C1E . #\U+2C4E)
     2556          (#\U+2C1F . #\U+2C4F)
     2557         
     2558                (#\U+2C20 . #\U+2C50)
     2559          (#\U+2C21 . #\U+2C51)
     2560          (#\U+2C22 . #\U+2C52)
     2561         
     2562                (#\U+2C23 . #\U+2C53)
     2563          (#\U+2C24 . #\U+2C54)
     2564          (#\U+2C25 . #\U+2C55)
     2565         
     2566                (#\U+2C26 . #\U+2C56)
     2567          (#\U+2C27 . #\U+2C57)
     2568          (#\U+2C28 . #\U+2C58)
     2569         
     2570                (#\U+2C29 . #\U+2C59)
     2571          (#\U+2C2A . #\U+2C5A)
     2572          (#\U+2C2B . #\U+2C5B)
     2573         
     2574                (#\U+2C2C . #\U+2C5C)
     2575          (#\U+2C2D . #\U+2C5D)
     2576          (#\U+2C2E . #\U+2C5E)
     2577         
     2578                (#\U+2C60 . #\U+2C61)
     2579          (#\U+2C62 . #\Latin_Small_Letter_L_With_Middle_Tilde)
     2580         
     2581                (#\U+2C63 . #\U+1D7D)
     2582          (#\U+2C64 . #\Latin_Small_Letter_R_With_Tail)
     2583         
     2584                (#\U+2C67 . #\U+2C68)
     2585          (#\U+2C69 . #\U+2C6A)
     2586          (#\U+2C6B . #\U+2C6C)
     2587         
     2588                (#\U+2C75 . #\U+2C76)
     2589          (#\U+2C80 . #\U+2C81)
     2590          (#\U+2C82 . #\U+2C83)
     2591         
     2592                (#\U+2C84 . #\U+2C85)
     2593          (#\U+2C86 . #\U+2C87)
     2594          (#\U+2C88 . #\U+2C89)
     2595         
     2596                (#\U+2C8A . #\U+2C8B)
     2597          (#\U+2C8C . #\U+2C8D)
     2598          (#\U+2C8E . #\U+2C8F)
     2599         
     2600                (#\U+2C90 . #\U+2C91)
     2601          (#\U+2C92 . #\U+2C93)
     2602          (#\U+2C94 . #\U+2C95)
     2603         
     2604                (#\U+2C96 . #\U+2C97)
     2605          (#\U+2C98 . #\U+2C99)
     2606          (#\U+2C9A . #\U+2C9B)
     2607         
     2608                (#\U+2C9C . #\U+2C9D)
     2609          (#\U+2C9E . #\U+2C9F)
     2610          (#\U+2CA0 . #\U+2CA1)
     2611         
     2612                (#\U+2CA2 . #\U+2CA3)
     2613          (#\U+2CA4 . #\U+2CA5)
     2614          (#\U+2CA6 . #\U+2CA7)
     2615         
     2616                (#\U+2CA8 . #\U+2CA9)
     2617          (#\U+2CAA . #\U+2CAB)
     2618          (#\U+2CAC . #\U+2CAD)
     2619         
     2620                (#\U+2CAE . #\U+2CAF)
     2621          (#\U+2CB0 . #\U+2CB1)
     2622          (#\U+2CB2 . #\U+2CB3)
     2623         
     2624                (#\U+2CB4 . #\U+2CB5)
     2625          (#\U+2CB6 . #\U+2CB7)
     2626          (#\U+2CB8 . #\U+2CB9)
     2627         
     2628                (#\U+2CBA . #\U+2CBB)
     2629          (#\U+2CBC . #\U+2CBD)
     2630          (#\U+2CBE . #\U+2CBF)
     2631         
     2632                (#\U+2CC0 . #\U+2CC1)
     2633          (#\U+2CC2 . #\U+2CC3)
     2634          (#\U+2CC4 . #\U+2CC5)
     2635         
     2636                (#\U+2CC6 . #\U+2CC7)
     2637          (#\U+2CC8 . #\U+2CC9)
     2638          (#\U+2CCA . #\U+2CCB)
     2639         
     2640                (#\U+2CCC . #\U+2CCD)
     2641          (#\U+2CCE . #\U+2CCF)
     2642          (#\U+2CD0 . #\U+2CD1)
     2643         
     2644                (#\U+2CD2 . #\U+2CD3)
     2645          (#\U+2CD4 . #\U+2CD5)
     2646          (#\U+2CD6 . #\U+2CD7)
     2647         
     2648                (#\U+2CD8 . #\U+2CD9)
     2649          (#\U+2CDA . #\U+2CDB)
     2650          (#\U+2CDC . #\U+2CDD)
     2651         
     2652                (#\U+2CDE . #\U+2CDF)
     2653          (#\U+2CE0 . #\U+2CE1)
     2654          (#\U+2CE2 . #\U+2CE3)
     2655         
     2656                (#\U+FF21 . #\U+FF41)
     2657          (#\U+FF22 . #\U+FF42)
     2658          (#\U+FF23 . #\U+FF43)
     2659         
     2660                (#\U+FF24 . #\U+FF44)
     2661          (#\U+FF25 . #\U+FF45)
     2662          (#\U+FF26 . #\U+FF46)
     2663         
     2664                (#\U+FF27 . #\U+FF47)
     2665          (#\U+FF28 . #\U+FF48)
     2666          (#\U+FF29 . #\U+FF49)
     2667         
     2668                (#\U+FF2A . #\U+FF4A)
     2669          (#\U+FF2B . #\U+FF4B)
     2670          (#\U+FF2C . #\U+FF4C)
     2671         
     2672                (#\U+FF2D . #\U+FF4D)
     2673          (#\U+FF2E . #\U+FF4E)
     2674          (#\U+FF2F . #\U+FF4F)
     2675         
     2676                (#\U+FF30 . #\U+FF50)
     2677          (#\U+FF31 . #\U+FF51)
     2678          (#\U+FF32 . #\U+FF52)
     2679         
     2680                (#\U+FF33 . #\U+FF53)
     2681          (#\U+FF34 . #\U+FF54)
     2682          (#\U+FF35 . #\U+FF55)
     2683         
     2684                (#\U+FF36 . #\U+FF56)
     2685          (#\U+FF37 . #\U+FF57)
     2686          (#\U+FF38 . #\U+FF58)
     2687         
     2688                (#\U+FF39 . #\U+FF59)
     2689          (#\U+FF3A . #\U+FF5A)
     2690          (#\U+10400 . #\U+10428)
     2691         
     2692                (#\U+10401 . #\U+10429)
     2693          (#\U+10402 . #\U+1042A)
     2694          (#\U+10403 . #\U+1042B)
     2695         
     2696                (#\U+10404 . #\U+1042C)
     2697          (#\U+10405 . #\U+1042D)
     2698          (#\U+10406 . #\U+1042E)
     2699         
     2700                (#\U+10407 . #\U+1042F)
     2701          (#\U+10408 . #\U+10430)
     2702          (#\U+10409 . #\U+10431)
     2703         
     2704                (#\U+1040A . #\U+10432)
     2705          (#\U+1040B . #\U+10433)
     2706          (#\U+1040C . #\U+10434)
     2707         
     2708                (#\U+1040D . #\U+10435)
     2709          (#\U+1040E . #\U+10436)
     2710          (#\U+1040F . #\U+10437)
     2711         
     2712                (#\U+10410 . #\U+10438)
     2713          (#\U+10411 . #\U+10439)
     2714          (#\U+10412 . #\U+1043A)
     2715         
     2716                (#\U+10413 . #\U+1043B)
     2717          (#\U+10414 . #\U+1043C)
     2718          (#\U+10415 . #\U+1043D)
     2719         
     2720                (#\U+10416 . #\U+1043E)
     2721          (#\U+10417 . #\U+1043F)
     2722          (#\U+10418 . #\U+10440)
     2723         
     2724                (#\U+10419 . #\U+10441)
     2725          (#\U+1041A . #\U+10442)
     2726          (#\U+1041B . #\U+10443)
     2727         
     2728                (#\U+1041C . #\U+10444)
     2729          (#\U+1041D . #\U+10445)
     2730          (#\U+1041E . #\U+10446)
     2731         
     2732                (#\U+1041F . #\U+10447)
     2733          (#\U+10420 . #\U+10448)
     2734          (#\U+10421 . #\U+10449)
     2735         
     2736                (#\U+10422 . #\U+1044A)
     2737          (#\U+10423 . #\U+1044B)
     2738          (#\U+10424 . #\U+1044C)
     2739         
     2740                (#\U+10425 . #\U+1044D)
     2741          (#\U+10426 . #\U+1044E)
     2742          (#\U+10427 . #\U+1044F)
     2743          ))
     2744       (max-upper #\u+0000)
     2745       (max-lower #\u+0000))
     2746  (dolist (pair mapping)
     2747    (destructuring-bind (upper . lower) pair
     2748      (when (char> upper max-upper)
     2749        (setq max-upper upper))
     2750      (when (char> lower max-lower)
     2751        (setq max-lower lower))))
     2752  (let* ((upper-to-lower (make-array (the fixnum (1+ (the fixnum (char-code max-upper)))) :element-type '(signed-byte 16)))
     2753         (lower-to-upper (make-array (the fixnum (1+ (the fixnum (char-code max-lower)))) :element-type '(signed-byte 16))))
     2754  (dolist (pair mapping)
     2755    (destructuring-bind (upper . lower) pair
     2756      (let* ((upper-code (char-code upper))
     2757             (lower-code (char-code lower))
     2758             (diff (- lower-code upper-code)))
     2759        (declare (type (mod #x110000) upper-code lower-code)
     2760                 (type (signed-byte 16) diff))
     2761        (setf (aref upper-to-lower upper-code) diff
     2762              (aref lower-to-upper lower-code) (the fixnum (- diff))))))
     2763  (do* ((upper (char-code #\A) (1+ upper))
     2764        (lower (char-code #\a) (1+ lower)))
     2765       ((> upper (char-code #\Z)))
     2766    (setf (aref upper-to-lower upper) (- lower upper)
     2767          (aref lower-to-upper lower) (- upper lower)))
     2768  (setq *lower-to-upper* lower-to-upper
     2769        *upper-to-lower* upper-to-lower)
     2770  nil))
     2771
     2772(eval-when (:compile-toplevel)
     2773  (declaim (inline %char-code-case-fold)))
     2774
     2775(defun %char-code-case-fold (code table)
     2776  (declare (type (mod #x110000) code)
     2777           (type (simple-array (signed-byte 16) (*)) table))
     2778  (if (>= code (length table))
     2779    code
     2780    (locally (declare (optimize (speed 3) (safety 0)))
     2781      (the fixnum (+ code (the (signed-byte 16) (aref table code)))))))
     2782
     2783(defun %char-code-upcase (code)
     2784  (%char-code-case-fold code *lower-to-upper*))
     2785
     2786(defun char-upcase (c)
     2787  "Return CHAR converted to upper-case if that is possible.  Don't convert
     2788   lowercase eszet (U+DF)."
     2789  (declare (optimize speed))            ; so that %char-code-case-fold inlines
     2790  (code-char (the valid-char-code (%char-code-case-fold (char-code c) *lower-to-upper*))))
     2791
     2792(defun %non-standard-char-code-upcase (code)
     2793  (declare (type (mod #x110000) code))
     2794  (%char-code-upcase code))
     2795
     2796
     2797(defun %char-code-downcase (code)
     2798  (declare (type (mod #x110000) code))
     2799  (let* ((table *upper-to-lower*))
     2800    (declare (type (simple-array (signed-byte 16) (*)) table))
     2801    (if (>= code (length table))
     2802      code
     2803      (locally (declare (optimize (speed 3) (safety 0)))
     2804        (the fixnum (+ code (the (signed-byte 16) (aref table code))))))))
     2805
    18812806
    18822807(defun %non-standard-upper-case-equivalent (char)
    1883   (gethash char *non-standard-lower-to-upper*))
     2808  (let* ((code (char-code char))
     2809         (table *lower-to-upper*)
     2810         (disp 0))
     2811    (declare (type (mod #x110000) code)
     2812             (type (simple-array (signed-byte 16) (*)))
     2813             (type (signed-byte 16) disp))
     2814    (if (< code (length table))
     2815      (setq disp (aref table code)))
     2816    (unless (zerop disp)
     2817      (code-char (+ code disp)))))
     2818   
     2819
     2820
     2821(defun %non-standard-lower-case-equivalent (char)
     2822  (let* ((code (char-code char))
     2823         (table *upper-to-lower*)
     2824         (disp 0))
     2825    (declare (type (mod #x110000) code)
     2826             (type (simple-array (signed-byte 16) (*)))
     2827             (type (signed-byte 16) disp))
     2828    (if (< code (length table))
     2829      (setq disp (aref table code)))
     2830    (unless (zerop disp)
     2831      (code-char (+ code disp)))))
    18842832
    18852833;;;True for a-z, and maybe other things.
     
    18872835  "The argument must be a character object; LOWER-CASE-P returns T if the
    18882836   argument is a lower-case character, NIL otherwise."
    1889   (let ((code (char-code c)))
    1890     (if (< code #x80)
    1891       (and (>= code (char-code #\a))
    1892            (<= code (char-code #\z)))
    1893      (not (null (%non-standard-upper-case-equivalent c))))))
     2837  (let* ((code (char-code c))
     2838         (table *lower-to-upper*))
     2839    (declare (type (mod #x110000) code)
     2840             (type (simple-array (signed-byte 16) (*)) table))
     2841    (if (< code (length table))
     2842      (not (eql 0 (the (signed-byte 16) (aref table code)))))))
     2843
    18942844
    18952845
     
    19002850  "The argument must be a character object. ALPHA-CHAR-P returns T if the
    19012851   argument is an alphabetic character; otherwise NIL."
    1902   (let* ((code (char-code c)))
    1903     (declare (fixnum code))
    1904     (or (and (>= code (char-code #\A)) (<= code (char-code #\Z)))
    1905         (and (>= code (char-code #\a)) (<= code (char-code #\z)))
    1906         (and (>= code #x80)
    1907              (or (not (null (%non-standard-upper-case-equivalent c)))
    1908                  (not (null (%non-standard-lower-case-equivalent c))))))))
     2852  (let* ((code (char-code c))
     2853         (upper *upper-to-lower*)
     2854         (lower *lower-to-upper*))
     2855    (declare (type (mod #x110000 code))
     2856             (type (simple-array (signed-byte 16) (*)) upper lower))
     2857    (or (and (< code (length upper))
     2858             (not (zerop (the (signed-byte 16) (aref upper code)))))
     2859        (and (< code (length lower))
     2860             (not (zerop (the (signed-byte 16) (aref lower code))))))))
    19092861
    19102862
     
    20112963  resource)
    20122964
    2013 
     2965(defun valid-char-code-p (code)
     2966  (and (typep code 'fixnum)
     2967       (locally (declare (fixnum code))
     2968         (and
     2969          (>= code 0)
     2970          (< code #x110000)
     2971          (or (< code #xd800)
     2972              (> code #xdfff))))))
    20142973
    20152974
  • branches/working-0711/ccl/level-1/l1-boot-3.lisp

    r9364 r9578  
    2020(in-package "CCL")
    2121
     22
    2223(catch :toplevel
    23   (defconstant *common-lisp-user-package*
    2424    (or (find-package "COMMON-LISP-USER")
    25         (make-package "COMMON-LISP-USER" :use '("COMMON-LISP" "CCL") :NICKNAMES '("CL-USER"))))
     25        (make-package "COMMON-LISP-USER" :use '("COMMON-LISP" "CCL") :NICKNAMES '("CL-USER")))
    2626)
     27
    2728
    2829(set-periodic-task-interval .33)
  • branches/working-0711/ccl/level-1/l1-clos-boot.lisp

    r9365 r9578  
    4343
    4444(defun %class-name (class)
    45   (%class.name class))
     45  (if (native-class-p class)
     46    (%class.name class)
     47    (class-name class)))
     48
     49(defun %class-info (class)
     50  (if (native-class-p class)
     51    (%class.info class)
     52    (class-info class)))
     53 
     54
     55(defun %class-kernel-p (class)
     56  (car (%class-info class)))
     57
     58(defun (setf %class-kernel-p) (new class)
     59  (setf (car (%class-info class)) new))
     60
     61(defun %class-proper-name (class)
     62  (cdr (%class-info class)))
     63
     64(defun (setf %class-proper-name) (new class)
     65  (setf (cdr (%class-info class)) new))
     66
    4667
    4768(defun %class-own-wrapper (class)
    48   (%class.own-wrapper class))
     69  (if (native-class-p class)
     70    (%class.own-wrapper class)
     71   (class-own-wrapper class)))
    4972
    5073(defun (setf %class-own-wrapper) (new class)
     
    5275
    5376(defun %class-alist (class)
    54   (if (typep class 'slots-class)
    55     (%class.alist class)))
     77  (%class.alist class))
    5678
    5779(defun (setf %class-alist) (new class)
     
    6183
    6284(defun %class-slots (class)
    63   (if (typep class 'slots-class)
    64     (%class.slots class)))
     85  (if (native-class-p class)
     86    (%class.slots class)
     87    (class-slots class)))
    6588
    6689(defun (setf %class-slots) (new class)
    67   (if (typep class 'slots-class)
     90  (if (native-class-p class)
    6891    (setf (%class.slots class) new)
    69     new))
     92    (setf (class-slots class) new)))
    7093
    7194(defun %class-direct-slots (class)
    72   (if (typep class 'slots-class)
    73     (%class.direct-slots class)))
     95  (if (native-class-p class)
     96    (%class.direct-slots class)
     97    (class-direct-slots class)))
    7498
    7599(defun (setf %class-direct-slots) (new class)
    76   (if (typep class 'slots-class)
    77     (setf (%class.direct-slots class) new))
    78   new)
    79  
     100  (if (native-class-p class)
     101    (setf (%class.direct-slots class) new)
     102    (setf (class-direct-slots class) new)))
     103
     104
     105
     106
     107
     108
    80109(defun %class-direct-superclasses (class)
    81110  (%class.local-supers class))
     
    213242                                 next-slot-index))
    214243  )
     244
     245
    215246
    216247
     
    938969    (loop
    939970      (multiple-value-bind (found name cell) (m)
    940         (declare (list cell))
     971        (declare (type class-cell cell))
    941972        (unless found (return))
    942         (when (cdr cell)
     973        (when cell
    943974          (funcall function name (class-cell-class cell)))))))
    944975
     
    10111042(defun invalidate-initargs-vector-for-gf (gf &optional first-specializer &rest other-specializers)
    10121043  (declare (ignore other-specializers))
    1013   (when (and first-specializer (typep first-specializer 'class))        ; no eql methods or gfs with no specializers need apply
     1044  (when (and first-specializer (typep first-specializer 'class)) ; no eql methods or gfs with no specializers need apply
    10141045    (let ((indices (cdr (assq gf *initialization-invalidation-alist*))))
    10151046      (when indices
    10161047        (labels ((invalidate (class indices)
    1017                              (when (std-class-p class)  ; catch the class named T
    1018                                (dolist (index indices)
    1019                                  (setf (standard-instance-instance-location-access class index) nil)))
    1020                              (dolist (subclass (%class.subclasses class))
    1021                                (invalidate subclass indices))))
     1048                   (when (std-class-p class) ; catch the class named T
     1049                     (dolist (index indices)
     1050                       (setf (standard-instance-instance-location-access class index) nil)))
     1051                   (dolist (subclass (%class.subclasses class))
     1052                     (invalidate subclass indices))))
    10221053          (invalidate first-specializer indices))))))
    10231054
     
    10701101      new-dcode)
    10711102    dcode))
     1103
     1104(defstatic *non-dt-dcode-functions* () "List of functions which return a dcode function for the GF which is their argument.  The dcode functions will be caled with all of the incoming arguments.")
     1105
     1106(defun non-dt-dcode-function (gf)
     1107  (dolist (f *non-dt-dcode-functions*)
     1108    (let* ((dcode (funcall f gf)))
     1109      (when dcode (return dcode)))))
    10721110
    10731111(defun compute-dcode (gf &optional dt)
     
    10951133              (if (or (null min-index) (< index min-index))
    10961134                (setq min-index index))))))
    1097       (let ((dcode (if 0-args?
    1098                      #'%%0-arg-dcode
    1099                      (or (if multi-method-index
    1100                            #'%%nth-arg-dcode)
    1101                          (if (null other-args?)
    1102                            (if (eql nreq 1)
    1103                              #'%%one-arg-dcode
    1104                              (if (eql nreq 2)
    1105                                #'%%1st-two-arg-dcode
    1106                                #'%%1st-arg-dcode))                           
    1107                            #'%%1st-arg-dcode)))))
     1135      (let* ((non-dt (non-dt-dcode-function gf))
     1136             (dcode (or non-dt
     1137                        (if 0-args?
     1138                          #'%%0-arg-dcode
     1139                          (or (if multi-method-index
     1140                                #'%%nth-arg-dcode)
     1141                              (if (null other-args?)
     1142                                (if (eql nreq 1)
     1143                                  #'%%one-arg-dcode
     1144                                  (if (eql nreq 2)
     1145                                    #'%%1st-two-arg-dcode
     1146                                    #'%%1st-arg-dcode))
     1147                                #'%%1st-arg-dcode))))))
    11081148        (setq multi-method-index
    11091149              (if multi-method-index
     
    11171157                                                 (function-name (%combined-method-dcode old-dcode)))
    11181158                                             (cdr (%combined-method-methods old-dcode)))))
    1119           (when (or (neq dcode (if encapsulated-dcode-cons (cdr encapsulated-dcode-cons) old-dcode))
     1159          (when (or non-dt (neq dcode (if encapsulated-dcode-cons (cdr encapsulated-dcode-cons) old-dcode))
    11201160                    (neq multi-method-index (%gf-dispatch-table-argnum dt)))
    1121             (let ((proto (or (cdr (assq dcode dcode-proto-alist)) *gf-proto*)))
     1161            (let* ((proto (if non-dt
     1162                            #'funcallable-trampoline
     1163                            (or (cdr (assq dcode dcode-proto-alist)) *gf-proto*))))
    11221164              (clear-gf-dispatch-table dt)
    11231165              (setf (%gf-dispatch-table-argnum dt) multi-method-index)
     
    11261168                  (if (not (typep old-gf 'generic-function))
    11271169                    (error "Confused"))
    1128                   ;(setf (uvref old-gf 0)(uvref proto 0))
     1170                                        ;(setf (uvref old-gf 0)(uvref proto 0))
    11291171                  (setf (cdr encapsulated-dcode-cons) dcode))
    11301172                (progn
     
    11991241;;;;;;;;;;;;;;;;;;;;;;;;  Instances and classes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    12001242
    1201 (defvar %find-classes% (make-hash-table :test 'eq))
    1202 
     1243
     1244(defun instance-class-wrapper (instance)
     1245  (cond ((%standard-instance-p instance) (instance.class-wrapper instance))
     1246        ((structurep instance) (%class.own-wrapper
     1247                                (class-cell-class (car (%svref instance 0)))))
     1248        ((eql (typecode instance) target::subtag-istruct)
     1249         (istruct-cell-info (%svref instance 0)))
     1250        ((typep instance 'basic-stream)
     1251         (%class.own-wrapper (basic-stream.class instance)))
     1252        ((typep instance 'funcallable-standard-object)
     1253         (gf.instance.class-wrapper instance))
     1254        ((typep instance 'macptr) (foreign-instance-class-wrapper instance))
     1255        (t (%class.own-wrapper (class-of instance)))))
    12031256
    12041257(defun class-cell-typep (form class-cell)
    12051258  (locally (declare (type class-cell  class-cell))
     1259    (loop
    12061260    (let ((class (class-cell-class class-cell)))
    1207       (loop
    1208         (if class
    1209           (let* ((wrapper (if (%standard-instance-p form)
    1210                             (instance.class-wrapper form)
    1211                             (instance-class-wrapper form))))
    1212             (return
    1213               (not (null (memq class (or (%wrapper-cpl wrapper)
    1214                                          (%inited-class-cpl (%wrapper-class wrapper))))))))
    1215           (if (setq class (find-class (class-cell-name class-cell) nil))
    1216             (setf (class-cell-class class-cell) class)
    1217             (return (typep form (class-cell-name class-cell)))))))))
     1261      (if class
     1262        (let* ((ordinal (%class-ordinal class))
     1263               (wrapper (instance-class-wrapper form))
     1264               (bits (or (%wrapper-cpl-bits wrapper)
     1265                         (make-cpl-bits (%inited-class-cpl (%wrapper-class wrapper))))))
     1266          (declare (fixnum ordinal))
     1267          (return
     1268            (if bits
     1269              (locally (declare (simple-bit-vector bits)
     1270                                (optimize (speed 3) (safety 0)))
     1271                  (if (< ordinal (length bits))
     1272                    (not (eql 0 (sbit bits ordinal))))))))
     1273        (let* ((name (class-cell-name class-cell))
     1274               (new-cell (find-class-cell name nil)))
     1275          (unless
     1276              (if (and new-cell (not (eq class-cell new-cell)))
     1277                (setq class-cell new-cell class (class-cell-class class-cell))
     1278                (return (typep form name))))))))))
    12181279
    12191280
     
    12251286
    12261287
    1227 
    1228 (defun find-class-cell (name create?)
    1229   (let ((cell (gethash name %find-classes%)))
    1230     (or cell
    1231         (and create?
    1232              (setf (gethash name %find-classes%) (make-class-cell name))))))
    12331288
    12341289
     
    12471302          (find-class name errorp environment)))))
    12481303
     1304(defun update-class-proper-names (name old-class new-class)
     1305  (when (and old-class
     1306             (not (eq old-class new-class))
     1307             (eq (%class-proper-name old-class) name))
     1308    (setf (%class-proper-name old-class) nil))
     1309  (when (and new-class (eq (%class-name new-class) name))
     1310    (setf (%class-proper-name new-class) name)))
     1311
     1312
    12491313(defun set-find-class (name class)
    12501314  (clear-type-cache)
    1251   (let ((cell (find-class-cell name class)))
    1252     (when cell
    1253       (when class
    1254         (if (eq name (%class.name class))
    1255           (setf (info-type-kind name) :instance)))
    1256       (setf (class-cell-class cell) class))
     1315  (let* ((cell (find-class-cell name t))
     1316         (old-class (class-cell-class cell)))
     1317    (when class
     1318      (if (eq name (%class.name class))
     1319        (setf (info-type-kind name) :instance)))
     1320    (setf (class-cell-class cell) class)
     1321    (update-class-proper-names name old-class class)
    12571322    class))
    12581323
     
    12881353(defun check-setf-find-class-protected-class (old-class new-class name)
    12891354  (when (and (standard-instance-p old-class)
    1290              (%class.kernel-p old-class)
     1355             (%class-kernel-p old-class)
    12911356             *warn-if-redefine-kernel*
    12921357             ;; EQL might be necessary on foreign classes
     
    12961361marked as being a critical part of the system; an attempt is being made
    12971362to replace that class with ~s" name old-class new-class)
    1298     (setf (%class.kernel-p old-class) nil)))
     1363    (setf (%class-kernel-p old-class) nil)))
    12991364
    13001365
     
    13021367 (defun set-find-class (name class)
    13031368   (setq name (require-type name 'symbol))
    1304    (let ((cell (find-class-cell name t)))
     1369   (let* ((cell (find-class-cell name t))
     1370          (old-class (class-cell-class cell)))
    13051371     (declare (type class-cell cell))
    1306        (let ((old-class (class-cell-class cell)))
    1307          (when old-class
    1308            (when (eq (%class.name old-class) name)
    1309              (setf (info-type-kind name) nil)
    1310              (clear-type-cache))
    1311            (when *warn-if-redefine-kernel*
    1312              (check-setf-find-class-protected-class old-class class name))))
     1372     (when old-class
     1373       (when (eq (%class.name old-class) name)
     1374         (setf (info-type-kind name) nil)
     1375         (clear-type-cache))
     1376       (when *warn-if-redefine-kernel*
     1377         (check-setf-find-class-protected-class old-class class name)))
    13131378     (when (null class)
    13141379       (when cell
    13151380         (setf (class-cell-class cell) nil))
     1381       (update-class-proper-names name old-class class)
    13161382       (return-from set-find-class nil))
    13171383     (setq class (require-type class 'class))
     
    13261392         (%deftype name nil nil))
    13271393       (setf (info-type-kind name) :instance))
     1394     (update-class-proper-names name old-class class)
    13281395     (setf (class-cell-class cell) class)))
    13291396 )                                      ; end of queue-fixup
     
    13441411||#
    13451412
    1346 
     1413(defglobal *next-class-ordinal* 0)
     1414
     1415(defun %next-class-ordinal ()
     1416  (%atomic-incf-node 1 '*next-class-ordinal* target::symbol.vcell))
    13471417
    13481418;;; Initialized after built-in-class is made
     
    13521422  (%istruct 'class-ctype *class-type-class* nil class nil))
    13531423
     1424(defun foreign-class-ordinal (class)
     1425  (error "NYI: foreign-class-ordinal for ~s" class))
     1426
     1427(defun (setf foreign-class-ordinal) (new class)
     1428  (error "NYI: can't set foreign-class ordinal for ~s to ~s" class new))
     1429
     1430
     1431(defun %class-ordinal (class &optional no-error)
     1432  (if (standard-instance-p class)
     1433    (instance.hash class)
     1434    (if (typep class 'macptr)
     1435      (foreign-class-ordinal class)
     1436      (unless no-error
     1437        (error "Can't determine ordinal of ~s" class)))))
     1438
     1439(defun (setf %class-ordinal) (new class &optional no-error)
     1440  (if (standard-instance-p class)
     1441    (setf (instance.hash class) new)
     1442    (if (typep class 'macptr)
     1443      (setf (foreign-class-ordinal class) new)
     1444      (unless no-error
     1445        (error "Can't set ordinal of class ~s to ~s" class new)))))
     1446
    13541447
    13551448(defvar *t-class* (let ((class (%cons-built-in-class 't)))
    1356                     (setf (%class.cpl class) (list class))
    1357                     (setf (%class.own-wrapper class)
    1358                           (%cons-wrapper class (new-class-wrapper-hash-index)))
    1359                     (setf (%class.ctype class) (make-class-ctype class))
    1360                     (setf (find-class 't) class)
    1361                     class))
     1449                    (setf (instance.hash class) 0) ;first class ordinal
     1450                    (let* ((cpl (list class))
     1451                           (wrapper (%cons-wrapper class (new-class-wrapper-hash-index))))
     1452                      (setf (%class.cpl class) cpl
     1453                            (%wrapper-cpl wrapper) cpl
     1454                            (%wrapper-cpl-bits wrapper) #*1)
     1455                      (setf (%class.own-wrapper class) wrapper)
     1456                      (setf (%class.ctype class) (make-class-ctype class))
     1457                      (setf (find-class 't) class)
     1458                      class)))
    13621459
    13631460(defun compute-cpl (class)
     
    13971494      cpl)))
    13981495
     1496(defun make-cpl-bits (cpl)
     1497  (when cpl
     1498    (let* ((max 0))
     1499      (declare (fixnum max))
     1500      (dolist (class cpl)
     1501        (let* ((ordinal (instance.hash class)))
     1502          (declare (fixnum ordinale))
     1503          (when (> ordinal max)
     1504            (setq max ordinal))))
     1505      (let* ((bits (make-array (the fixnum (1+ max)) :element-type 'bit)))
     1506        (dolist (class cpl bits)
     1507          (let* ((ordinal (instance.hash class)))
     1508            (setf (sbit bits ordinal) 1)))))))
     1509
     1510         
    13991511(defun make-built-in-class (name &rest supers)
    14001512  (if (null supers)
     
    14091521        (dolist (sup (%class.local-supers class))
    14101522          (setf (%class.subclasses sup) (nremove class (%class.subclasses sup)))))
    1411       (setq class (%cons-built-in-class name)))
     1523      (progn
     1524        (setq class (%cons-built-in-class name))
     1525        (setf (instance.hash class) (%next-class-ordinal))))
    14121526    (dolist (sup supers)
    14131527      (setf (%class.subclasses sup) (cons class (%class.subclasses sup))))
     
    14171531      (setf (%class.cpl class) cpl)
    14181532      (setf (%class.own-wrapper class) wrapper)
    1419       (setf (%wrapper-cpl wrapper) cpl))
     1533      (setf (%wrapper-cpl wrapper) cpl
     1534            (%wrapper-cpl-bits wrapper) (make-cpl-bits cpl)
     1535            (%wrapper-class-ordinal wrapper) (%class-ordinal class)))
    14201536    (setf (%class.ctype class)  (make-class-ctype class))
    14211537    (setf (find-class name) class)
     
    14251541    class))
    14261542
     1543(defun make-istruct-class (name &rest supers)
     1544  (let* ((class (apply #'make-built-in-class name supers))
     1545         (cell (register-istruct-cell name)))
     1546    (setf (istruct-cell-info cell) (%class.own-wrapper class))
     1547    class))
     1548
    14271549;;; This will be filled in below.  Need it defined now as it goes in
    14281550;;; the instance.class-wrapper of all the classes that STANDARD-CLASS
     
    14381560                 (error "Attempt to remake standard class ~s" name)
    14391561                 (%cons-standard-class name metaclass-wrapper))))
     1562    (setf (instance.hash class) (%next-class-ordinal))
    14401563    (if (null supers)
    14411564      (setq supers (list *standard-class-class*))
     
    14591582            (%class.ctype class) (make-class-ctype class)
    14601583            (%class.slots class) nil
     1584            (%wrapper-class-ordinal wrapper) (%class-ordinal class)
     1585            (%wrapper-cpl wrapper) cpl
     1586            (%wrapper-cpl-bits wrapper) (make-cpl-bits cpl)
    14611587            (find-class name) class
    14621588            )
     
    15371663(setf (%class.own-wrapper *standard-class-class*) *standard-class-wrapper*
    15381664      (%wrapper-class *standard-class-wrapper*) *standard-class-class*
     1665      (%wrapper-class-ordinal *standard-class-wrapper*) (%class-ordinal *standard-class-class*)
    15391666      (%wrapper-instance-slots *standard-class-wrapper*) (vector))
    15401667
     
    16091736                                                              *slot-definition-class*))
    16101737(defstatic *standard-slot-definition-class* (make-standard-class 'standard-slot-definition
    1611                                                               *slot-definition-class*))
     1738                                                                 *slot-definition-class*))
    16121739(defstatic *standard-direct-slot-definition-class* (make-class
    1613                                                  'standard-direct-slot-definition
    1614                                                  *standard-class-wrapper*
    1615                                                  (list
    1616                                                   *standard-slot-definition-class*
    1617                                                   direct-slot-definition-class)))
     1740                                                    'standard-direct-slot-definition
     1741                                                    *standard-class-wrapper*
     1742                                                    (list
     1743                                                     *standard-slot-definition-class*
     1744                                                     direct-slot-definition-class)))
    16181745
    16191746(defstatic *standard-effective-slot-definition-class* (make-class
     
    16301757
    16311758
     1759
     1760
     1761 
    16321762
    16331763(let ((*dont-find-class-optimize* t)
     
    16651795  (defstatic *read-write-lock-class* (make-built-in-class 'read-write-lock *lock-class*))
    16661796 
    1667   (make-built-in-class 'lock-acquisition *istruct-class*)
    1668   (make-built-in-class 'semaphore-notification *istruct-class*)
    1669   (make-built-in-class 'class-wrapper *istruct-class*)
     1797  (make-istruct-class 'lock-acquisition *istruct-class*)
     1798  (make-istruct-class 'semaphore-notification *istruct-class*)
     1799  (make-istruct-class 'class-wrapper *istruct-class*)
    16701800  ;; Compiler stuff, mostly
    1671   (make-built-in-class 'faslapi *istruct-class*)
    1672   (make-built-in-class 'var *istruct-class*)
    1673   (make-built-in-class 'afunc *istruct-class*)
    1674   (make-built-in-class 'lexical-environment *istruct-class*)
    1675   (make-built-in-class 'definition-environment *istruct-class*)
    1676   (make-built-in-class 'compiler-policy *istruct-class*)
    1677   (make-built-in-class 'deferred-warnings *istruct-class*)
    1678   (make-built-in-class 'ptaskstate *istruct-class*)
    1679   (make-built-in-class 'entry *istruct-class*)
    1680   (make-built-in-class 'foreign-object-domain *istruct-class*)
     1801  (make-istruct-class 'faslapi *istruct-class*)
     1802  (make-istruct-class 'faslstate *istruct-class*)
     1803  (make-istruct-class 'var *istruct-class*)
     1804  (make-istruct-class 'afunc *istruct-class*)
     1805  (make-istruct-class 'lexical-environment *istruct-class*)
     1806  (make-istruct-class 'definition-environment *istruct-class*)
     1807  (make-istruct-class 'compiler-policy *istruct-class*)
     1808  (make-istruct-class 'deferred-warnings *istruct-class*)
     1809  (make-istruct-class 'ptaskstate *istruct-class*)
     1810  (make-istruct-class 'entry *istruct-class*)
     1811  (make-istruct-class 'foreign-object-domain *istruct-class*)
    16811812
    16821813 
    1683   (make-built-in-class 'slot-id *istruct-class*)
     1814  (make-istruct-class 'slot-id *istruct-class*)
    16841815  (make-built-in-class 'value-cell)
    1685   (make-built-in-class 'restart *istruct-class*)
    1686   (make-built-in-class 'hash-table *istruct-class*)
    1687   (make-built-in-class 'readtable *istruct-class*)
    1688   (make-built-in-class 'pathname *istruct-class*)
    1689   (make-built-in-class 'random-state *istruct-class*)
    1690   (make-built-in-class 'xp-structure *istruct-class*)
    1691   (make-built-in-class 'lisp-thread *istruct-class*)
    1692   (make-built-in-class 'resource *istruct-class*)
    1693   (make-built-in-class 'periodic-task *istruct-class*)
    1694   (make-built-in-class 'semaphore *istruct-class*)
     1816  (make-istruct-class 'restart *istruct-class*)
     1817  (make-istruct-class 'hash-table *istruct-class*)
     1818  (make-istruct-class 'readtable *istruct-class*)
     1819  (make-istruct-class 'pathname *istruct-class*)
     1820  (make-istruct-class 'random-state *istruct-class*)
     1821  (make-istruct-class 'xp-structure *istruct-class*)
     1822  (make-istruct-class 'lisp-thread *istruct-class*)
     1823  (make-istruct-class 'resource *istruct-class*)
     1824  (make-istruct-class 'periodic-task *istruct-class*)
     1825  (make-istruct-class 'semaphore *istruct-class*)
    16951826 
    1696   (make-built-in-class 'type-class *istruct-class*)
     1827  (make-istruct-class 'type-class *istruct-class*)
    16971828 
    1698   (defstatic *ctype-class* (make-built-in-class 'ctype *istruct-class*))
    1699   (make-built-in-class 'key-info *istruct-class*)
    1700   (defstatic *args-ctype* (make-built-in-class 'args-ctype *ctype-class*))
    1701   (make-built-in-class 'values-ctype *args-ctype*)
    1702   (make-built-in-class 'function-ctype *args-ctype*)
    1703   (make-built-in-class 'constant-ctype *ctype-class*)
    1704   (make-built-in-class 'named-ctype *ctype-class*)
    1705   (make-built-in-class 'cons-ctype *ctype-class*)
    1706   (make-built-in-class 'unknown-ctype (make-built-in-class 'hairy-ctype *ctype-class*))
    1707   (make-built-in-class 'numeric-ctype *ctype-class*)
    1708   (make-built-in-class 'array-ctype *ctype-class*)
    1709   (make-built-in-class 'member-ctype *ctype-class*)
    1710   (make-built-in-class 'union-ctype *ctype-class*)
    1711   (make-built-in-class 'foreign-ctype *ctype-class*)
    1712   (make-built-in-class 'class-ctype *ctype-class*)
    1713   (make-built-in-class 'negation-ctype *ctype-class*)
    1714   (make-built-in-class 'intersection-ctype *ctype-class*)
     1829  (defstatic *ctype-class* (make-istruct-class 'ctype *istruct-class*))
     1830  (make-istruct-class 'key-info *istruct-class*)
     1831  (defstatic *args-ctype* (make-istruct-class 'args-ctype *ctype-class*))
     1832  (make-istruct-class 'values-ctype *args-ctype*)
     1833  (make-istruct-class 'function-ctype *args-ctype*)
     1834  (make-istruct-class 'constant-ctype *ctype-class*)
     1835  (make-istruct-class 'named-ctype *ctype-class*)
     1836  (make-istruct-class 'cons-ctype *ctype-class*)
     1837  (make-istruct-class 'unknown-ctype (make-istruct-class 'hairy-ctype *ctype-class*))
     1838  (make-istruct-class 'numeric-ctype *ctype-class*)
     1839  (make-istruct-class 'array-ctype *ctype-class*)
     1840  (make-istruct-class 'member-ctype *ctype-class*)
     1841  (make-istruct-class 'union-ctype *ctype-class*)
     1842  (make-istruct-class 'foreign-ctype *ctype-class*)
     1843  (make-istruct-class 'class-ctype *ctype-class*)
     1844  (make-istruct-class 'negation-ctype *ctype-class*)
     1845  (make-istruct-class 'intersection-ctype *ctype-class*)
    17151846 
    1716   (make-built-in-class 'class-cell *istruct-class*)
     1847  (make-istruct-class 'class-cell *istruct-class*)
     1848  (make-istruct-class 'type-cell *istruct-class*)
     1849  (make-istruct-class 'package-ref *istruct-class*)
     1850
     1851  (make-istruct-class 'foreign-variable *istruct-class*)
     1852  (make-istruct-class 'external-entry-point *istruct-class*)
     1853  (make-istruct-class 'shlib *istruct-class*)
     1854
    17171855  (make-built-in-class 'complex (find-class 'number))
    17181856  (make-built-in-class 'real (find-class 'number))
     
    17371875
    17381876
    1739   (make-built-in-class 'logical-pathname (find-class 'pathname))
     1877  (make-istruct-class 'logical-pathname (find-class 'pathname))
     1878
     1879  (make-istruct-class 'destructure-state *istruct-class*)
    17401880 
    17411881  (defstatic *base-char-class* (alias-class 'base-char *character-class*))
     
    21862326              #'(lambda (s) (%structure-class-of s))) ; need DEFSTRUCT
    21872327        (setf (%svref v target::subtag-istruct)
    2188               #'(lambda (i) (or (find-class (%svref i 0) nil) *istruct-class*)))
     2328              #'(lambda (i)
     2329                  (let* ((cell (%svref i 0))
     2330                         (wrapper (istruct-cell-info  cell)))
     2331                    (if wrapper
     2332                      (%wrapper-class wrapper)
     2333                      (or (find-class (istruct-cell-name cell) nil)
     2334                          *istruct-class*)))))
    21892335        (setf (%svref v target::subtag-basic-stream)
    21902336              #'(lambda (b) (basic-stream.class b)))
     
    22572403
    22582404
    2259 ;;; Can't use typep at bootstrapping time.
     2405;;; True if X is a class but not a foreign-class.
     2406(defun native-class-p (x)
     2407  (if (%standard-instance-p x)
     2408    (< (the fixnum (instance.hash x)) max-class-ordinal)))
     2409
    22602410(defun classp (x)
    2261   (or (and (typep x 'macptr) (foreign-classp x))                ; often faster
    2262       (let ((wrapper (standard-object-p x)))
    2263         (or
    2264          (and wrapper
    2265               (let ((super (%wrapper-class wrapper)))
    2266                 (memq *class-class* (%inited-class-cpl super t))))))))
     2411  (if (%standard-instance-p x)
     2412    (< (the fixnum (instance.hash x)) max-class-ordinal)
     2413    (and (typep x 'macptr) (foreign-classp x))))
    22672414
    22682415(set-type-predicate 'class 'classp)
     
    25182665(declaim (inline find-slotd))
    25192666(defun find-slotd (name slots)
    2520   (find name slots :key #'%slot-definition-name))
     2667  (dolist (slotd slots)
     2668    (when (eq name (standard-slot-definition.name slotd))
     2669      (return slotd))))
    25212670
    25222671(declaim (inline %std-slot-vector-value))
     
    25522701           (eq *standard-class-wrapper* (instance.class-wrapper class)))
    25532702    (%std-slot-vector-value (instance-slots instance) slotd)
    2554     (slot-value-using-class class instance slotd)))
     2703    (if (= (the fixnum (typecode instance)) target::subtag-struct)
     2704      (struct-ref instance (standard-effective-slot-definition.location slotd))
     2705      (slot-value-using-class class instance slotd))))
    25552706
    25562707
     
    25962747    ;; Not safe to use instance.slots here, since the instance is not
    25972748    ;; definitely of type SUBTAG-INSTANCE.  (Anyway, INSTANCE-SLOTS
    2598     ;; should be inlined here.
     2749    ;; should be inlined here.)
    25992750    (%set-std-slot-vector-value (instance-slots instance) slotd new)
    2600     (setf (slot-value-using-class class instance slotd) new)))
     2751    (if (structurep instance)
     2752      (setf (struct-ref instance (standard-effective-slot-definition.location slotd))
     2753            new)
     2754      (setf (slot-value-using-class class instance slotd) new))))
    26012755
    26022756(defmethod slot-value-using-class ((class funcallable-standard-class)
     
    26132767
    26142768(defun slot-value (instance slot-name)
    2615   (let* ((class (class-of instance))
    2616            (slotd (find-slotd slot-name (%class-slots class))))
    2617       (if slotd
    2618        (slot-value-using-class class instance slotd)
    2619        (restart-case
    2620            (values (slot-missing class instance slot-name 'slot-value))
     2769  (let* ((wrapper
     2770          (let* ((w (instance-class-wrapper instance)))
     2771            (if (eql 0 (%wrapper-hash-index w))
     2772              (instance.class-wrapper (update-obsolete-instance instance))
     2773              w)))
     2774         (class (%wrapper-class wrapper))
     2775         (slotd (find-slotd slot-name (if (%standard-instance-p class)
     2776                                        (%class.slots class)
     2777                                        (class-slots class)))))
     2778    (if slotd
     2779      (%maybe-std-slot-value-using-class class instance slotd)
     2780      (if (typep slot-name 'symbol)
     2781        (restart-case
     2782         (values (slot-missing class instance slot-name 'slot-value))
    26212783         (continue ()
    2622            :report "Try accessing the slot again"
    2623            (slot-value instance slot-name))
     2784                   :report "Try accessing the slot again"
     2785                   (slot-value instance slot-name))
    26242786         (use-value (value)
    2625            :report "Return a value"
    2626            :interactive (lambda ()
    2627                           (format *query-io* "~&Value to use: ")
    2628                           (list (read *query-io*)))
    2629            value)))))
    2630    
     2787                    :report "Return a value"
     2788                    :interactive (lambda ()
     2789                                   (format *query-io* "~&Value to use: ")
     2790                                   (list (read *query-io*)))
     2791                    value))
     2792        (report-bad-arg slot-name 'symbol)))))
    26312793
    26322794
     
    26552817
    26562818(defun set-slot-value (instance name value)
    2657   (let* ((class (class-of instance))
    2658              (slotd (find-slotd  name (%class-slots class))))
    2659         (if slotd
    2660           (setf (slot-value-using-class class instance slotd) value)
    2661           (progn           
    2662             (slot-missing class instance name 'setf value)
    2663             value))))
     2819  (let* ((wrapper
     2820          (let* ((w (instance-class-wrapper instance)))
     2821            (if (eql 0 (%wrapper-hash-index w))
     2822              (instance.class-wrapper (update-obsolete-instance instance))
     2823              w)))
     2824         (class (%wrapper-class wrapper))
     2825         (slotd (find-slotd name (if (%standard-instance-p class)
     2826                                   (%class.slots class)
     2827                                   (class-slots class)))))
     2828    (if slotd
     2829      (%maybe-std-setf-slot-value-using-class class instance slotd value)
     2830      (if (typep name 'symbol)
     2831        (progn     
     2832          (slot-missing class instance name 'setf value)
     2833          value)
     2834        (report-bad-arg name 'symbol)))))
    26642835
    26652836(defsetf slot-value set-slot-value)
     
    26842855                slotd loc (slot-definition-allocation slotd))))))
    26852856
     2857(defun %maybe-std-slot-boundp-using-class (class instance slotd)
     2858  (if (and (eql (typecode class) target::subtag-instance)
     2859           (eql (typecode slotd) target::subtag-instance)
     2860           (eq *standard-effective-slot-definition-class-wrapper*
     2861               (instance.class-wrapper slotd))
     2862           (eq *standard-class-wrapper* (instance.class-wrapper class)))
     2863    (%std-slot-vector-boundp (instance-slots instance) slotd)
     2864    (slot-boundp-using-class class instance slotd)))
     2865
     2866
    26862867(defmethod slot-boundp-using-class ((class standard-class)
    26872868                                    instance
     
    26992880
    27002881(defun slot-boundp (instance name)
    2701   (let* ((class (class-of instance))
    2702          (slotd (find-slotd name (%class-slots class))))
     2882  (let* ((wrapper
     2883          (let* ((w (instance-class-wrapper instance)))
     2884            (if (eql 0 (%wrapper-hash-index w))
     2885              (instance.class-wrapper (update-obsolete-instance instance))
     2886              w)))
     2887         (class (%wrapper-class wrapper))
     2888         (slotd (find-slotd name (if (%standard-instance-p class)
     2889                                   (%class.slots class)
     2890                                   (class-slots class)))))
    27032891    (if slotd
    2704       (slot-boundp-using-class class instance slotd)
    2705       (values (slot-missing class instance name 'slot-boundp)))))
     2892      (%maybe-std-slot-boundp-using-class class instance slotd)
     2893      (if (typep name 'symbol)
     2894        (values (slot-missing class instance name 'slot-boundp))
     2895        (report-bad-arg name 'symbol)))))
    27062896
    27072897(defun slot-value-if-bound (instance name &optional default)
     
    27172907
    27182908(defun slot-id-value (instance slot-id)
    2719   (let* ((wrapper (or (standard-object-p instance)
    2720                     (%class-own-wrapper (class-of instance)))))
     2909  (let* ((wrapper (instance-class-wrapper instance)))
    27212910    (funcall (%wrapper-slot-id-value wrapper) instance slot-id)))
    27222911
    27232912(defun set-slot-id-value (instance slot-id value)
    2724   (let* ((wrapper (or (standard-object-p instance)
    2725                     (%class-own-wrapper (class-of instance)))))
     2913  (let* ((wrapper (instance-class-wrapper instance)))
    27262914    (funcall (%wrapper-set-slot-id-value wrapper) instance slot-id value)))
    27272915
     2916(defun slot-id-boundp (instance slot-id)
     2917  (let* ((wrapper (instance-class-wrapper instance))
     2918         (class (%wrapper-class wrapper))
     2919         (slotd (funcall (%wrapper-slot-id->slotd wrapper) slot-id)))
     2920    (if slotd
     2921      (%maybe-std-slot-boundp-using-class class instance slotd)
     2922      (values (slot-missing class instance (slot-id.name slot-id) 'slot-boundp)))))
     2923 
    27282924;;; returns nil if (apply gf args) wil cause an error because of the
    27292925;;; non-existance of a method (or if GF is not a generic function or the name
     
    28083004       (setf (%wrapper-hash-index wrapper) 0
    28093005             (%wrapper-cpl wrapper) nil
     3006             (%wrapper-cpl-bits wrapper) nil
    28103007             (%wrapper-instance-slots wrapper) 0
    28113008             (%wrapper-forwarding-info wrapper) forwarding-info
     
    30993296  (let ((wrapper (standard-object-p instance)))
    31003297    (unless wrapper
    3101       (if (standard-generic-function-p instance)
    3102         (setq wrapper (generic-function-wrapper instance))
    3103         (when (typep instance 'funcallable-standard-object)
    3104           (setq wrapper (gf.instance.class-wrapper instance))))
     3298              (when (typep instance 'funcallable-standard-object)
     3299          (setq wrapper (gf.instance.class-wrapper instance)))
    31053300     
    31063301      (unless wrapper
    3107         (report-bad-arg instance '(or standard-object standard-generic-function))))
     3302        (report-bad-arg instance '(or standard-object funcallable-standard-object))))
    31083303    (when (eql 0 (%wrapper-hash-index wrapper))
    31093304      (update-obsolete-instance instance)))
     
    35033698(setf (fdefinition '%do-remove-direct-method) #'remove-direct-method)
    35043699
    3505 (defmethod instance-class-wrapper (x)
    3506   (%class.own-wrapper (class-of x)))
    3507 
    3508 (defmethod instance-class-wrapper ((instance standard-object))
    3509   (if (%standard-instance-p instance)
    3510     (instance.class-wrapper instance)
    3511     (if (typep instance 'macptr)
    3512       (foreign-instance-class-wrapper instance)
    3513       (%class.own-wrapper (class-of instance)))))
    3514 
    3515 (defmethod instance-class-wrapper ((instance standard-generic-function))
    3516   (gf.instance.class-wrapper  instance))
     3700
     3701
    35173702
    35183703
    35193704                                   
    35203705
    3521 (defun generic-function-wrapper (gf)
    3522   (unless (inherits-from-standard-generic-function-p (class-of gf))
    3523     (%badarg gf 'standard-generic-function))
    3524   (gf.instance.class-wrapper gf))
     3706
    35253707
    35263708(defvar *make-load-form-saving-slots-hash* (make-hash-table :test 'eq))
     
    35793761                 (error "Can't find structure named ~s" class-name)))
    35803762         (res (make-structure-vector (sd-size sd))))
    3581     (setf (%svref res 0) (sd-superclasses sd))
     3763    (setf (%svref res 0) (mapcar (lambda (x)
     3764                                   (find-class-cell x t)) (sd-superclasses sd)))
    35823765    res))
    35833766
  • branches/working-0711/ccl/level-1/l1-clos.lisp

    r9390 r9578  
    150150           documentation class nil (ensure-slot-id name) #'true)))
    151151
    152 (defmethod class-slots ((class class)))
    153 (defmethod class-direct-slots ((class class)))
    154 (defmethod class-default-initargs ((class class)))
    155 (defmethod class-direct-default-initargs ((class class)))
    156152
    157153(defmethod compile-time-class-p ((class class)) nil)
     
    505501
    506502(defun forward-referenced-class-p (class)
    507   (typep class 'forward-referenced-class))
    508 
    509 ;;; This uses the primary class information to sort a class'es slots
     503  (and (%standard-instance-p class)
     504       (eq (%class-of-instance class) *forward-referenced-class-class*)))
     505
     506;;; This uses the primary class information to sort the slots of a class.
    510507(defun sort-effective-instance-slotds (slotds class cpl)
    511508  (let (primary-slotds
     
    636633      (let* ((wrapper (%class-own-wrapper class)))
    637634        (when wrapper
    638           (setf (%wrapper-cpl wrapper) cpl)))))
     635          (setf (%wrapper-cpl wrapper) cpl
     636                (%wrapper-cpl-bits wrapper) (make-cpl-bits cpl))))))
    639637  (unless finalizep
    640638    (dolist (sub (%class-direct-subclasses class))
     
    727725
    728726(defmethod initialize-instance :before ((class class) &key &allow-other-keys)
     727  (setf (%class-ordinal class) (%next-class-ordinal))
    729728  (setf (%class.ctype class) (make-class-ctype class)))
    730729
     
    10061005   (:name direct-subclasses  :initform nil  :initfunction ,#'false :readers (class-direct-subclasses))
    10071006   (:name dependents :initform nil :initfunction ,#'false)
    1008    (:name class-ctype :initform nil :initfunction ,#'false))
     1007   (:name class-ctype :initform nil :initfunction ,#'false)
     1008   (:name direct-slots :initform nil :initfunction ,#'false
     1009                  :readers (class-direct-slots)
     1010                  :writers ((setf class-direct-slots)))
     1011   (:name slots :initform nil :initfunction ,#'false
     1012    :readers (class-slots)
     1013    :writers ((setf class-slots)))
     1014   (:name info :initform (cons nil nil) :initfunction ,(lambda () (cons nil nil)) :readers (class-info))
     1015   (:name direct-default-initargs  :initform nil  :initfunction ,#'false :readers (class-direct-default-initargs))
     1016   (:name default-initargs :initform nil  :initfunction ,#'false :readers (class-default-initargs)))
    10091017 :primary-p t)
    10101018
     
    10231031 'slots-class
    10241032 :direct-superclasses '(class)
    1025  :direct-slots `((:name direct-slots :initform nil :initfunction ,#'false
    1026                    :readers (class-direct-slots)
    1027                   :writers ((setf class-direct-slots)))
    1028                  (:name slots :initform nil :initfunction ,#'false
    1029                    :readers (class-slots))
    1030                  (:name kernel-p :initform nil :initfunction ,#'false)
    1031                  (:name direct-default-initargs  :initform nil  :initfunction ,#'false :readers (class-direct-default-initargs))
    1032                  (:name default-initargs :initform nil  :initfunction ,#'false :readers (class-default-initargs))
    1033                  (:name alist :initform nil  :initfunction ,#'false))
     1033 :direct-slots `((:name alist :initform nil  :initfunction ,#'false))
    10341034 :primary-p t)
    10351035
     
    12441244                        (setf (%class-own-wrapper class) (%cons-wrapper class))))
    12451245           (cpl (compute-cpl class)))
    1246       (setf (%wrapper-cpl wrapper) cpl))))
     1246      (setf (%class.cpl class) cpl)
     1247      (setf (%wrapper-cpl wrapper) cpl
     1248            (%wrapper-cpl-bits wrapper) (make-cpl-bits cpl)))))
    12471249             
    12481250
     
    16731675(defmethod make-load-form ((c class-cell) &optional env)
    16741676  (declare (ignore env))
    1675   `(find-class-cell ,(class-cell-name c)))
     1677  `(find-class-cell ',(class-cell-name c) t))
    16761678
    16771679
     
    16801682  (check-type new symbol)
    16811683  (when (and (standard-instance-p class)
    1682              (%class.kernel-p class)
     1684             (%class-kernel-p class)
    16831685             (not (eq new (%class.name class)))
    16841686             *warn-if-redefine-kernel*)
     
    17001702    (clear-type-cache))
    17011703  (reinitialize-instance class :name new)
     1704  (setf (%class-proper-name class)
     1705        (if (eq (find-class new nil) class)
     1706          new))
    17021707  new)
    17031708
     
    17141719
    17151720
    1716 (defmethod instance-class-wrapper ((instance funcallable-standard-object))
    1717   (gf.instance.class-wrapper  instance))
     1721
    17181722
    17191723(defun set-funcallable-instance-function (funcallable-instance function)
     
    18231827            (override-one-method-one-arg-dcode gf (car methods))))))))
    18241828
     1829(defparameter *unique-reader-dcode-functions* t)
     1830
    18251831;;; dcode for a GF with a single reader method which accesses
    18261832;;; a slot in a class that has no subclasses (that restriction
     
    18571863(defun reader-constant-location-inherited-from-single-class-dcode (dt instance)
    18581864  (declare (optimize (speed 3) (safety 0)))
    1859   (let* ((defining-class (%svref dt %gf-dispatch-table-first-data))
    1860          (location (%svref dt (1+ %gf-dispatch-table-first-data)))
    1861          (cpl (let* ((wrapper
    1862                       (if (eq (typecode instance) target::subtag-instance)
    1863                         (instance.class-wrapper instance))))
    1864                 (when wrapper (or (%wrapper-cpl wrapper)
    1865                                   (%inited-class-cpl
    1866                                    (%wrapper-class wrapper)))))))
    1867     (if (memq defining-class cpl)
    1868       (%slot-ref (instance.slots instance) location)
     1865  (let* ((defining-class-ordinal (%svref dt %gf-dispatch-table-first-data))
     1866         (bits  (let* ((wrapper
     1867                        (if (eq (typecode instance) target::subtag-instance)
     1868                          (instance.class-wrapper instance))))
     1869                  (when wrapper (or (%wrapper-cpl-bits wrapper)
     1870                                    (make-cpl-bits (%inited-class-cpl
     1871                                                    (%wrapper-class wrapper))))))))
     1872    (declare (fixnum defining-class-ordinal))
     1873    (if (and bits
     1874             (< defining-class-ordinal (the fixnum (uvsize bits)))
     1875             (not (eql 0 (sbit bits defining-class-ordinal))))
     1876      (%slot-ref (instance.slots instance) (%svref dt (1+ %gf-dispatch-table-first-data)))
    18691877      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
    18701878(register-dcode-proto #'reader-constant-location-inherited-from-single-class-dcode *gf-proto-one-arg*)
     1879
     1880;;; It may be faster to make individual functions that take their
     1881;;; "parameters" (defining class ordinal, slot location) as constants.
     1882;;; It may not be.  Use *unique-reader-dcode-functions* to decide
     1883;;; whether or not to do so.
     1884(defun make-reader-constant-location-inherited-from-single-class-dcode
     1885    (defining-class-ordinal location gf)
     1886  (if *unique-reader-dcode-functions*
     1887    (let* ((gf-name (function-name gf)))
     1888      (values
     1889       (%make-function
     1890        `(slot-reader for ,gf-name)
     1891        `(lambda (instance)
     1892          (locally (declare (optimize (speed 3) (safety 0)))
     1893            (let* ((bits (let* ((wrapper
     1894                                 (if (eq (typecode instance) target::subtag-instance)
     1895                                   (instance.class-wrapper instance))))
     1896                           (when wrapper (or (%wrapper-cpl-bits wrapper)
     1897                                             (make-cpl-bits (%inited-class-cpl
     1898                                                             (%wrapper-class wrapper))))))))
     1899              (if (and bits
     1900                       (< ,defining-class-ordinal (the fixnum (uvsize bits)))
     1901                       (not (eql 0 (sbit bits ,defining-class-ordinal))))
     1902                (%slot-ref (instance.slots instance) ,location)
     1903                (no-applicable-method (function ,gf-name) instance)))))
     1904        nil)
     1905       #'funcallable-trampoline))
     1906    (let* ((dt (gf.dispatch-table gf)))
     1907      (setf (%svref dt %gf-dispatch-table-first-data)
     1908            defining-class-ordinal
     1909            (%svref dt (1+ %gf-dispatch-table-first-data))
     1910            location)
     1911      (values
     1912       (dcode-for-gf gf #'reader-constant-location-inherited-from-single-class-dcode)
     1913       (cdr (assq #'reader-constant-location-inherited-from-single-class-dcode dcode-proto-alist))))))
    18711914
    18721915;;; Dcode for a GF whose methods are all reader-methods which access a
     
    18791922  (let* ((wrapper (if (eq (typecode instance) target::subtag-instance)
    18801923                    (instance.class-wrapper instance)))
    1881          (cpl (if wrapper (or (%wrapper-cpl wrapper) (%inited-class-cpl (%wrapper-class wrapper))))))
    1882     (if (dolist (defining-class (%svref dt %gf-dispatch-table-first-data))
    1883           (when (memq defining-class cpl) (return t)))
     1924         (bits (if wrapper (or (%wrapper-cpl-bits wrapper)
     1925                               (make-cpl-bits (%inited-class-cpl (%wrapper-class wrapper))))))
     1926         (nbits (if bits (uvsize bits) 0)))
     1927    (declare (fixnum nbits))
     1928    (if (dolist (ordinal (%svref dt %gf-dispatch-table-first-data))
     1929          (declare (fixnum ordinal))
     1930          (when (and (< ordinal nbits)
     1931                     (not (eql 0 (sbit bits ordinal))))
     1932            (return t)))
    18841933      (%slot-ref (instance.slots instance) (%svref dt (1+ %gf-dispatch-table-first-data)))
    18851934      (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
     
    19862035                         ((null (cdr (setq classes (remove-subclasses-from-class-list classes))))
    19872036                          ;; Lots of classes, all subclasses of a single class
    1988                           (setf (%svref dt %gf-dispatch-table-first-data)
    1989                                 (car classes)
    1990                                 (%svref dt (1+ %gf-dispatch-table-first-data))
    1991                                 loc
    1992                                 (gf.dcode f)
    1993                                 (dcode-for-gf f #'reader-constant-location-inherited-from-single-class-dcode)))
     2037                          (multiple-value-bind (dcode trampoline)
     2038                              (make-reader-constant-location-inherited-from-single-class-dcode (%class-ordinal (car classes)) loc f)
     2039                            (setf (gf.dcode f) dcode)
     2040                            (replace-function-code f trampoline)))
    19942041                         (t
    19952042                          ;; Multple classes.  We should probably check
    19962043                          ;; to see they're disjoint
    19972044                          (setf (%svref dt %gf-dispatch-table-first-data)
    1998                                 classes
     2045                                (mapcar #'%class-ordinal classes)
    19992046                                (%svref dt (1+ %gf-dispatch-table-first-data))
    20002047                                loc
     
    23362383    (values ngf nwin 0)))
    23372384
     2385(defun register-non-dt-dcode-function (f)
     2386  (flet ((symbol-or-function-name (x)
     2387           (etypecase x
     2388             (symbol x)
     2389             (function (function-name x)))))
     2390    (let* ((already (member (symbol-or-function-name f) *non-dt-dcode-functions* :key #'symbol-or-function-name)))
     2391      (if already
     2392        (setf (car already) f)
     2393        (push f *non-dt-dcode-functions*))
     2394      f)))
     2395
    23382396(defun pessimize-clos ()
    23392397  (declare (special *sealed-clos-world*))
     
    23512409    (setq *sealed-clos-world* nil)
    23522410    t))
     2411
     2412;;; If there's a single method (with standard method combination) on
     2413;;; GF and all of that method's arguments are specialized to the T
     2414;;; class - and if the method doesn't accept &key - we can just have
     2415;;; the generic function call the method-function
     2416(defun dcode-for-universally-applicable-singleton (gf)
     2417  (when (eq (generic-function-method-combination gf)
     2418            *standard-method-combination*)
     2419    (let* ((methods (generic-function-methods gf))
     2420           (method (car methods)))
     2421      (when (and method
     2422                 (null (cdr methods))
     2423                 (null (method-qualifiers method))
     2424                 (not (logbitp $lfbits-keys-bit (lfun-bits (method-function method))))
     2425                 (dolist (spec (method-specializers method) t)
     2426                   (unless (eq spec *t-class*)
     2427                     (return nil))))
     2428        (method-function method)))))
     2429
     2430(register-non-dt-dcode-function #'dcode-for-universally-applicable-singleton)
  • branches/working-0711/ccl/level-1/l1-dcode.lisp

    r9131 r9578  
    294294
    295295(defun %find-1st-arg-combined-method (dt arg)
    296   (declare (optimize (speed 3)(safety 0)))
    297   (flet ((get-wrapper (arg)
    298            (if (not (%standard-instance-p arg))
    299              (or (and (typep arg 'macptr)
    300                       (foreign-instance-class-wrapper arg))
    301                  (and (generic-function-p arg)
    302                       (gf.instance.class-wrapper arg))
    303                  (let* ((class (class-of arg)))
    304                    (or (%class.own-wrapper class)
    305                        (progn
    306                          (update-class class nil)
    307                          (%class.own-wrapper class)))))
    308              (instance.class-wrapper arg))))
    309     (declare (inline get-wrapper))
    310     (let ((wrapper (get-wrapper arg)))
    311       (when (eql 0 (%wrapper-hash-index wrapper))
    312         (update-obsolete-instance arg)
    313         (setq wrapper (get-wrapper arg)))
    314       (let* ((mask (%gf-dispatch-table-mask dt))
    315              (index (%ilsl 1 (%ilogand mask (%wrapper-hash-index wrapper))))
    316              table-wrapper flag)
    317         (declare (fixnum index mask))
    318         (loop
    319           (if (eq (setq table-wrapper (%gf-dispatch-table-ref dt index)) wrapper)
    320             (return (%gf-dispatch-table-ref dt  (the fixnum (1+ index))))
    321             (progn
    322               (when (null (%gf-dispatch-table-ref dt (the fixnum (1+ index))))
    323                 (if (or (neq table-wrapper (%unbound-marker))
    324                         (eql 0 flag))
    325                   (without-interrupts   ; why?
    326                    (return (1st-arg-combined-method-trap (%gf-dispatch-table-gf dt) wrapper arg))) ; the only difference?
    327                   (setq flag 0 index -2)))
    328               (setq index (+ 2 index)))))))))
     296  (let ((wrapper (instance-class-wrapper arg)))
     297    (when (eql 0 (%wrapper-hash-index wrapper))
     298      (update-obsolete-instance arg)
     299      (setq wrapper (instance-class-wrapper arg)))
     300    (let* ((mask (%gf-dispatch-table-mask dt))
     301           (index (%ilsl 1 (%ilogand mask (%wrapper-hash-index wrapper))))
     302           table-wrapper flag)
     303      (declare (fixnum index mask))
     304      (loop
     305        (if (eq (setq table-wrapper (%gf-dispatch-table-ref dt index)) wrapper)
     306          (return (%gf-dispatch-table-ref dt  (the fixnum (1+ index))))
     307          (progn
     308            (when (null (%gf-dispatch-table-ref dt (the fixnum (1+ index))))
     309              (if (or (neq table-wrapper (%unbound-marker))
     310                      (eql 0 flag))
     311                (without-interrupts     ; why?
     312                 (return (1st-arg-combined-method-trap (%gf-dispatch-table-gf dt) wrapper arg))) ; the only difference?
     313                (setq flag 0 index -2)))
     314            (setq index (+ 2 index))))))))
    329315
    330316;;; for calls from outside - e.g. stream-reader
     
    338324(defun %find-nth-arg-combined-method (dt arg args) 
    339325  (declare (optimize (speed 3)(safety 0)))
    340   (flet ((get-wrapper (arg)
    341            (if (not (%standard-instance-p arg))
    342              (or (and (typep arg 'macptr)
    343                       (foreign-instance-class-wrapper arg))
    344                  (and (generic-function-p arg)
    345                       (gf.instance.class-wrapper arg))
    346                  (let* ((class (class-of arg)))
    347                    (or (%class.own-wrapper class)
    348                        (progn
    349                          (update-class class nil)
    350                          (%class.own-wrapper class)))))
    351              (instance.class-wrapper arg))))
    352     (declare (inline get-wrapper))
    353     (let ((wrapper (get-wrapper arg)))
    354       (when (eql 0 (%wrapper-hash-index wrapper))
    355         (update-obsolete-instance arg)
    356         (setq wrapper (get-wrapper arg)))
    357       (let* ((mask (%gf-dispatch-table-mask dt))
    358              (index (%ilsl 1 (%ilogand mask (%wrapper-hash-index wrapper))))
    359              table-wrapper flag)
    360         (declare (fixnum index mask))
    361         (loop
    362           (if (eq (setq table-wrapper (%gf-dispatch-table-ref dt index)) wrapper)
    363             (return (%gf-dispatch-table-ref dt (the fixnum (1+ index))))
    364             (progn
    365               (when (null (%gf-dispatch-table-ref dt (the fixnum (1+ index))))
    366                 (if (or (neq table-wrapper (%unbound-marker))
    367                         (eql 0 flag))
    368                   (without-interrupts ; why?
    369                    (let ((gf (%gf-dispatch-table-gf dt)))
    370                      (if (listp args)
    371                        (return (nth-arg-combined-method-trap-0 gf dt wrapper args))
    372                        (with-list-from-lexpr (args-list args)
    373                          (return (nth-arg-combined-method-trap-0 gf dt wrapper args-list))))))
    374                   (setq flag 0 index -2)))
    375               (setq index (+ 2 index)))))))))
     326  (let ((wrapper (instance-class-wrapper arg)))
     327    (when (eql 0 (%wrapper-hash-index wrapper))
     328      (update-obsolete-instance arg)
     329      (setq wrapper (instance-class-wrapper arg)))
     330    (let* ((mask (%gf-dispatch-table-mask dt))
     331           (index (%ilsl 1 (%ilogand mask (%wrapper-hash-index wrapper))))
     332           table-wrapper flag)
     333      (declare (fixnum index mask))
     334      (loop
     335        (if (eq (setq table-wrapper (%gf-dispatch-table-ref dt index)) wrapper)
     336          (return (%gf-dispatch-table-ref dt (the fixnum (1+ index))))
     337          (progn
     338            (when (null (%gf-dispatch-table-ref dt (the fixnum (1+ index))))
     339              (if (or (neq table-wrapper (%unbound-marker))
     340                      (eql 0 flag))
     341                (without-interrupts     ; why?
     342                 (let ((gf (%gf-dispatch-table-gf dt)))
     343                   (if (listp args)
     344                     (return (nth-arg-combined-method-trap-0 gf dt wrapper args))
     345                     (with-list-from-lexpr (args-list args)
     346                       (return (nth-arg-combined-method-trap-0 gf dt wrapper args-list))))))
     347                (setq flag 0 index -2)))
     348            (setq index (+ 2 index))))))))
    376349
    377350
     
    536509  (setf (combined-method.dcode cm) val))
    537510
     511(declaim (inline funcallable-instance-p))
    538512(defun funcallable-instance-p (thing)
    539513  (when (typep thing 'function)
     
    544518                               (ash 1 $lfbits-method-bit)))))))
    545519
     520(setf (type-predicate 'funcallable-standard-object) 'funcallable-instance-p)
     521
    546522(defstatic *generic-function-class-wrapper* nil)
    547523(defstatic *standard-generic-function-class-wrapper* nil)
    548524
    549525(defun generic-function-p (thing)
    550   (and (typep thing 'function)
    551        (let ((bits (lfun-bits-known-function thing)))
    552          (declare (fixnum bits))
    553          (eq (ash 1 $lfbits-gfn-bit)
    554              (logand bits (logior (ash 1 $lfbits-gfn-bit)
    555                                   (ash 1 $lfbits-method-bit)))))
     526  (and (typep thing 'funcallable-standard-object)
    556527       (let* ((wrapper (gf.instance.class-wrapper thing)))
    557528         ;; In practice, many generic-functions are standard-generic-functions.
    558529         (or (eq *standard-generic-function-class-wrapper* wrapper)
    559530             (eq *generic-function-class-wrapper* wrapper)
    560              (memq  *generic-function-class*
    561                   (%inited-class-cpl (class-of thing)))))))
     531             (let* ((bits (or (%wrapper-cpl-bits wrapper)
     532                              (make-cpl-bits (%inited-class-cpl (%wrapper-class wrapper)))))
     533                    (ordinal (%wrapper-class-ordinal *generic-function-class-wrapper*)))
     534               (and bits ordinal
     535                    (locally (declare (simple-bit-vector bits)
     536                                      (fixnum ordinal)
     537                                      (optimize (speed 3) (safety 0)))
     538                      (and (< ordinal (length bits))
     539                           (eql 1 (sbit bits ordinal))))))))))
    562540
    563541
     
    803781      (apply method args))))
    804782
     783(register-dcode-proto #'%%0-arg-dcode *gf-proto*)
     784
    805785(defun dcode-too-few-args (arg-count cm-or-gf)
    806786  (error (make-condition 'too-few-arguments
     
    822802      (let ((method (%find-1st-arg-combined-method dt (%car args))))
    823803        (apply method args)))))
    824 
     804(register-dcode-proto #'%%1st-arg-dcode *gf-proto*)
    825805
    826806(defun %%one-arg-dcode (dt  arg)
     
    851831      (let ((method (%find-nth-arg-combined-method dt (%lexpr-ref args args-len argnum) args)))
    852832        (%apply-lexpr-tail-wise method args)))))
     833(register-dcode-proto #'%%nth-arg-dcode *gf-proto*)
    853834
    854835
     
    15281509
    15291510
     1511
    15301512(defun %%hash-table-combined-method-dcode (stuff args)
    15311513  ;; stuff is (argnum eql-hash-table . default-method)
     
    19811963
    19821964
     1965
  • branches/working-0711/ccl/level-1/l1-error-system.lisp

    r9467 r9578  
    136136(define-condition cant-construct-arglist (improper-list)
    137137  ())
    138 
    139138
    140139
     
    495494(defun restartp (thing)
    496495  (istruct-typep thing 'restart))
    497 (setf (type-predicate 'restart) 'restartp)
    498496
    499497(defmethod print-object ((restart restart) stream)
  • branches/working-0711/ccl/level-1/l1-format.lisp

    r9464 r9578  
    135135
    136136
    137 #|
     137#||
    138138(eval-when (load)
    139139  ;The non-consing version.
     
    287287) ;end of eval-when (load)
    288288
    289 |#
    290 
    291 ;Interim definitions
    292 
    293 ;This function is shadowed by CCL in order to use ~{ to print error messages.
     289||#
     290
     291;;;Interim definitions
     292
     293;;;This function is shadowed by CCL in order to use ~{ to print error messages.
    294294(defun format (stream control-string &rest format-arguments)
    295295  (declare (dynamic-extent format-arguments))
    296   (when (eq stream t) (setq stream *standard-output*))
    297296  (when (null stream)
    298297   (return-from format
    299298    (with-output-to-string (x)
    300299     (apply #'format x control-string format-arguments))))
    301   (unless (streamp stream) (report-bad-arg stream 'stream))
     300  (if (eq stream t)
     301    (setq stream *standard-output*)
     302    (unless (streamp stream) (report-bad-arg stream 'stream)))
    302303  (if (functionp control-string)
    303304    (apply control-string stream format-arguments)
  • branches/working-0711/ccl/level-1/l1-lisp-threads.lisp

    r7948 r9578  
    2727  (istruct-typep thing 'lisp-thread))
    2828
    29 (setf (type-predicate 'lisp-thread) 'lisp-thread-p)
    3029
    3130(defloadvar *ticks-per-second*
  • branches/working-0711/ccl/level-1/l1-numbers.lisp

    r8920 r9578  
    423423(defun %cons-random-state (seed-1 seed-2)
    424424  #+32-bit-target
    425   (gvector :istruct
    426            'random-state
    427            seed-1
    428            seed-2)
     425  (%istruct 'random-state seed-1 see