From a5d4186c571d57bad730d5bac81beafb9c25886d Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 21 Jul 2013 16:51:33 -0600 Subject: [PATCH] fix a places test --- .../racket/benchmarks/places/place-utils.rkt | 25 +++++++++++++++++++ .../racket-test/tests/racket/place.rktl | 8 +++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/benchmarks/places/place-utils.rkt b/pkgs/racket-pkgs/racket-test/tests/racket/benchmarks/places/place-utils.rkt index 288ba74a8b..ec2ee243df 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/benchmarks/places/place-utils.rkt +++ b/pkgs/racket-pkgs/racket-test/tests/racket/benchmarks/places/place-utils.rkt @@ -10,6 +10,7 @@ barrier places-wait place/base + place/splat here-submod time-n) @@ -44,6 +45,30 @@ (define (name ch) body ...))])) +(define-syntax (place/splat stx) + (syntax-case stx () + [(_ (name ch) body ...) + (begin + (define (splat txt fn) + (call-with-output-file fn #:exists 'replace + (lambda (out) + (write txt out)))) + + (define module-path-prefix (make-temporary-file "place-benchmark~a.rkt")) + (define-values (base file-name isdir) (split-path module-path-prefix)) + (define worker-syntax + (with-syntax ([module-name (datum->syntax #'name (string->symbol (path->string (path-replace-suffix file-name ""))))]) + #'(module module-name racket/base + (provide name) + (define (name ch) + body ...)))) + (define module-path (path->string module-path-prefix)) + + (splat (syntax->datum worker-syntax) module-path) + + (define place-syntax #`(dynamic-place '(file #,module-path) (quote name))) + place-syntax)])) + (define-syntax-rule (here-submod id) `(submod ,(resolved-module-path-name (variable-reference->resolved-module-path diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/place.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/place.rktl index 2f69f198dc..99219b6b7b 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/place.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/place.rktl @@ -2,8 +2,8 @@ (Section 'places) (require "benchmarks/places/place-utils.rkt") -(place-wait (place/base (p1 ch) - (printf "Hello from place\n"))) +(place-wait + (place/splat (p1 ch) (printf "Hello from place\n"))) (let () (define-values (in out) (place-channel)) @@ -50,7 +50,7 @@ (test #t equal? us (car r2)) (test #t equal? us2 (cdr r2)))) -(let ([p (place/base (p1 ch) +(let ([p (place/splat (p1 ch) (printf "Hello form place 2\n") (exit 99))]) (test #f place? 1) @@ -79,7 +79,7 @@ (err/rt-test (dynamic-place '(quote some-module) 'tfunc)) -(let ([p (place/base (p1 ch) +(let ([p (place/splat (p1 ch) (printf "Hello form place 2\n") (sync never-evt))]) (place-kill p)