make cptypes caches thread-local

original commit: 4627507cf081e2ea85b43fe8ca02404396ede253
This commit is contained in:
Matthew Flatt 2020-02-09 08:09:05 -07:00
parent 34dc3f4371
commit 115f08603b

View File

@ -72,7 +72,7 @@ Notes:
(definitions (definitions
(define prelex-counter (define prelex-counter
(let () (let ()
(define count 0) (define-threaded count 0)
(lambda (x) (lambda (x)
(or (prelex-operand x) (or (prelex-operand x)
(let ([c count]) (let ([c count])
@ -601,9 +601,11 @@ Notes:
[else [else
'ptr]))))) 'ptr])))))
(define primref->result-predicate/cache (make-hashtable equal-hash equal?)) (define-threaded primref->result-predicate/cache #f)
(define (primref->result-predicate pr) (define (primref->result-predicate pr)
(unless primref->result-predicate/cache
(set! primref->result-predicate/cache (make-hashtable equal-hash equal?)))
(let ([key (primref-name pr)]) (let ([key (primref-name pr)])
(if (hashtable-contains? primref->result-predicate/cache key) (if (hashtable-contains? primref->result-predicate/cache key)
(hashtable-ref primref->result-predicate/cache key #f) (hashtable-ref primref->result-predicate/cache key #f)
@ -655,9 +657,11 @@ Notes:
[else [else
'bottom])]))) 'bottom])])))
(define primref->argument-predicate/cache (make-hashtable equal-hash equal?)) (define-threaded primref->argument-predicate/cache #f)
(define (primref->argument-predicate pr pos extend?) (define (primref->argument-predicate pr pos extend?)
(unless primref->argument-predicate/cache
(set! primref->argument-predicate/cache (make-hashtable equal-hash equal?)))
(let ([key (list (primref-name pr) pos extend?)]) (let ([key (list (primref-name pr) pos extend?)])
(if (hashtable-contains? primref->argument-predicate/cache key) (if (hashtable-contains? primref->argument-predicate/cache key)
(hashtable-ref primref->argument-predicate/cache key #f) (hashtable-ref primref->argument-predicate/cache key #f)