cs: tweak implementation of keyword intern table
This commit is contained in:
parent
3b1f457375
commit
60e9245390
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue
Block a user