Dealing with cyclic hashes

original commit: 4088448317
This commit is contained in:
Jay McCarthy 2010-05-27 11:59:55 -06:00
parent cac230bc93
commit 2fd3353508

View File

@ -228,6 +228,11 @@
(traverse-stx expr visit)]
[(wrapped? expr)
(traverse-wrapped expr visit)]
[(hash? expr)
(when (visit expr)
(for ([(k v) (in-hash expr)])
(traverse-data k visit)
(traverse-data v visit)))]
[else
(void)]))
@ -987,6 +992,8 @@
(for ([v (in-vector expr)])
(out-data v out))]
[(hash? expr)
(out-shared expr out
(lambda ()
(out-byte CPT_HASH_TABLE out)
(out-number (cond
[(hash-eqv? expr) 2]
@ -996,7 +1003,7 @@
(out-number (hash-count expr) out)
(for ([(k v) (in-hash expr)])
(out-data k out)
(out-data v out))]
(out-data v out))))]
[(svector? expr)
(let* ([vec (svector-vec expr)]
[len (vector-length vec)])