Changeset 7316


Ignore:
Timestamp:
Sep 28, 2007, 7:14:57 PM (12 years ago)
Author:
gb
Message:

Set ioblock encode/decode "literal limits" in SETUP-IOBLOCK-OUTPUT/INPUT,
so that they're set if the encoding is changed on-the-fly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/l1-streams.lisp

    r7314 r7316  
    26412641  (when character-p
    26422642    (setf (ioblock-unread-char-function ioblock) '%ioblock-untyi)
     2643    (setf (ioblock-decode-literal-code-unit-limit ioblock)
     2644          (if encoding
     2645            (character-encoding-decode-literal-code-unit-limit encoding)
     2646            256))   
    26432647    (if encoding
    26442648      (let* ((unit-size (character-encoding-code-unit-size encoding)))
     
    28282832      (setf (ioblock-sharing ioblock) sharing))
    28292833  (when character-p
     2834    (setf (ioblock-encode-literal-char-code-limit ioblock)
     2835          (if encoding
     2836            (character-encoding-encode-literal-char-code-limit encoding)
     2837            256))   
    28302838    (if encoding
    28312839      (let* ((unit-size (character-encoding-code-unit-size encoding)))
     
    29042912      (setf (ioblock-write-byte-function ioblock)
    29052913            (cond ((= subtag target::subtag-u8-vector)
    2906                     (progn
    2907                        (setf (ioblock-write-byte-when-locked-function ioblock)
    2908                              '%ioblock-write-u8-byte)
    2909                        (case sharing
    2910                          (:private '%private-ioblock-write-u8-byte)
    2911                          (:lock '%locked-ioblock-write-u8-byte)
    2912                          (t '%ioblock-write-u8-byte))))
     2914                   (progn
     2915                     (setf (ioblock-write-byte-when-locked-function ioblock)
     2916                           '%ioblock-write-u8-byte)
     2917                     (case sharing
     2918                       (:private '%private-ioblock-write-u8-byte)
     2919                       (:lock '%locked-ioblock-write-u8-byte)
     2920                       (t '%ioblock-write-u8-byte))))
    29132921                  ((= subtag target::subtag-s8-vector)
    29142922                   (setf (ioblock-write-byte-when-locked-function ioblock)
    29152923                         '%ioblock-write-s8-byte)                   
    2916                      (case sharing
    2917                        (:private '%private-ioblock-write-s8-byte)
    2918                        (:lock '%locked-ioblock-write-s8-byte)
    2919                        (t '%ioblock-write-s8-byte)))
     2924                   (case sharing
     2925                     (:private '%private-ioblock-write-s8-byte)
     2926                     (:lock '%locked-ioblock-write-s8-byte)
     2927                     (t '%ioblock-write-s8-byte)))
    29202928                  ((= subtag target::subtag-u16-vector)
    29212929                   (setf (ioblock-write-byte-when-locked-function ioblock)
    29222930                         '%ioblock-write-u16-byte)                   
    2923                      (case sharing
    2924                        (:private '%private-ioblock-write-u16-byte)
    2925                        (:lock '%locked-ioblock-write-u16-byte)
    2926                        (t '%ioblock-write-u16-byte)))
     2931                   (case sharing
     2932                     (:private '%private-ioblock-write-u16-byte)
     2933                     (:lock '%locked-ioblock-write-u16-byte)
     2934                     (t '%ioblock-write-u16-byte)))
    29272935                  ((= subtag target::subtag-s16-vector)
    29282936                   (setf (ioblock-write-byte-when-locked-function ioblock)
    29292937                         '%ioblock-write-s16-byte)                                     
    2930                      (case sharing
    2931                        (:private '%private-ioblock-write-s16-byte)
    2932                        (:lock '%locked-ioblock-write-s16-byte)
    2933                        (t '%ioblock-write-s16-byte)))
     2938                   (case sharing
     2939                     (:private '%private-ioblock-write-s16-byte)
     2940                     (:lock '%locked-ioblock-write-s16-byte)
     2941                     (t '%ioblock-write-s16-byte)))
    29342942                  ((= subtag target::subtag-u32-vector)
    29352943                   (setf (ioblock-write-byte-when-locked-function ioblock)
    29362944                         '%ioblock-write-u32-byte)                                     
    2937                      (case sharing
    2938                        (:private '%private-ioblock-write-u32-byte)
    2939                        (:lock '%locked-ioblock-write-u32-byte)
    2940                        (t '%ioblock-write-u32-byte)))
     2945                   (case sharing
     2946                     (:private '%private-ioblock-write-u32-byte)
     2947                     (:lock '%locked-ioblock-write-u32-byte)
     2948                     (t '%ioblock-write-u32-byte)))
    29412949                  ((= subtag target::subtag-s32-vector)
    29422950                   (setf (ioblock-write-byte-when-locked-function ioblock)
    29432951                         '%ioblock-write-s32-byte)
    29442952                   (case sharing
    2945                        (:private '%private-ioblock-write-s32-byte)
    2946                        (:lock '%locked-ioblock-write-s32-byte)
    2947                        (t '%ioblock-write-s32-byte)))
     2953                     (:private '%private-ioblock-write-s32-byte)
     2954                     (:lock '%locked-ioblock-write-s32-byte)
     2955                     (t '%ioblock-write-s32-byte)))
    29482956                  #+64-bit-target
    29492957                  ((= subtag target::subtag-u64-vector)
     
    29512959                         '%ioblock-write-u64-byte)
    29522960                   (case sharing
    2953                        (:private '%private-ioblock-write-u64-byte)
    2954                        (:lock '%locked-ioblock-write-u64-byte)
    2955                        (t '%ioblock-write-u64-byte)))
     2961                     (:private '%private-ioblock-write-u64-byte)
     2962                     (:lock '%locked-ioblock-write-u64-byte)
     2963                     (t '%ioblock-write-u64-byte)))
    29562964                  #+64-bit-target
    29572965                  ((= subtag target::subtag-s64-vector)
     
    29592967                         '%ioblock-write-u64-byte)
    29602968                   (case sharing
    2961                        (:private '%private-ioblock-write-s64-byte)
    2962                        (:lock '%locked-ioblock-write-s64-byte)
    2963                        (t '%ioblock-write-s64-byte)))
     2969                     (:private '%private-ioblock-write-s64-byte)
     2970                     (:lock '%locked-ioblock-write-s64-byte)
     2971                     (t '%ioblock-write-s64-byte)))
    29642972                  (t
    29652973                   (setf (ioblock-write-byte-when-locked-function ioblock)
     
    30573065      (setf (ioblock-owner ioblock) *current-process*))
    30583066    (setf (ioblock-encoding ioblock) encoding)
    3059     (setf (ioblock-decode-literal-code-unit-limit ioblock)
    3060           (if encoding
    3061             (character-encoding-decode-literal-code-unit-limit encoding)
    3062             256))
    3063     (setf (ioblock-encode-literal-char-code-limit ioblock)
    3064           (if encoding
    3065             (character-encoding-encode-literal-char-code-limit encoding)
    3066             256))
    30673067    (when insize
    30683068      (unless (ioblock-inbuf ioblock)
Note: See TracChangeset for help on using the changeset viewer.