Address #53 - marshalling fiber strangeness

The unmarshaller was not tracking fibers in references.
This commit is contained in:
Calvin Rose
2019-02-21 19:11:28 -05:00
parent 8c67bf82f6
commit 1147482e62
3 changed files with 19 additions and 0 deletions
+4
View File
@@ -175,6 +175,10 @@
(testmarsh (fiber/new (fn [] (yield 1) 2)) "marshal simple fiber 1")
(testmarsh (fiber/new (fn [&] (yield 1) 2)) "marshal simple fiber 2")
(def strct {:a @[nil]})
(put (strct :a) 0 strct)
(testmarsh strct "cyclic struct")
# Large functions
(def manydefs (seq [i :range [0 300]] (tuple 'def (gensym) (string "value_" i))))
(array/push manydefs (tuple * 10000 3 5 7 9))
+12
View File
@@ -43,5 +43,17 @@
(assert (deep= (range 5 10) @[5 6 7 8 9]) "range 2 arguments")
(assert (deep= (range 5 10 2) @[5 7 9]) "range 3 arguments")
# More marshalling code
(defn check-image
"Run a marshaling test using the make-image and load-image functions."
[x]
(def src (make-image x))
(load-image src))
(check-image (fn [] (fn [] 1)))
(check-image (fiber/new (fn [] (fn [] 1))))
(check-image (fiber/new (fn [] (fiber/new (fn [] 1)))))
(end-suite)