From e2313f192577ca5408f1dc3a60cc94e67ac3274a Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Mon, 17 Jul 2017 18:48:58 -0400 Subject: [PATCH] Change multibyte mappers to defglobals --- src/code/external-formats/enc-cn-tbl.lisp | 4 ++-- src/code/external-formats/enc-cn.lisp | 4 ++-- src/code/external-formats/enc-jpn-tbl.lisp | 8 ++++---- src/code/external-formats/enc-jpn.lisp | 8 ++++---- src/code/external-formats/mb-util.lisp | 8 +++++++- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/code/external-formats/enc-cn-tbl.lisp b/src/code/external-formats/enc-cn-tbl.lisp index 603c3b24a..108bbfb6f 100644 --- a/src/code/external-formats/enc-cn-tbl.lisp +++ b/src/code/external-formats/enc-cn-tbl.lisp @@ -11,7 +11,7 @@ (in-package "SB!IMPL") -(define-multibyte-mapper *gbk-to-ucs-table* +(define-multibyte-mapper +gbk-to-ucs-table+ ( ;; begin, insert GBK2UCS.TXT here (emacs: C-x i GBK2UCS.TXT) (#x8140 #x4E02) (#x8141 #x4E04) @@ -21806,7 +21806,7 @@ (#xFE4F #xFA29) )) ;; end of *gbk-to-ucs-table* -(define-multibyte-mapper *ucs-to-gbk-table* +(define-multibyte-mapper +ucs-to-gbk-table+ ( ;; begin, insert UCS2GBK.TXT here (emacs: C-x i UCS2GBK.TXT) (#x00A4 #xA1E8) (#x00A7 #xA1EC) diff --git a/src/code/external-formats/enc-cn.lisp b/src/code/external-formats/enc-cn.lisp index 1483b662b..352cb33ae 100644 --- a/src/code/external-formats/enc-cn.lisp +++ b/src/code/external-formats/enc-cn.lisp @@ -12,13 +12,13 @@ (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7f) code - (get-multibyte-mapper *ucs-to-gbk-table* code))) + (get-multibyte-mapper +ucs-to-gbk-table+ code))) (defun gbk-to-ucs (code) (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7f) code - (get-multibyte-mapper *gbk-to-ucs-table* code))) + (get-multibyte-mapper +gbk-to-ucs-table+ code))) (defun mb-len-as-gbk (code) (declare (optimize speed (safety 0)) diff --git a/src/code/external-formats/enc-jpn-tbl.lisp b/src/code/external-formats/enc-jpn-tbl.lisp index cc0d0a7d6..2661a6359 100644 --- a/src/code/external-formats/enc-jpn-tbl.lisp +++ b/src/code/external-formats/enc-jpn-tbl.lisp @@ -1,5 +1,5 @@ (in-package "SB!IMPL") -(define-multibyte-mapper *ucs-to-eucjp-table* +(define-multibyte-mapper +ucs-to-eucjp-table+ ((#xa1 #x8fa2c2) (#xa2 #xa1f1) (#xa3 #xa1f2) @@ -13011,7 +13011,7 @@ (#xff9f #x8edf) (#xffe3 #xa1b1) (#xffe5 #xa1ef))) -(define-multibyte-mapper *eucjp-to-ucs-table* +(define-multibyte-mapper +eucjp-to-ucs-table+ ((#x8ea1 #xff61) (#x8ea2 #xff62) (#x8ea3 #xff63) @@ -26021,7 +26021,7 @@ (#x8fede1 #x9fa2) (#x8fede2 #x9fa3) (#x8fede3 #x9fa5))) -(define-multibyte-mapper *ucs-to-sjis-table* +(define-multibyte-mapper +ucs-to-sjis-table+ ((#xa2 #x8191) (#xa3 #x8192) (#xa5 #x5c) @@ -35303,7 +35303,7 @@ (#xffe3 #x8150) (#xffe4 #xfa55) (#xffe5 #x818f))) -(define-multibyte-mapper *sjis-to-ucs-table* +(define-multibyte-mapper +sjis-to-ucs-table+ ((#xa1 #xff61) (#xa2 #xff62) (#xa3 #xff63) diff --git a/src/code/external-formats/enc-jpn.lisp b/src/code/external-formats/enc-jpn.lisp index 200a88796..cad623434 100644 --- a/src/code/external-formats/enc-jpn.lisp +++ b/src/code/external-formats/enc-jpn.lisp @@ -8,13 +8,13 @@ (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7F) code - (get-multibyte-mapper *ucs-to-eucjp-table* code))) + (get-multibyte-mapper +ucs-to-eucjp-table+ code))) (defun eucjp-to-ucs (code) (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7F) code - (get-multibyte-mapper *eucjp-to-ucs-table* code))) + (get-multibyte-mapper +eucjp-to-ucs-table+ code))) (defun mb-len-as-eucjp (code) (declare (optimize speed (safety 0)) @@ -41,13 +41,13 @@ (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7F) code - (get-multibyte-mapper *ucs-to-sjis-table* code))) + (get-multibyte-mapper +ucs-to-sjis-table+ code))) (defun sjis-to-ucs (code) (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7F) code - (get-multibyte-mapper *sjis-to-ucs-table* code))) + (get-multibyte-mapper +sjis-to-ucs-table+ code))) (defun mb-len-as-sjis (code) (declare (optimize speed (safety 0)) diff --git a/src/code/external-formats/mb-util.lisp b/src/code/external-formats/mb-util.lisp index 5569a9fca..de32c40ea 100644 --- a/src/code/external-formats/mb-util.lisp +++ b/src/code/external-formats/mb-util.lisp @@ -3,7 +3,13 @@ (defmacro define-multibyte-mapper (name list) (let ((list (sort (copy-list list) #'< :key #'car)) (hi (loop for x in list maximize (max (car x) (cadr x))))) - `(defparameter ,name + ;; FIXME: should be defconstant, but genesis is too eager to evaluate + ;; the symbol at cold-load time when it does not yet have a value + ;; [References to global constants are compiled into LOAD-TIME-VALUE, + ;; but we can't execute target code that assigns the constant, + ;; nor know at each use site whether the value expression was able + ;; to be computed and dumped using only facilities of the xc host] + `(define-load-time-global ,name (make-array '(,(length list) 2) :element-type '(integer 0 ,hi) :initial-contents ',list)))) -- 2.11.4.GIT