about summary refs log tree commit diff stats
path: root/037abandon.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-05-05 16:58:46 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-05-05 16:58:46 -0700
commita2f5a5d3fd13fba97571c39951304a44e7f84e5d (patch)
treeebeb84a736b6d8c591e879bd5dd0c6bb9b8cd8ad /037abandon.cc
parentd05078df9da8efbdebf57c91cedd5aac793d7732 (diff)
downloadmu-a2f5a5d3fd13fba97571c39951304a44e7f84e5d.tar.gz
2927
Diffstat (limited to '037abandon.cc')
-rw-r--r--037abandon.cc15
1 files changed, 9 insertions, 6 deletions
diff --git a/037abandon.cc b/037abandon.cc
index fe125757..9d869f20 100644
--- a/037abandon.cc
+++ b/037abandon.cc
@@ -7,10 +7,11 @@ def main [
   2:number <- copy 1:address:number  # because 1 will get reset during abandon below
   1:address:number <- copy 0  # abandon
   3:address:number <- new number:type  # must be same size as abandoned memory to reuse
-  4:boolean <- equal 2:number, 3:address:number
+  4:number <- copy 3:address:number
+  5:boolean <- equal 2:number, 4:number
 ]
 # both allocations should have returned the same address
-+mem: storing 1 in location 4
++mem: storing 1 in location 5
 
 :(before "End Decrement Reference Count(old_address, size)")
 if (old_refcount == 0) {
@@ -64,10 +65,11 @@ def main [
   2:number <- copy 1:address:number
   1:address:number <- copy 0  # abandon
   3:address:array:number <- new number:type, 2  # different size
-  4:boolean <- equal 2:number, 3:address:array:number
+  4:number <- copy 3:address:array:number
+  5:boolean <- equal 2:number, 4:number
 ]
 # no reuse
-+mem: storing 0 in location 4
++mem: storing 0 in location 5
 
 :(scenario new_reclaim_array)
 def main [
@@ -75,10 +77,11 @@ def main [
   2:number <- copy 1:address:array:number
   1:address:array:number <- copy 0  # abandon
   3:address:array:number <- new number:type, 2  # same size
-  4:boolean <- equal 2:number, 3:address:array:number
+  4:number <- copy 3:address:array:number
+  5:boolean <- equal 2:number, 4:number
 ]
 # reuse
-+mem: storing 1 in location 4
++mem: storing 1 in location 5
 
 :(scenario refcounts_overwrite)
 def main [
#fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
# To check our support for screens in scenarios, rewrite tests from print.mu

scenario print-character-at-top-left2 [
  assume-screen 3:literal/width, 2:literal/height
  run [
    screen:address <- print-character screen:address, 97:literal  # 'a'
  ]
  screen-should-contain [
    .a  .
    .   .
  ]
]

scenario clear-line-erases-printed-characters2 [
  assume-screen 5:literal/width, 3:literal/height
  run [
    # print a character
    screen:address <- print-character screen:address, 97:literal  # 'a'
    # move cursor to start of line
    screen:address <- move-cursor screen:address, 0:literal/row, 0:literal/column
    # clear line
    screen:address <- clear-line screen:address
  ]
  screen-should-contain [
    .     .
    .     .
    .     .
  ]
]