about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-11-29 10:34:20 -0800
committerKartik K. Agaram <vc@akkartik.com>2014-11-29 10:34:20 -0800
commit8a7b5db344bb09fffeea73be79677afd2651d4c7 (patch)
tree631436fbd28d6b6399920faa1eadbfcd98d5019f
parent6bf34cf3ec3edb237b521180f5631b923fe0e6b3 (diff)
downloadmu-8a7b5db344bb09fffeea73be79677afd2651d4c7.tar.gz
386
-rw-r--r--mu.arc.t120
1 files changed, 60 insertions, 60 deletions
diff --git a/mu.arc.t b/mu.arc.t
index 700b156b..a4edc044 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -2477,18 +2477,18 @@
       ((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) (3 tagged-value-address deref))
-      ((4 integer) <- get (1 channel-address deref) (first-full offset))
-      ((5 integer) <- get (1 channel-address deref) (first-free offset))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
+      ((5 integer) <- get (1 channel-address deref) (first-full offset))
+      ((6 integer) <- get (1 channel-address deref) (first-free offset))
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "array-len" "cvt0" "cvt1")))
 ;? (= dump-trace* (obj whitelist '("jump")))
 (run 'main)
 ;? (prn canon.memory*)
-(if (or (~is 0 memory*.4)
-        (~is 1 memory*.5))
+(if (or (~is 0 memory*.5)
+        (~is 1 memory*.6))
   (prn "F - 'write' enqueues item to channel"))
 ;? (quit)
 
@@ -2499,21 +2499,21 @@
       ((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) (3 tagged-value-address deref))
-      ((4 tagged-value) (1 channel-address deref) <- read (1 channel-address))
-      ((6 integer-address) <- maybe-coerce (4 tagged-value) (integer-address literal))
-      ((7 integer) <- get (1 channel-address deref) (first-full offset))
-      ((8 integer) <- get (1 channel-address deref) (first-free offset))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
+      ((5 tagged-value) (1 channel-address deref) <- read (1 channel-address))
+      ((7 integer-address) <- maybe-coerce (5 tagged-value) (integer-address literal))
+      ((8 integer) <- get (1 channel-address deref) (first-full offset))
+      ((9 integer) <- get (1 channel-address deref) (first-free offset))
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "array-len" "cvt0" "cvt1")))
 (run 'main)
 ;? (prn int-canon.memory*)
-(if (~is memory*.6 memory*.2)
+(if (~is memory*.7 memory*.2)
   (prn "F - 'read' returns written value"))
-(if (or (~is 1 memory*.7)
-        (~is 1 memory*.8))
+(if (or (~is 1 memory*.8)
+        (~is 1 memory*.9))
   (prn "F - 'read' dequeues item from channel"))
 
 (reset)
@@ -2525,22 +2525,22 @@
       ; write a value
       ((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) (3 tagged-value-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
       ; first-free will now be 1
-      ((4 integer) <- get (1 channel-address deref) (first-free offset))
+      ((5 integer) <- get (1 channel-address deref) (first-free offset))
       ; read one value
       (_ (1 channel-address deref) <- read (1 channel-address))
       ; write a second value; verify that first-free wraps around to 0.
-      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value-address deref))
-      ((5 integer) <- get (1 channel-address deref) (first-free offset))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
+      ((6 integer) <- get (1 channel-address deref) (first-free offset))
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "array-len" "cvt0" "cvt1")))
 (run 'main)
 ;? (prn canon.memory*)
-(if (or (~is 1 memory*.4)
-        (~is 0 memory*.5))
+(if (or (~is 1 memory*.5)
+        (~is 0 memory*.6))
   (prn "F - 'write' can wrap pointer back to start"))
 
 (reset)
@@ -2552,24 +2552,24 @@
       ; write a value
       ((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) (3 tagged-value-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
       ; read one value
       (_ (1 channel-address deref) <- read (1 channel-address))
       ; first-full will now be 1
-      ((4 integer) <- get (1 channel-address deref) (first-full offset))
+      ((5 integer) <- get (1 channel-address deref) (first-full offset))
       ; write a second value
-      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value-address deref))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
       ; read second value; verify that first-full wraps around to 0.
       (_ (1 channel-address deref) <- read (1 channel-address))
-      ((5 integer) <- get (1 channel-address deref) (first-full offset))
+      ((6 integer) <- get (1 channel-address deref) (first-full offset))
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "array-len" "cvt0" "cvt1")))
 (run 'main)
 ;? (prn canon.memory*)
-(if (or (~is 1 memory*.4)
-        (~is 0 memory*.5))
+(if (or (~is 1 memory*.5)
+        (~is 0 memory*.6))
   (prn "F - 'read' can wrap pointer back to start"))
 
 (reset)
@@ -2594,16 +2594,16 @@
       ((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) (3 tagged-value-address deref))
-      ((4 boolean) <- empty? (1 channel-address deref))
-      ((5 boolean) <- full? (1 channel-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
+      ((5 boolean) <- empty? (1 channel-address deref))
+      ((6 boolean) <- full? (1 channel-address deref))
      ])))
 ;? (set dump-trace*)
 (run 'main)
 ;? (prn memory*)
-(if (or (~is nil memory*.4)
-        (~is nil memory*.5))
+(if (or (~is nil memory*.5)
+        (~is nil memory*.6))
   (prn "F - a channel after writing is never empty"))
 
 (reset)
@@ -2613,16 +2613,16 @@
       ((1 channel-address) <- new-channel (1 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) (3 tagged-value-address deref))
-      ((4 boolean) <- empty? (1 channel-address deref))
-      ((5 boolean) <- full? (1 channel-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
+      ((5 boolean) <- empty? (1 channel-address deref))
+      ((6 boolean) <- full? (1 channel-address deref))
      ])))
 ;? (set dump-trace*)
 (run 'main)
 ;? (prn memory*)
-(if (or (~is nil memory*.4)
-        (~is t memory*.5))
+(if (or (~is nil memory*.5)
+        (~is t memory*.6))
   (prn "F - a channel after writing may be full"))
 
 (reset)
@@ -2632,18 +2632,18 @@
       ((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) (3 tagged-value-address deref))
-      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
       (_ (1 channel-address deref) <- read (1 channel-address))
-      ((4 boolean) <- empty? (1 channel-address deref))
-      ((5 boolean) <- full? (1 channel-address deref))
+      ((5 boolean) <- empty? (1 channel-address deref))
+      ((6 boolean) <- full? (1 channel-address deref))
      ])))
 ;? (set dump-trace*)
 (run 'main)
 ;? (prn memory*)
-(if (or (~is nil memory*.4)
-        (~is nil memory*.5))
+(if (or (~is nil memory*.5)
+        (~is nil memory*.6))
   (prn "F - a channel after reading is never full"))
 
 (reset)
@@ -2653,17 +2653,17 @@
       ((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) (3 tagged-value-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
       (_ (1 channel-address deref) <- read (1 channel-address))
-      ((4 boolean) <- empty? (1 channel-address deref))
-      ((5 boolean) <- full? (1 channel-address deref))
+      ((5 boolean) <- empty? (1 channel-address deref))
+      ((6 boolean) <- full? (1 channel-address deref))
      ])))
 ;? (set dump-trace*)
 (run 'main)
 ;? (prn memory*)
-(if (or (~is t memory*.4)
-        (~is nil memory*.5))
+(if (or (~is t memory*.5)
+        (~is nil memory*.6))
   (prn "F - a channel after reading may be empty"))
 
 ; The key property of channels; writing to a full channel blocks the current
@@ -2699,10 +2699,10 @@
       ((1 channel-address) <- new-channel (1 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) (3 tagged-value-address deref))
+      ((3 tagged-value) <- save-type (2 integer-address))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
       ; channel has capacity 1, but receives a second write
-      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value-address deref))
+      ((1 channel-address deref) <- write (1 channel-address) (3 tagged-value))
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj whitelist '("run" "schedule" "addr")))
@@ -2727,15 +2727,15 @@
       ((default-scope scope-address) <- new (scope literal) (30 literal))
       ((chan channel-address) <- new-channel (3 literal))
       (fork (f2 fn) (chan channel-address))
-      ((1 tagged-value global) <- read (chan channel-address))
+      ((1 tagged-value global) <- read (chan channel-address))  ; output
      ])
     (def f2 [
       ((default-scope scope-address) <- new (scope literal) (30 literal))
       ((n integer-address) <- new (integer literal))
       ((n integer-address deref) <- copy (24 literal))
       ((ochan channel-address) <- arg)
-      ((x tagged-value-address) <- new-tagged-value (integer-address literal) (n integer-address))
-      ((ochan channel-address deref) <- write (ochan channel-address) (x tagged-value-address deref))
+      ((x tagged-value) <- save-type (n integer-address))
+      ((ochan channel-address deref) <- write (ochan channel-address) (x tagged-value))
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj whitelist '("schedule" "run" "addr")))