cs: unbreak unsafe-get-place-table

This commit is contained in:
Matthew Flatt 2019-01-11 20:10:43 -07:00
parent 11120977b8
commit a039248b9f

View File

@ -35,9 +35,6 @@
(define (place-local-register-set! i v) (define (place-local-register-set! i v)
(#%vector-set! (place-registers) i v)) (#%vector-set! (place-registers) i v))
(define (place-local-register-cas! i old-v new-v)
(#%vector-cas! (place-registers) i old-v new-v))
(define (place-local-register-init! i v) (define (place-local-register-init! i v)
(place-local-register-set! i v) (place-local-register-set! i v)
(#%vector-set! place-register-inits i v)) (#%vector-set! place-register-inits i v))
@ -53,10 +50,11 @@
(define place-specific-table (unsafe-make-place-local #f)) (define place-specific-table (unsafe-make-place-local #f))
(define (unsafe-get-place-table) (define (unsafe-get-place-table)
(or (unsafe-place-local-ref place-specific-table) (with-interrupts-disabled
(begin (or (unsafe-place-local-ref place-specific-table)
(place-local-register-cas! place-specific-table #f (make-hasheq)) (let ([ht (make-hasheq)])
(unsafe-get-place-table)))) (unsafe-place-local-set! place-specific-table ht)
ht))))
;; ---------------------------------------- ;; ----------------------------------------