Commit f0a8c5c4 authored by rtoy's avatar rtoy
Browse files

Add support for dumping 16-bit characters. (Of course we still only

have 8 bits for each character.)

code/load.lisp:
o Read 16 bits from a fasl to create a character.  The data is stored
  little-endian.

code/dump.lisp:
o Dump a 16-bit character to a fasl in little-endian order.

compiler/generic/new-genesis.lisp:
o Read 16-bit character in little-endian order.

bootfiles/19e/boot-2008-05-cross-unicode-common.lisp:
o Update dump-character and fop-short-character with the new
  definitions from load.lisp and dump.lisp.
parent c0641ea6
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -65,6 +65,13 @@

  (undefined-value))

(defun dump-character (ch file)
  (dump-fop 'lisp::fop-short-character file)
  ;; Little endian
  (let ((code (char-code ch)))
    (dump-byte (ldb (byte 8 0) code) file)
    (dump-byte (ldb (byte 8 8) code) file)))

(in-package "LISP")

;; Needed to read in 16-bit strings.
@@ -82,6 +89,12 @@
					 (ash c-hi 8))))))
    res))

(define-fop (fop-short-character 69)
  ;; Little endian
  (let ((code-lo (read-arg 1))
	(code-hi (read-arg 1)))
    (code-char (+ code-lo (ash code-hi 8)))))

;; Needed to read in 16-bit strings to create the symbols.
(macrolet ((frob (name code name-size package)
	     (let ((n-package (gensym "PACKAGE-"))
+1 −3
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/load.lisp,v 1.92.4.1 2008/05/14 16:12:04 rtoy Exp $")
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/load.lisp,v 1.92.4.2 2008/05/20 14:33:05 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -707,9 +707,7 @@

#+unicode
(define-fop (fop-short-character 69)
  (code-char (read-arg 1))
  ;; Little endian
  #+nil
  (let ((code-lo (read-arg 1))
	(code-hi (read-arg 1)))
    (code-char (+ code-lo (ash code-hi 8)))))
+1 −3
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/dump.lisp,v 1.82.6.1 2008/05/14 16:12:04 rtoy Exp $")
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/dump.lisp,v 1.82.6.2 2008/05/20 14:33:05 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -1695,9 +1695,7 @@
#+unicode
(defun dump-character (ch file)
  (dump-fop 'lisp::fop-short-character file)
  (dump-byte (char-code ch) file)
  ;; Little endian
  #+nil
  (let ((code (char-code ch)))
    (dump-byte (ldb (byte 8 0) code) file)
    (dump-byte (ldb (byte 8 8) code) file)))
+2 −2
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.80.4.1 2008/05/14 16:12:05 rtoy Exp $")
  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.80.4.2 2008/05/20 14:33:06 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -1227,7 +1227,7 @@

#+unicode
(define-cold-fop (fop-short-character)
  (make-character-descriptor (read-arg 1)))
  (make-character-descriptor (+ (read-arg 1) (ash (read-arg 1) 8))))

(define-cold-fop (fop-empty-list) *nil-descriptor*)
(define-cold-fop (fop-truth) (cold-intern t))