~ chicken-core (chicken-5) cae28977b11c3cc08af992b82b28fa113660fe30
commit cae28977b11c3cc08af992b82b28fa113660fe30 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Mar 15 11:02:57 2011 -0400 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Mar 15 11:02:57 2011 -0400 reduced testcase in trav2 and removed benchmark diff --git a/distribution/manifest b/distribution/manifest index 181792be..abdc28fe 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -97,7 +97,6 @@ support.scm tcp.scm tests/thread-list.scm tests/gobble.scm -tests/trav2.scm tests/test-optional.scm tests/arithmetic-test.scm tests/arithmetic-test.32.expected diff --git a/tests/runtests.sh b/tests/runtests.sh index c8827f5e..a0c3e5f9 100644 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -127,8 +127,6 @@ $compile syntax-tests.scm echo "======================================== syntax tests (2, compiled) ..." $compile syntax-tests-2.scm ./a.out -$compile trav2.scm -./a.out echo "======================================== meta-syntax tests ..." $interpret -bnq meta-syntax-test.scm -e '(import foo)' -e "(assert (equal? '((1)) (bar 1 2)))" -e "(assert (equal? '(list 1 2 3) (listify)))" diff --git a/tests/syntax-tests.scm b/tests/syntax-tests.scm index 3d151ee2..6937a3ee 100644 --- a/tests/syntax-tests.scm +++ b/tests/syntax-tests.scm @@ -892,3 +892,12 @@ (define-syntax foo (syntax-rules () ((_ x) (begin (define x 1))))) (foo a) (t 1 a) + + +;; ,@ in tail pos with circular object - found in trav2 benchmark and +;; reported by syn: + +(let ((a '(1))) + (set-cdr! a a) + `(1 ,@a)) + diff --git a/tests/trav2.scm b/tests/trav2.scm deleted file mode 100644 index f3e309f8..00000000 --- a/tests/trav2.scm +++ /dev/null @@ -1,145 +0,0 @@ -;;; TRAV2 -- Benchmark which creates and traverses a tree structure. - -(define (make-node) - (vector 'node '() '() (snb) #f #f #f #f #f #f #f)) - -(define (node-parents node) (vector-ref node 1)) -(define (node-sons node) (vector-ref node 2)) -(define (node-sn node) (vector-ref node 3)) -(define (node-entry1 node) (vector-ref node 4)) -(define (node-entry2 node) (vector-ref node 5)) -(define (node-entry3 node) (vector-ref node 6)) -(define (node-entry4 node) (vector-ref node 7)) -(define (node-entry5 node) (vector-ref node 8)) -(define (node-entry6 node) (vector-ref node 9)) -(define (node-mark node) (vector-ref node 10)) - -(define (node-parents-set! node v) (vector-set! node 1 v)) -(define (node-sons-set! node v) (vector-set! node 2 v)) -(define (node-sn-set! node v) (vector-set! node 3 v)) -(define (node-entry1-set! node v) (vector-set! node 4 v)) -(define (node-entry2-set! node v) (vector-set! node 5 v)) -(define (node-entry3-set! node v) (vector-set! node 6 v)) -(define (node-entry4-set! node v) (vector-set! node 7 v)) -(define (node-entry5-set! node v) (vector-set! node 8 v)) -(define (node-entry6-set! node v) (vector-set! node 9 v)) -(define (node-mark-set! node v) (vector-set! node 10 v)) - -(define *sn* 0) -(define *rand* 21) -(define *count* 0) -(define *marker* #f) -(define *root* '()) - -(define (snb) - (set! *sn* (+ 1 *sn*)) - *sn*) - -(define (seed) - (set! *rand* 21) - *rand*) - -(define (traverse-random) - (set! *rand* (remainder (* *rand* 17) 251)) - *rand*) - -(define (traverse-remove n q) - (cond ((eq? (cdr (car q)) (car q)) - (let ((x (caar q))) (set-car! q '()) x)) - ((= n 0) - (let ((x (caar q))) - (do ((p (car q) (cdr p))) - ((eq? (cdr p) (car q)) - (set-cdr! p (cdr (car q))) - (set-car! q p))) - x)) - (else (do ((n n (- n 1)) - (q (car q) (cdr q)) - (p (cdr (car q)) (cdr p))) - ((= n 0) (let ((x (car q))) (set-cdr! q p) x)))))) - -(define (traverse-select n q) - (do ((n n (- n 1)) - (q (car q) (cdr q))) - ((= n 0) (car q)))) - -(define (add a q) - (cond ((null? q) - `(,(let ((x `(,a))) - (set-cdr! x x) x))) - ((null? (car q)) - (let ((x `(,a))) - (set-cdr! x x) - (set-car! q x) - q)) - ; the CL version had a useless set-car! in the next line (wc) - (else - ;; this caused an endless loop in ##sys#append, due to a failing - ;; quasiquote-expansion simplification: - (set-cdr! (car q) `(,a ,@(cdr (car q)))) - q))) - -(define (create-structure n) - (let ((a `(,(make-node)))) - (do ((m (- n 1) (- m 1)) - (p a)) - ((= m 0) - (set! a `(,(begin (set-cdr! p a) p))) - (do ((unused a) - (used (add (traverse-remove 0 a) '())) - (x '()) - (y '())) - ((null? (car unused)) - (find-root (traverse-select 0 used) n)) - (set! x (traverse-remove (remainder (traverse-random) n) unused)) - (set! y (traverse-select (remainder (traverse-random) n) used)) - (add x used) - (node-sons-set! y `(,x ,@(node-sons y))) - (node-parents-set! x `(,y ,@(node-parents x))) )) - (set! a (cons (make-node) a))))) - -(define (find-root node n) - (do ((n n (- n 1))) - ((or (= n 0) (null? (node-parents node))) - node) - (set! node (car (node-parents node))))) - -(define (travers node mark) - (cond ((eq? (node-mark node) mark) #f) - (else (node-mark-set! node mark) - (set! *count* (+ 1 *count*)) - (node-entry1-set! node (not (node-entry1 node))) - (node-entry2-set! node (not (node-entry2 node))) - (node-entry3-set! node (not (node-entry3 node))) - (node-entry4-set! node (not (node-entry4 node))) - (node-entry5-set! node (not (node-entry5 node))) - (node-entry6-set! node (not (node-entry6 node))) - (do ((sons (node-sons node) (cdr sons))) - ((null? sons) #f) - (travers (car sons) mark))))) - -(define (traverse root) - (let ((*count* 0)) - (travers root (begin (set! *marker* (not *marker*)) *marker*)) - *count*)) - -(define (init-traverse) ; Changed from defmacro to defun \bs - (set! *root* (create-structure 100)) - #f) - -(define (run-traverse) ; Changed from defmacro to defun \bs - (do ((i 50 (- i 1))) - ((= i 0)) - (traverse *root*) - (traverse *root*) - (traverse *root*) - (traverse *root*) - (traverse *root*))) - -;;; to initialize, call: (init-traverse) -;;; to run traverse, call: (run-traverse) - -(print "init ...") -(init-traverse) -(print "run ...") -(run-traverse)Trap