From 4cf7eefd47bf7b3a6b1558e916f3a76be42d5a01 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Sun, 29 Jan 2017 18:06:02 -0800 Subject: [PATCH] Use boot inits in char.scm. --- src/runtime/char.scm | 50 ++++++++++++++++++----------------------- src/runtime/runtime.pkg | 3 +-- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/src/runtime/char.scm b/src/runtime/char.scm index 499eafb08..7a4d51530 100644 --- a/src/runtime/char.scm +++ b/src/runtime/char.scm @@ -144,35 +144,29 @@ USA. (define downcase-table) (define upcase-table) - -(define (initialize-case-conversions!) - (set! downcase-table (make-bytevector #x100)) - (set! upcase-table (make-bytevector #x100)) - (do ((i 0 (fix:+ i 1))) - ((fix:= i #x100)) - (bytevector-u8-set! downcase-table i i) - (bytevector-u8-set! upcase-table i i)) - (let ((case-range - (lambda (uc-low uc-high lc-low) - (do ((i uc-low (fix:+ i 1)) - (j lc-low (fix:+ j 1))) - ((fix:> i uc-high)) - (bytevector-u8-set! downcase-table i j) - (bytevector-u8-set! upcase-table j i))))) - (case-range 65 90 97) - (case-range 192 214 224) - (case-range 216 222 248))) +(add-boot-init! + (lambda () + (set! downcase-table (make-bytevector #x100)) + (set! upcase-table (make-bytevector #x100)) + (do ((i 0 (fix:+ i 1))) + ((fix:= i #x100)) + (bytevector-u8-set! downcase-table i i) + (bytevector-u8-set! upcase-table i i)) + (let ((case-range + (lambda (uc-low uc-high lc-low) + (do ((i uc-low (fix:+ i 1)) + (j lc-low (fix:+ j 1))) + ((fix:> i uc-high)) + (bytevector-u8-set! downcase-table i j) + (bytevector-u8-set! upcase-table j i))))) + (case-range 65 90 97) + (case-range 192 214 224) + (case-range 216 222 248)))) -(define 0-code) -(define upper-a-code) -(define lower-a-code) - -(define (initialize-package!) - (set! 0-code (char->integer #\0)) - ;; Next two codes are offset by 10 to speed up CHAR->DIGIT. - (set! upper-a-code (fix:- (char->integer #\A) 10)) - (set! lower-a-code (fix:- (char->integer #\a) 10)) - (initialize-case-conversions!)) +(define-deferred 0-code (char->integer #\0)) +;; Next two codes are offset by 10 to speed up CHAR->DIGIT. +(define-deferred upper-a-code (fix:- (char->integer #\A) 10)) +(define-deferred lower-a-code (fix:- (char->integer #\a) 10)) (define (radix? object) (and (index-fixnum? object) diff --git a/src/runtime/runtime.pkg b/src/runtime/runtime.pkg index 80032d950..9a2e6567b 100644 --- a/src/runtime/runtime.pkg +++ b/src/runtime/runtime.pkg @@ -1394,8 +1394,7 @@ USA. unicode-char? unicode-code-point? unicode-scalar-value->char - unicode-scalar-value?) - (initialization (initialize-package!))) + unicode-scalar-value?)) (define-package (runtime character-set) (files "chrset") -- 2.25.1