cs: tweak implementation of keyword intern table

This commit is contained in:
Matthew Flatt 2020-11-22 16:08:05 -07:00
parent 3b1f457375
commit 60e9245390
4 changed files with 7 additions and 8 deletions

View File

@ -594,7 +594,7 @@
(define (read-byte/no-eof i)
(define pos (mcdr i))
(unless (pos . < . (bytes-length (mcar i)))
(unless (pos . fx< . (bytes-length (mcar i)))
(read-error "truncated stream"))
(set-mcdr! i (fx+ pos 1))
(bytes-ref (mcar i) pos))

View File

@ -4,17 +4,16 @@
(sealed #t)
(nongenerative #{keyword dhghafpy3v03qbye1a9lwf-0}))
(define keywords (make-weak-eq-hashtable))
(define keywords (make-ephemeron-eq-hashtable))
(define/who (string->keyword s)
(check who string? s)
(let ([sym (string->symbol s)])
(with-global-lock
(let ([e (eq-hashtable-ref keywords sym #f)])
(or (and e
(ephemeron-value e))
(let ([kw (eq-hashtable-ref keywords sym #f)])
(or kw
(let ([kw (make-keyword sym)])
(eq-hashtable-set! keywords sym (make-ephemeron sym kw))
(eq-hashtable-set! keywords sym kw)
kw))))))
(define/who (keyword->string kw)

View File

@ -25307,7 +25307,7 @@
(lambda (i_0)
(let ((pos_0 (unsafe-mcdr i_0)))
(begin
(if (< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
(if (fx< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
(void)
(read-error "truncated stream"))
(unsafe-set-mcdr! i_0 (fx+ pos_0 1))

View File

@ -48702,7 +48702,7 @@
(lambda (i_0)
(let ((pos_0 (unsafe-mcdr i_0)))
(begin
(if (< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
(if (fx< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
(void)
(read-error "truncated stream"))
(unsafe-set-mcdr! i_0 (fx+ pos_0 1))