about summary refs log tree commit diff stats
path: root/mu.arc.t
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-11-04 18:35:13 -0800
committerKartik K. Agaram <vc@akkartik.com>2014-11-04 18:35:13 -0800
commite7d75e0bfa9015d18b8babc4ec9c5c1937658d69 (patch)
tree88db5ef8f20c544e73d94c35a5f993b6f87bd170 /mu.arc.t
parentebdb363695503e32d9003319ca33dde4b691e24f (diff)
downloadmu-e7d75e0bfa9015d18b8babc4ec9c5c1937658d69.tar.gz
228 - rudimentary read from channel
Diffstat (limited to 'mu.arc.t')
-rw-r--r--mu.arc.t23
1 files changed, 22 insertions, 1 deletions
diff --git a/mu.arc.t b/mu.arc.t
index 08fb19b9..a6d79583 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -1724,7 +1724,7 @@
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
-      ((3 tagged-value-address) <- new-tagged-value (integer literal) (2 integer-address))
+      ((3 tagged-value-address) <- new-tagged-value (integer-address literal) (2 integer-address))
       ((1 channel-address deref) <- write (1 channel-address deref) (3 tagged-value-address deref)))))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "array-len" "cvt0" "cvt1")))
@@ -1734,4 +1734,25 @@
         (~is 1 (memory* (+ 1 memory*.1))))
   (prn "F - 'write' enqueues item to channel"))
 
+(reset)
+(new-trace "channel-read")
+(add-fns
+  '((main
+      ((1 channel-address) <- new-channel (3 literal))
+      ((2 integer-address) <- new (integer literal))
+      ((2 integer-address deref) <- copy (34 literal))
+      ((3 tagged-value-address) <- new-tagged-value (integer-address literal) (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address deref) (3 tagged-value-address deref))
+      ((4 tagged-value) (1 channel-address deref) <- read (1 channel-address deref))
+      ((5 integer-address) <- maybe-coerce (4 tagged-value) (integer-address literal)))))
+;? (set dump-trace*)
+;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "array-len" "cvt0" "cvt1")))
+(run 'main)
+;? (prn int-canon.memory*)
+(if (~is memory*.5 memory*.2)
+  (prn "F - 'read' returns written value"))
+(if (or (~is 1 (memory* memory*.1))
+        (~is 1 (memory* (+ 1 memory*.1))))
+  (prn "F - 'read' dequeues item from channel"))
+
 (reset)  ; end file with this to persist the trace for the final test