about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--blocking.arc.t2
-rw-r--r--buffered-stdin.mu2
-rw-r--r--channel.mu4
-rw-r--r--chessboard.arc.t30
-rw-r--r--chessboard.mu6
-rw-r--r--mu.arc.t76
-rw-r--r--stdin.mu2
7 files changed, 46 insertions, 76 deletions
diff --git a/blocking.arc.t b/blocking.arc.t
index 3cffb462..e7535506 100644
--- a/blocking.arc.t
+++ b/blocking.arc.t
@@ -5,7 +5,7 @@
 (add-code
   '((function reader [
       (default-space:space-address <- new space:literal 30:literal/capacity)
-      (x:tagged-value 1:channel-address/space:global/nochange <- read 1:channel-address/space:global)
+      (x:tagged-value 1:channel-address/space:global <- read 1:channel-address/space:global)
      ])
     (function main [
       (default-space:space-address <- new space:literal 30:literal/capacity)
diff --git a/buffered-stdin.mu b/buffered-stdin.mu
index 2e437b4e..3f4030b9 100644
--- a/buffered-stdin.mu
+++ b/buffered-stdin.mu
@@ -15,7 +15,7 @@
     (s:string-address <- new "? ")
     (print-string nil:literal/terminal s:string-address)
     { begin
-      (x:tagged-value buffered-stdin:channel-address/deref/nochange <- read buffered-stdin:channel-address)
+      (x:tagged-value buffered-stdin:channel-address/deref <- read buffered-stdin:channel-address)
       (c:character <- maybe-coerce x:tagged-value character:literal)
 ;?       (print-primitive-to-host (("AAA " literal))) ;? 1
 ;?       (print-primitive-to-host c:character) ;? 1
diff --git a/channel.mu b/channel.mu
index 0e23db46..88055398 100644
--- a/channel.mu
+++ b/channel.mu
@@ -15,7 +15,7 @@
     ; channels take
     (n2:integer <- copy n:integer)
     (n3:tagged-value-address <- init-tagged-value integer:literal n2:integer)
-    (chan:channel-address/deref/nochange <- write chan:channel-address n3:tagged-value-address/deref)
+    (chan:channel-address/deref <- write chan:channel-address n3:tagged-value-address/deref)
     (n:integer <- add n:integer 1:literal)
     (loop)
   }
@@ -27,7 +27,7 @@
   (chan:channel-address <- next-input)
   { begin
     ; read a tagged value from the channel
-    (x:tagged-value chan:channel-address/deref/nochange <- read chan:channel-address)
+    (x:tagged-value chan:channel-address/deref <- read chan:channel-address)
     ; unbox the tagged value into an integer
     (n2:integer <- maybe-coerce x:tagged-value integer:literal)
     ; other threads might get between these prints
diff --git a/chessboard.arc.t b/chessboard.arc.t
index 1f93e905..78f9531a 100644
--- a/chessboard.arc.t
+++ b/chessboard.arc.t
@@ -10,22 +10,22 @@
       (r:integer/routine <- fork read-move:fn nil:literal/globals 2000:literal/limit stdin:channel-address)
       (c:character <- copy ((#\a literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (c:character <- copy ((#\2 literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (c:character <- copy ((#\- literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (c:character <- copy ((#\a literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (c:character <- copy ((#\4 literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (c:character <- copy ((#\newline literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (sleep until-routine-done:literal r:integer/routine)
      ])))
 ;? (set dump-trace*)
@@ -59,7 +59,7 @@
     (default-space:space-address <- new space:literal 30:literal/capacity)
     (c:character <- copy ((#\a literal)))
     (x:tagged-value <- save-type c:character)
-    (1:channel-address/raw/deref/nochange <- write 1:channel-address/raw x:tagged-value))
+    (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value))
   (wipe completed-routines*)
   ; check that read-move consumes it and then goes to sleep
   (enq read-move-routine running-routines*)
@@ -74,16 +74,16 @@
     (default-space:space-address <- new space:literal 30:literal/capacity)
     (c:character <- copy ((#\2 literal)))
     (x:tagged-value <- save-type c:character)
-    (1:channel-address/raw/deref/nochange <- write 1:channel-address/raw x:tagged-value)
+    (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
     (c:character <- copy ((#\- literal)))
     (x:tagged-value <- save-type c:character)
-    (1:channel-address/raw/deref/nochange <- write 1:channel-address/raw x:tagged-value)
+    (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
     (c:character <- copy ((#\a literal)))
     (x:tagged-value <- save-type c:character)
-    (1:channel-address/raw/deref/nochange <- write 1:channel-address/raw x:tagged-value)
+    (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value)
     (c:character <- copy ((#\4 literal)))
     (x:tagged-value <- save-type c:character)
-    (1:channel-address/raw/deref/nochange <- write 1:channel-address/raw x:tagged-value))
+    (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value))
   ; check that read-move consumes them and then goes to sleep
   (when (ran-to-completion 'read-move)
     (prn "F - chessboard waits after each subsequent letter of move until the last"))
@@ -96,7 +96,7 @@
     (default-space:space-address <- new space:literal 30:literal/capacity)
     (c:character <- copy ((#\newline literal)))
     (x:tagged-value <- save-type c:character)
-    (1:channel-address/raw/deref/nochange <- write 1:channel-address/raw x:tagged-value))
+    (1:channel-address/raw/deref <- write 1:channel-address/raw x:tagged-value))
   ; check that read-move consumes it and -- this time -- returns
   (when (~ran-to-completion 'read-move)
     (prn "F - 'read-move' completes after final letter of move"))
@@ -113,7 +113,7 @@
       (r:integer/routine <- fork-helper read-move:fn nil:literal/globals 2000:literal/limit stdin:channel-address dummy:terminal-address)
       (c:character <- copy ((#\q literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (sleep until-routine-done:literal r:integer/routine)
      ])))
 (run 'main)
@@ -131,7 +131,7 @@
       (r:integer/routine <- fork-helper read-file:fn nil:literal/globals 2000:literal/limit stdin:channel-address dummy:terminal-address)
       (c:character <- copy ((#\i literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (sleep until-routine-done:literal r:integer/routine)
      ])))
 ;? (= dump-trace* (obj whitelist '("schedule")))
@@ -154,7 +154,7 @@
       (r:integer/routine <- fork-helper read-rank:fn nil:literal/globals 2000:literal/limit stdin:channel-address dummy:terminal-address)
       (c:character <- copy ((#\9 literal)))
       (x:tagged-value <- save-type c:character)
-      (stdin:channel-address/deref/nochange <- write stdin:channel-address x:tagged-value)
+      (stdin:channel-address/deref <- write stdin:channel-address x:tagged-value)
       (sleep until-routine-done:literal r:integer/routine)
      ])))
 (run 'main)
diff --git a/chessboard.mu b/chessboard.mu
index 8177a403..b26401ab 100644
--- a/chessboard.mu
+++ b/chessboard.mu
@@ -127,7 +127,7 @@
 (function read-file [
   (default-space:space-address <- new space:literal 30:literal)
   (stdin:channel-address <- next-input)
-  (x:tagged-value stdin:channel-address/deref/nochange <- read stdin:channel-address)
+  (x:tagged-value stdin:channel-address/deref <- read stdin:channel-address)
 ;?   (print-primitive-to-host x:tagged-value) ;? 1
 ;?   (print-primitive-to-host (("\n" literal))) ;? 1
   (a:character <- copy ((#\a literal)))
@@ -154,7 +154,7 @@
 (function read-rank [
   (default-space:space-address <- new space:literal 30:literal)
   (stdin:channel-address <- next-input)
-  (x:tagged-value stdin:channel-address/deref/nochange <- read stdin:channel-address)
+  (x:tagged-value stdin:channel-address/deref <- read stdin:channel-address)
   (c:character <- maybe-coerce x:tagged-value character:literal)
 ;?   (print-primitive-to-host (("BBB " literal))) ;? 1
 ;?   (print-primitive-to-host c:character) ;? 1
@@ -180,7 +180,7 @@
 (function expect-stdin [
   (default-space:space-address <- new space:literal 30:literal)
   (stdin:channel-address <- next-input)
-  (x:tagged-value stdin:channel-address/deref/nochange <- read stdin:channel-address)
+  (x:tagged-value stdin:channel-address/deref <- read stdin:channel-address)
   (c:character <- maybe-coerce x:tagged-value character:literal)
   (expected:character <- next-input)
   (match?:boolean <- equal c:character expected:character)
diff --git a/mu.arc.t b/mu.arc.t
index f6ba0534..9c321af6 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -1321,7 +1321,6 @@
                          4 1  5 3  6 4))
   (prn "F - 'reply' permits a function to return multiple values at once"))
 
-; 'prepare-reply' is useful for doing cleanup before exiting a function
 (reset)
 (new-trace "new-fn-prepare-reply")
 (add-code
@@ -1345,35 +1344,6 @@
                          4 1  5 3  6 4))
   (prn "F - without args, 'reply' returns values from previous 'prepare-reply'."))
 
-; When you have arguments that are both read from and written to, include them
-; redundantly in both ingredients and results. That'll help tools track what
-; changed.
-
-; To enforce that the result and ingredient must always match, use the
-; 'nochange' property. Results with 'nochange' properties should only be
-; copied to themselves.
-(reset)
-(new-trace "new-fn-nochange")
-(add-code
-  '((function test1 [
-      ; increment the contents of an address
-      (default-space:space-address <- new space:literal 2:literal)
-      (x:integer-address <- next-input)
-      (x:integer-address/deref <- add x:integer-address/deref 1:literal)
-      (reply x:integer-address/nochange)
-    ])
-    (function main [
-      (1:integer-address <- new integer:literal)
-      (1:integer-address/deref <- copy 0:literal)
-      (2:integer-address <- test1 1:integer-address)
-    ])))
-(run 'main)
-(let routine (car completed-routines*)
-;?   (prn rep.routine!error) ;? 1
-  (when (no rep.routine!error)
-    (prn "F - 'nochange' results are never copied to other locations")))
-;? (quit) ;? 1
-
 )  ; section 20
 
 (section 11
@@ -3069,7 +3039,7 @@
       (1:channel-address <- init-channel 3:literal)
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (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)
      ])))
@@ -3094,8 +3064,8 @@
       (1:channel-address <- init-channel 3:literal)
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
-      (5:tagged-value 1:channel-address/deref/nochange <- read 1:channel-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 <- maybe-coerce 5:tagged-value integer:literal)
       (8:integer <- get 1:channel-address/deref first-full:offset)
       (9:integer <- get 1:channel-address/deref first-free:offset)
@@ -3119,13 +3089,13 @@
       ; write a value
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (1:channel-address/deref <- write 1:channel-address 3:tagged-value)
       ; first-free will now be 1
       (5:integer <- get 1:channel-address/deref first-free:offset)
       ; read one value
-      (_ 1:channel-address/deref/nochange <- read 1:channel-address)
+      (_ 1:channel-address/deref <- read 1:channel-address)
       ; write a second value; verify that first-free wraps around to 0.
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (1:channel-address/deref <- write 1:channel-address 3:tagged-value)
       (6:integer <- get 1:channel-address/deref first-free:offset)
      ])))
 ;? (set dump-trace*)
@@ -3145,15 +3115,15 @@
       ; write a value
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (1:channel-address/deref <- write 1:channel-address 3:tagged-value)
       ; read one value
-      (_ 1:channel-address/deref/nochange <- read 1:channel-address)
+      (_ 1:channel-address/deref <- read 1:channel-address)
       ; first-full will now be 1
       (5:integer <- get 1:channel-address/deref first-full:offset)
       ; write a second value
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (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/nochange <- read 1:channel-address)
+      (_ 1:channel-address/deref <- read 1:channel-address)
       (6:integer <- get 1:channel-address/deref first-full:offset)
      ])))
 ;? (set dump-trace*)
@@ -3186,7 +3156,7 @@
       (1:channel-address <- init-channel 3:literal)
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (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)
      ])))
@@ -3204,7 +3174,7 @@
       (1:channel-address <- init-channel 1:literal)
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (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)
      ])))
@@ -3222,9 +3192,9 @@
       (1:channel-address <- init-channel 3:literal)
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
-      (_ 1:channel-address/deref/nochange <- read 1:channel-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)
       (5:boolean <- empty? 1:channel-address/deref)
       (6:boolean <- full? 1:channel-address/deref)
      ])))
@@ -3243,7 +3213,7 @@
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
       (1:channel-address/deref <- write 1:channel-address 3:tagged-value)
-      (_ 1:channel-address/deref/nochange <- read 1:channel-address)
+      (_ 1:channel-address/deref <- read 1:channel-address)
       (5:boolean <- empty? 1:channel-address/deref)
       (6:boolean <- full? 1:channel-address/deref)
      ])))
@@ -3263,7 +3233,7 @@
   '((function main [
       (1:channel-address <- init-channel 3:literal)
       ; channel is empty, but receives a read
-      (2:tagged-value 1:channel-address/deref/nochange <- read 1:channel-address)
+      (2:tagged-value 1:channel-address/deref <- read 1:channel-address)
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj whitelist '("run" "schedule")))
@@ -3287,9 +3257,9 @@
       (1:channel-address <- init-channel 1:literal)
       (2:integer <- copy 34:literal)
       (3:tagged-value <- save-type 2:integer)
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (1:channel-address/deref <- write 1:channel-address 3:tagged-value)
       ; channel has capacity 1, but receives a second write
-      (1:channel-address/deref/nochange <- write 1:channel-address 3:tagged-value)
+      (1:channel-address/deref <- write 1:channel-address 3:tagged-value)
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj whitelist '("run" "schedule" "addr")))
@@ -3314,14 +3284,14 @@
       (default-space:space-address <- new space:literal 30:literal)
       (chan:channel-address <- init-channel 3:literal)  ; create a channel
       (fork producer:fn nil:literal/globals nil:literal/limit chan:channel-address)  ; fork a routine to produce a value in it
-      (1:tagged-value/raw/nochange <- read chan:channel-address)  ; wait for input on channel
+      (1:tagged-value/raw <- read chan:channel-address)  ; wait for input on channel
      ])
     (function producer [
       (default-space:space-address <- new space:literal 30:literal)
       (n:integer <- copy 24:literal)
       (ochan:channel-address <- next-input)
       (x:tagged-value <- save-type n:integer)
-      (ochan:channel-address/deref/nochange <- write ochan:channel-address x:tagged-value)
+      (ochan:channel-address/deref <- write ochan:channel-address x:tagged-value)
      ])))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj whitelist '("schedule" "run" "addr")))
@@ -3341,13 +3311,13 @@
       (default-space:space-address <- new space:literal 30:literal)
       (1:channel-address <- init-channel 3:literal)  ; create a channel
       (fork producer:fn default-space:space-address/globals nil:literal/limit)  ; pass it as a global to another routine
-      (1:tagged-value/raw/nochange <- read 1:channel-address)  ; wait for input on channel
+      (1:tagged-value/raw <- read 1:channel-address)  ; wait for input on channel
      ])
     (function producer [
       (default-space:space-address <- new space:literal 30:literal)
       (n:integer <- copy 24:literal)
       (x:tagged-value <- save-type n:integer)
-      (1:channel-address/space:global/deref/nochange <- write 1:channel-address/space:global x:tagged-value)
+      (1:channel-address/space:global/deref <- write 1:channel-address/space:global x:tagged-value)
      ])))
 (run 'consumer)
 (each routine completed-routines*
diff --git a/stdin.mu b/stdin.mu
index a8c41182..4ffded52 100644
--- a/stdin.mu
+++ b/stdin.mu
@@ -14,7 +14,7 @@
   ; now read characters from stdin until a 'q' is typed
   (print-primitive-to-host (("? " literal)))
   { begin
-    (x:tagged-value stdin:channel-address/deref/nochange <- read stdin:channel-address)
+    (x:tagged-value stdin:channel-address/deref <- read stdin:channel-address)
     (c:character <- maybe-coerce x:tagged-value character:literal)
 ;?     (print-primitive-to-host (("main: stdin is " literal)))
 ;?     (print-primitive-to-host stdin:channel-address)