From 115f08603b952a501f05ed2088be9f1f41df73e5 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 9 Feb 2020 08:09:05 -0700 Subject: [PATCH] make cptypes caches thread-local original commit: 4627507cf081e2ea85b43fe8ca02404396ede253 --- s/cptypes.ss | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/s/cptypes.ss b/s/cptypes.ss index 8001bf1519..dd304d6e5b 100644 --- a/s/cptypes.ss +++ b/s/cptypes.ss @@ -72,7 +72,7 @@ Notes: (definitions (define prelex-counter (let () - (define count 0) + (define-threaded count 0) (lambda (x) (or (prelex-operand x) (let ([c count]) @@ -601,9 +601,11 @@ Notes: [else 'ptr]))))) - (define primref->result-predicate/cache (make-hashtable equal-hash equal?)) + (define-threaded primref->result-predicate/cache #f) (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)]) (if (hashtable-contains? primref->result-predicate/cache key) (hashtable-ref primref->result-predicate/cache key #f) @@ -655,9 +657,11 @@ Notes: [else '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?) + (unless primref->argument-predicate/cache + (set! primref->argument-predicate/cache (make-hashtable equal-hash equal?))) (let ([key (list (primref-name pr) pos extend?)]) (if (hashtable-contains? primref->argument-predicate/cache key) (hashtable-ref primref->argument-predicate/cache key #f)