From 467c46360cd86ad248322b0591f35fe1f2342a11 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Wed, 22 Aug 2012 11:07:39 -0400 Subject: [PATCH] Use module registry trick to slightly speed up TR tests. original commit: 26a57f64202a9e4040fe495cf5d6a2ce3d79531f --- collects/tests/typed-racket/places.rkt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/collects/tests/typed-racket/places.rkt b/collects/tests/typed-racket/places.rkt index 8eaeadbd..3eb6d853 100644 --- a/collects/tests/typed-racket/places.rkt +++ b/collects/tests/typed-racket/places.rkt @@ -28,12 +28,15 @@ (exn:fail m (current-continuation-marks))] [(s-exn m) (exn m (current-continuation-marks))])) -(define (dr p) + +(define (dr p [reg-box #f]) (parameterize ([current-namespace (make-base-empty-namespace)]) - (dynamic-require `(file ,(if (string? p) p (path->string p))) #f))) + (dynamic-require `(file ,(if (string? p) p (path->string p))) #f) + (and reg-box (set-box! reg-box (namespace-module-registry (current-namespace)))))) (define (start-worker get-ch name) (open-place ch + (define reg (box #f)) (let loop () (match (place-channel-get get-ch) [(vector 'log name dir res) @@ -41,7 +44,7 @@ (λ (e) (place-channel-put res (string-append "EXCEPTION: " (exn-message e))))]) - (define lg (generate-log/place name dir)) + (define lg (generate-log/place name dir reg)) (place-channel-put res lg)) (loop)] [(vector p* res error?) @@ -54,13 +57,13 @@ [error-display-handler (if error? void (error-display-handler))]) (with-handlers ([exn? (λ (e) (place-channel-put res (serialize-exn e)))]) - (dr p) + (dr p reg) (place-channel-put res #t))) (loop)])))) (define comp (compile-zos #f #:module? #t)) -(define (generate-log/place name dir) +(define (generate-log/place name dir [reg-box #f]) ;; some tests require other tests, so some fiddling is required (define f (build-path dir name)) (with-output-to-string @@ -72,6 +75,7 @@ (parameterize ([current-namespace (make-base-empty-namespace)] [current-load-relative-directory dir]) - (dynamic-require f #f)) + (dynamic-require f #f) + (and reg-box (set-box! reg-box (namespace-module-registry (current-namespace))))) ;; clean up compiled files in prevision of the next testing run (delete-directory/files (build-path dir "compiled")))))