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 (read-byte/no-eof i)
|
||||||
(define pos (mcdr i))
|
(define pos (mcdr i))
|
||||||
(unless (pos . < . (bytes-length (mcar i)))
|
(unless (pos . fx< . (bytes-length (mcar i)))
|
||||||
(read-error "truncated stream"))
|
(read-error "truncated stream"))
|
||||||
(set-mcdr! i (fx+ pos 1))
|
(set-mcdr! i (fx+ pos 1))
|
||||||
(bytes-ref (mcar i) pos))
|
(bytes-ref (mcar i) pos))
|
||||||
|
|
|
@ -4,17 +4,16 @@
|
||||||
(sealed #t)
|
(sealed #t)
|
||||||
(nongenerative #{keyword dhghafpy3v03qbye1a9lwf-0}))
|
(nongenerative #{keyword dhghafpy3v03qbye1a9lwf-0}))
|
||||||
|
|
||||||
(define keywords (make-weak-eq-hashtable))
|
(define keywords (make-ephemeron-eq-hashtable))
|
||||||
|
|
||||||
(define/who (string->keyword s)
|
(define/who (string->keyword s)
|
||||||
(check who string? s)
|
(check who string? s)
|
||||||
(let ([sym (string->symbol s)])
|
(let ([sym (string->symbol s)])
|
||||||
(with-global-lock
|
(with-global-lock
|
||||||
(let ([e (eq-hashtable-ref keywords sym #f)])
|
(let ([kw (eq-hashtable-ref keywords sym #f)])
|
||||||
(or (and e
|
(or kw
|
||||||
(ephemeron-value e))
|
|
||||||
(let ([kw (make-keyword sym)])
|
(let ([kw (make-keyword sym)])
|
||||||
(eq-hashtable-set! keywords sym (make-ephemeron sym kw))
|
(eq-hashtable-set! keywords sym kw)
|
||||||
kw))))))
|
kw))))))
|
||||||
|
|
||||||
(define/who (keyword->string kw)
|
(define/who (keyword->string kw)
|
||||||
|
|
|
@ -25307,7 +25307,7 @@
|
||||||
(lambda (i_0)
|
(lambda (i_0)
|
||||||
(let ((pos_0 (unsafe-mcdr i_0)))
|
(let ((pos_0 (unsafe-mcdr i_0)))
|
||||||
(begin
|
(begin
|
||||||
(if (< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
|
(if (fx< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
|
||||||
(void)
|
(void)
|
||||||
(read-error "truncated stream"))
|
(read-error "truncated stream"))
|
||||||
(unsafe-set-mcdr! i_0 (fx+ pos_0 1))
|
(unsafe-set-mcdr! i_0 (fx+ pos_0 1))
|
||||||
|
|
|
@ -48702,7 +48702,7 @@
|
||||||
(lambda (i_0)
|
(lambda (i_0)
|
||||||
(let ((pos_0 (unsafe-mcdr i_0)))
|
(let ((pos_0 (unsafe-mcdr i_0)))
|
||||||
(begin
|
(begin
|
||||||
(if (< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
|
(if (fx< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
|
||||||
(void)
|
(void)
|
||||||
(read-error "truncated stream"))
|
(read-error "truncated stream"))
|
||||||
(unsafe-set-mcdr! i_0 (fx+ pos_0 1))
|
(unsafe-set-mcdr! i_0 (fx+ pos_0 1))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user