diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-05-03 18:39:58 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-05-03 18:39:58 -0700 |
commit | 249a5672e41f603c8d705f69f2939a25a45685ff (patch) | |
tree | e823865449d538dec8d2606ba45af7878a277588 /cpp | |
parent | 282a3d94b5ba889a91ac537558d0237225571a85 (diff) | |
download | mu-249a5672e41f603c8d705f69f2939a25a45685ff.tar.gz |
1246
Diffstat (limited to 'cpp')
140 files changed, 2255 insertions, 2255 deletions
diff --git a/cpp/.traces/add b/cpp/.traces/add index 8892c399..51c64f81 100644 --- a/cpp/.traces/add +++ b/cpp/.traces/add @@ -15,15 +15,15 @@ after-brace/0: add ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- add {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- add/2 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 23 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/add_literal b/cpp/.traces/add_literal index 6f232792..c6dc982e 100644 --- a/cpp/.traces/add_literal +++ b/cpp/.traces/add_literal @@ -7,7 +7,7 @@ after-brace/0: add ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "23", value: 23, type: 0, properties: ["23": "literal"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "23", value: 23, type: 0, properties: ["23": "literal"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 23 run/0: ingredient 1 is 34 run/0: product 0 is 57 diff --git a/cpp/.traces/and b/cpp/.traces/and index 39380cec..d354b1a9 100644 --- a/cpp/.traces/and +++ b/cpp/.traces/and @@ -15,15 +15,15 @@ after-brace/0: and ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- and {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- and/7 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/array-from-args b/cpp/.traces/array-from-args index 6abdab60..d033bb80 100644 --- a/cpp/.traces/array-from-args +++ b/cpp/.traces/array-from-args @@ -24,7 +24,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: array-from-args run/0: instruction array-from-args/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:location <- init-array 0:literal, 1:literal, 2:literal 2:array:location <- copy 1:address:array:location/deref ", value: 0, type: 0, properties: [" @@ -43,101 +43,101 @@ after-brace/0: recipe run1001 after-brace/0: init-array ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location"]} <- init-array {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location"]} <- init-array/114 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: instruction init-array/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-array/1 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1002 run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1003 mem/0: storing 1 in location 1004 run/0: instruction init-array/4 -run/0: break-unless {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1004 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction init-array/5 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1002 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1002 run/0: instruction init-array/6 -run/0: loop {name: "", value: -4, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} run/0: ingredient 0 is -4 run/0: jumping to instruction 3 run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1 mem/0: storing 1 in location 1003 mem/0: storing 1 in location 1004 run/0: instruction init-array/4 -run/0: break-unless {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1004 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction init-array/5 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1002 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1002 run/0: instruction init-array/6 -run/0: loop {name: "", value: -4, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} run/0: ingredient 0 is -4 run/0: jumping to instruction 3 run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 1003 mem/0: storing 1 in location 1004 run/0: instruction init-array/4 -run/0: break-unless {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1004 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction init-array/5 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1002 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1002 run/0: instruction init-array/6 -run/0: loop {name: "", value: -4, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} run/0: ingredient 0 is -4 run/0: jumping to instruction 3 run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1004 run/0: instruction init-array/4 -run/0: break-unless {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1004 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction init-array/8 -run/0: {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} mem/0: location 1002 is 3 mem/0: array size is 3 mem/0: new alloc: 1031 mem/0: storing 1031 in location 1005 run/0: instruction init-array/9 -run/0: rewind-ingredients +run/0: rewind-ingredients/30 run/0: instruction init-array/10 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1006 run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is i mem/0: location 1006 is 0 run/0: ingredient 1 is capacity @@ -145,21 +145,21 @@ mem/0: location 1002 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1007 run/0: instruction init-array/13 -run/0: break-if {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1007 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction init-array/14 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1003 mem/0: storing 1 in location 1004 run/0: instruction init-array/15 -run/0: assert {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} +run/0: assert/19 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} run/0: ingredient 0 is exists? mem/0: location 1004 is 1 run/0: instruction init-array/16 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} +run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address/26 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is result mem/0: location 1005 is 1031 run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} @@ -168,24 +168,24 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1008 run/0: instruction init-array/17 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} +run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy/1 {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} run/0: ingredient 0 is curr-value mem/0: location 1003 is 0 mem/0: location 1008 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-array/18 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1006 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1006 run/0: instruction init-array/19 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 12 run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is i mem/0: location 1006 is 1 run/0: ingredient 1 is capacity @@ -193,21 +193,21 @@ mem/0: location 1002 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1007 run/0: instruction init-array/13 -run/0: break-if {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1007 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction init-array/14 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1 mem/0: storing 1 in location 1003 mem/0: storing 1 in location 1004 run/0: instruction init-array/15 -run/0: assert {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} +run/0: assert/19 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} run/0: ingredient 0 is exists? mem/0: location 1004 is 1 run/0: instruction init-array/16 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} +run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address/26 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is result mem/0: location 1005 is 1031 run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} @@ -216,24 +216,24 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1008 run/0: instruction init-array/17 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} +run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy/1 {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} run/0: ingredient 0 is curr-value mem/0: location 1003 is 1 mem/0: location 1008 is 1033 mem/0: storing 1 in location 1033 run/0: instruction init-array/18 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1006 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1006 run/0: instruction init-array/19 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 12 run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is i mem/0: location 1006 is 2 run/0: ingredient 1 is capacity @@ -241,21 +241,21 @@ mem/0: location 1002 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1007 run/0: instruction init-array/13 -run/0: break-if {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1007 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction init-array/14 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient +run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 1003 mem/0: storing 1 in location 1004 run/0: instruction init-array/15 -run/0: assert {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} +run/0: assert/19 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} run/0: ingredient 0 is exists? mem/0: location 1004 is 1 run/0: instruction init-array/16 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} +run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address/26 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is result mem/0: location 1005 is 1031 run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} @@ -264,24 +264,24 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1008 run/0: instruction init-array/17 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} +run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy/1 {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} run/0: ingredient 0 is curr-value mem/0: location 1003 is 2 mem/0: location 1008 is 1034 mem/0: storing 2 in location 1034 run/0: instruction init-array/18 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1006 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1006 run/0: instruction init-array/19 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 12 run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is i mem/0: location 1006 is 3 run/0: ingredient 1 is capacity @@ -289,18 +289,18 @@ mem/0: location 1002 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1007 run/0: instruction init-array/13 -run/0: break-if {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1007 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 20 run/0: instruction init-array/21 -run/0: reply {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location"]} +run/0: reply/32 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location"]} mem/0: location 1005 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-1, properties: ["2": "array":"location"]} <- copy {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "deref": ]} +run/0: {name: "2", value: 2, type: 5-1, properties: ["2": "array":"location"]} <- copy/1 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "deref": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 mem/0: location 1031 is 3 @@ -312,7 +312,7 @@ mem/0: storing 0 in location 3 mem/0: storing 1 in location 4 mem/0: storing 2 in location 5 run/0: instruction array-from-args/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 3 # array length 3 <- 0 4 <- 1 diff --git a/cpp/.traces/array_length b/cpp/.traces/array_length index bd5f2a56..f78e0e12 100644 --- a/cpp/.traces/array_length +++ b/cpp/.traces/array_length @@ -22,21 +22,21 @@ after-brace/0: length ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- length {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} +run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- length/27 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} mem/0: storing 3 in location 5 diff --git a/cpp/.traces/assert b/cpp/.traces/assert index a9688419..74ca6ecf 100644 --- a/cpp/.traces/assert +++ b/cpp/.traces/assert @@ -6,6 +6,6 @@ after-brace/0: assert ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: assert {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "this is an assert in mu", value: 0, type: 0, properties: ["this is an assert in mu": "literal-string"]} +run/0: assert/19 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "this is an assert in mu", value: 0, type: 0, properties: ["this is an assert in mu": "literal-string"]} run/0: ingredient 0 is 0 warn/0: this is an assert in mu diff --git a/cpp/.traces/brace_conversion_and_run b/cpp/.traces/brace_conversion_and_run index 9aafc716..172de7f0 100644 --- a/cpp/.traces/brace_conversion_and_run +++ b/cpp/.traces/brace_conversion_and_run @@ -40,27 +40,27 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: test-factorial run/0: instruction test-factorial/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 1 run/0: instruction test-factorial/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 2 run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 -run/0: break-if {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} +run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 2 mem/0: location 2 is 1 run/0: ingredient 1 is 1 @@ -69,30 +69,30 @@ run/0: ingredient 1 is 5 run/0: product 0 is 5 mem/0: storing 5 in location 2 run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction test-factorial/7 -run/0: loop {name: "", value: -5, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 -run/0: break-if {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} +run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 2 mem/0: location 2 is 5 run/0: ingredient 1 is 1 @@ -101,30 +101,30 @@ run/0: ingredient 1 is 4 run/0: product 0 is 20 mem/0: storing 20 in location 2 run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1 run/0: instruction test-factorial/7 -run/0: loop {name: "", value: -5, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 -run/0: break-if {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} +run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 2 mem/0: location 2 is 20 run/0: ingredient 1 is 1 @@ -133,30 +133,30 @@ run/0: ingredient 1 is 3 run/0: product 0 is 60 mem/0: storing 60 in location 2 run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1 run/0: instruction test-factorial/7 -run/0: loop {name: "", value: -5, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 -run/0: break-if {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} +run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 2 mem/0: location 2 is 60 run/0: ingredient 1 is 1 @@ -165,31 +165,31 @@ run/0: ingredient 1 is 2 run/0: product 0 is 120 mem/0: storing 120 in location 2 run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1 run/0: instruction test-factorial/7 -run/0: loop {name: "", value: -5, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 run/0: instruction test-factorial/4 -run/0: break-if {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} +run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} mem/0: location 3 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction test-factorial/9 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 2 mem/0: location 2 is 120 mem/0: storing 120 in location 4 diff --git a/cpp/.traces/buffer-append-works b/cpp/.traces/buffer-append-works index 8536f9bc..e24f3b69 100644 --- a/cpp/.traces/buffer-append-works +++ b/cpp/.traces/buffer-append-works @@ -116,7 +116,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: buffer-append-works run/0: instruction buffer-append-works/0 -run/0: run {name: " +run/0: run/42 {name: " default-space:address:array:location <- new location:type, 30:literal x:address:buffer <- init-buffer 3:literal s1:address:array:character <- get x:address:buffer/deref, data:offset @@ -270,21 +270,21 @@ after-brace/0: equal ... after-brace/0: get ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- init-buffer {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- init-buffer/101 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: instruction init-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1031 run/0: instruction init-buffer/1 -run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} +run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new/41 {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} mem/0: new alloc: 1062 mem/0: storing 1062 in location 1033 run/0: instruction init-buffer/2 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is result mem/0: location 1033 is 1062 run/0: ingredient 1 is length @@ -292,12 +292,12 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1034 run/0: instruction init-buffer/3 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1034 is 1062 mem/0: storing 0 in location 1062 run/0: instruction init-buffer/4 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address/24 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1033 is 1062 run/0: ingredient 1 is data @@ -305,23 +305,23 @@ run/0: address to copy is 1063 run/0: product 0 is 1063 mem/0: storing 1063 in location 1035 run/0: instruction init-buffer/5 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1036 run/0: instruction init-buffer/6 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1036 is 3 mem/0: array size is 3 mem/0: new alloc: 1064 mem/0: location 1035 is 1063 mem/0: storing 1064 in location 1063 run/0: instruction init-buffer/7 -run/0: reply {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} +run/0: reply/32 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} mem/0: location 1033 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1002 run/0: instruction run1001/2 -run/0: {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1002 is 1062 run/0: ingredient 1 is data @@ -331,33 +331,33 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1003 run/0: instruction run1001/3 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} +run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} mem/0: location 1002 is 1062 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1068 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1070 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 97 mem/0: storing 97 in location 1071 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1070 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1099 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1101 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1101 is 1062 run/0: ingredient 1 is length @@ -367,7 +367,7 @@ mem/0: location 1062 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1102 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1101 is 1062 run/0: ingredient 1 is data @@ -377,11 +377,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1103 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1103 is 1064 mem/0: storing 3 in location 1104 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1102 is 0 run/0: ingredient 1 is capacity @@ -389,18 +389,18 @@ mem/0: location 1104 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1105 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1105 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1072 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1072 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1070 is 1062 run/0: ingredient 1 is length @@ -408,7 +408,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1073 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1070 is 1062 run/0: ingredient 1 is data @@ -418,7 +418,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1074 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1074 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -428,13 +428,13 @@ run/0: address to copy is 1065 run/0: product 0 is 1065 mem/0: storing 1065 in location 1075 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1071 is 97 mem/0: location 1075 is 1065 mem/0: storing 97 in location 1065 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1073 is 1062 mem/0: location 1062 is 0 @@ -443,38 +443,38 @@ run/0: product 0 is 1 mem/0: location 1073 is 1062 mem/0: storing 1 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1070 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1002 run/0: instruction run1001/4 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "98", value: 98, type: 0, properties: ["98": "literal"]} +run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "98", value: 98, type: 0, properties: ["98": "literal"]} mem/0: location 1002 is 1062 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1130 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1132 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 98 mem/0: storing 98 in location 1133 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1132 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1161 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1163 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1163 is 1062 run/0: ingredient 1 is length @@ -484,7 +484,7 @@ mem/0: location 1062 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1164 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1163 is 1062 run/0: ingredient 1 is data @@ -494,11 +494,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1165 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1165 is 1064 mem/0: storing 3 in location 1166 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1164 is 1 run/0: ingredient 1 is capacity @@ -506,18 +506,18 @@ mem/0: location 1166 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1167 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1167 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1134 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1134 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1132 is 1062 run/0: ingredient 1 is length @@ -525,7 +525,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1135 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1132 is 1062 run/0: ingredient 1 is data @@ -535,7 +535,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1136 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1136 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -545,13 +545,13 @@ run/0: address to copy is 1066 run/0: product 0 is 1066 mem/0: storing 1066 in location 1137 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1133 is 98 mem/0: location 1137 is 1066 mem/0: storing 98 in location 1066 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1135 is 1062 mem/0: location 1062 is 1 @@ -560,38 +560,38 @@ run/0: product 0 is 2 mem/0: location 1135 is 1062 mem/0: storing 2 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1132 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1002 run/0: instruction run1001/5 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "99", value: 99, type: 0, properties: ["99": "literal"]} +run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "99", value: 99, type: 0, properties: ["99": "literal"]} mem/0: location 1002 is 1062 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1192 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1194 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 99 mem/0: storing 99 in location 1195 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1194 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1223 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1225 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1225 is 1062 run/0: ingredient 1 is length @@ -601,7 +601,7 @@ mem/0: location 1062 is 2 run/0: product 0 is 2 mem/0: storing 2 in location 1226 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1225 is 1062 run/0: ingredient 1 is data @@ -611,11 +611,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1227 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1227 is 1064 mem/0: storing 3 in location 1228 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1226 is 2 run/0: ingredient 1 is capacity @@ -623,18 +623,18 @@ mem/0: location 1228 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1229 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1229 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1196 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1196 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1194 is 1062 run/0: ingredient 1 is length @@ -642,7 +642,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1197 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1194 is 1062 run/0: ingredient 1 is data @@ -652,7 +652,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1198 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1198 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -662,13 +662,13 @@ run/0: address to copy is 1067 run/0: product 0 is 1067 mem/0: storing 1067 in location 1199 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1195 is 99 mem/0: location 1199 is 1067 mem/0: storing 99 in location 1067 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1197 is 1062 mem/0: location 1062 is 2 @@ -677,12 +677,12 @@ run/0: product 0 is 3 mem/0: location 1197 is 1062 mem/0: storing 3 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1194 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1002 run/0: instruction run1001/6 -run/0: {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1002 is 1062 run/0: ingredient 1 is data @@ -692,7 +692,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1004 run/0: instruction run1001/7 -run/0: {name: "1", value: 1, type: 3, properties: ["1": "boolean", "raw": ]} <- equal {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} +run/0: {name: "1", value: 1, type: 3, properties: ["1": "boolean", "raw": ]} <- equal/13 {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} run/0: ingredient 0 is s1 mem/0: location 1003 is 1064 run/0: ingredient 1 is s2 @@ -700,7 +700,7 @@ mem/0: location 1004 is 1064 run/0: product 0 is 1 mem/0: storing 1 in location 1 run/0: instruction run1001/8 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character", "deref": ]} +run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character", "deref": ]} run/0: ingredient 0 is s2 mem/0: location 1004 is 1064 mem/0: location 1064 is 3 @@ -712,33 +712,33 @@ mem/0: storing 97 in location 3 mem/0: storing 98 in location 4 mem/0: storing 99 in location 5 run/0: instruction run1001/10 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "100", value: 100, type: 0, properties: ["100": "literal"]} +run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "100", value: 100, type: 0, properties: ["100": "literal"]} mem/0: location 1002 is 1062 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1254 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1256 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 100 mem/0: storing 100 in location 1257 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1256 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1285 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1287 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1287 is 1062 run/0: ingredient 1 is length @@ -748,7 +748,7 @@ mem/0: location 1062 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1288 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1287 is 1062 run/0: ingredient 1 is data @@ -758,11 +758,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1289 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1289 is 1064 mem/0: storing 3 in location 1290 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1288 is 3 run/0: ingredient 1 is capacity @@ -770,28 +770,28 @@ mem/0: location 1290 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1291 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1291 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 1258 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1258 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction buffer-append/6 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- grow-buffer {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- grow-buffer/102 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1256 is 1062 run/0: instruction grow-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1316 run/0: instruction grow-buffer/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1318 run/0: instruction grow-buffer/2 -run/0: {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1318 is 1062 run/0: ingredient 1 is data @@ -799,12 +799,12 @@ run/0: address to copy is 1063 run/0: product 0 is 1063 mem/0: storing 1063 in location 1319 run/0: instruction grow-buffer/3 -run/0: {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} <- length {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]} +run/0: {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} <- length/27 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]} mem/0: location 1319 is 1063 mem/0: location 1063 is 1064 mem/0: storing 3 in location 1320 run/0: instruction grow-buffer/4 -run/0: {name: "newlen", value: 4, type: 1, properties: ["newlen": "integer"]} <- multiply {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "newlen", value: 4, type: 1, properties: ["newlen": "integer"]} <- multiply/4 {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is oldlen mem/0: location 1320 is 3 run/0: ingredient 1 is 2 @@ -812,24 +812,24 @@ run/0: ingredient 1 is 2 run/0: product 0 is 6 mem/0: storing 6 in location 1321 run/0: instruction grow-buffer/5 -run/0: {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character"]} <- copy {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": ]} +run/0: {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character"]} <- copy/1 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": ]} run/0: ingredient 0 is x mem/0: location 1319 is 1063 mem/0: location 1063 is 1064 mem/0: storing 1064 in location 1322 run/0: instruction grow-buffer/6 -run/0: {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": ]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "newlen", value: 4, type: 1, properties: ["newlen": "integer"]} +run/0: {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": ]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "newlen", value: 4, type: 1, properties: ["newlen": "integer"]} mem/0: location 1321 is 6 mem/0: array size is 6 mem/0: new alloc: 1347 mem/0: location 1319 is 1063 mem/0: storing 1347 in location 1063 run/0: instruction grow-buffer/7 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1323 run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} run/0: ingredient 0 is i mem/0: location 1323 is 0 run/0: ingredient 1 is oldlen @@ -837,12 +837,12 @@ mem/0: location 1320 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1324 run/0: instruction grow-buffer/10 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1324 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction grow-buffer/11 -run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index/25 {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} mem/0: location 1322 is 1064 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -853,7 +853,7 @@ mem/0: location 1065 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1325 run/0: instruction grow-buffer/12 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is x mem/0: location 1319 is 1063 mem/0: location 1063 is 1347 @@ -863,24 +863,24 @@ run/0: address to copy is 1348 run/0: product 0 is 1348 mem/0: storing 1348 in location 1326 run/0: instruction grow-buffer/13 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 8, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 8, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1325 is 97 mem/0: location 1326 is 1348 mem/0: storing 97 in location 1348 run/0: instruction grow-buffer/14 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1323 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1323 run/0: instruction grow-buffer/15 -run/0: loop {name: "", value: -7, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -7, type: , properties: ["": ]} run/0: ingredient 0 is -7 run/0: jumping to instruction 9 run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} run/0: ingredient 0 is i mem/0: location 1323 is 1 run/0: ingredient 1 is oldlen @@ -888,12 +888,12 @@ mem/0: location 1320 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1324 run/0: instruction grow-buffer/10 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1324 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction grow-buffer/11 -run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index/25 {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} mem/0: location 1322 is 1064 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -904,7 +904,7 @@ mem/0: location 1066 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1325 run/0: instruction grow-buffer/12 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is x mem/0: location 1319 is 1063 mem/0: location 1063 is 1347 @@ -914,24 +914,24 @@ run/0: address to copy is 1349 run/0: product 0 is 1349 mem/0: storing 1349 in location 1326 run/0: instruction grow-buffer/13 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 8, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 8, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1325 is 98 mem/0: location 1326 is 1349 mem/0: storing 98 in location 1349 run/0: instruction grow-buffer/14 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1323 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1323 run/0: instruction grow-buffer/15 -run/0: loop {name: "", value: -7, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -7, type: , properties: ["": ]} run/0: ingredient 0 is -7 run/0: jumping to instruction 9 run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} run/0: ingredient 0 is i mem/0: location 1323 is 2 run/0: ingredient 1 is oldlen @@ -939,12 +939,12 @@ mem/0: location 1320 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1324 run/0: instruction grow-buffer/10 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1324 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction grow-buffer/11 -run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index/25 {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} mem/0: location 1322 is 1064 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -955,7 +955,7 @@ mem/0: location 1067 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1325 run/0: instruction grow-buffer/12 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is x mem/0: location 1319 is 1063 mem/0: location 1063 is 1347 @@ -965,24 +965,24 @@ run/0: address to copy is 1350 run/0: product 0 is 1350 mem/0: storing 1350 in location 1326 run/0: instruction grow-buffer/13 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 8, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 8, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1325 is 99 mem/0: location 1326 is 1350 mem/0: storing 99 in location 1350 run/0: instruction grow-buffer/14 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1323 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1323 run/0: instruction grow-buffer/15 -run/0: loop {name: "", value: -7, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -7, type: , properties: ["": ]} run/0: ingredient 0 is -7 run/0: jumping to instruction 9 run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} run/0: ingredient 0 is i mem/0: location 1323 is 3 run/0: ingredient 1 is oldlen @@ -990,18 +990,18 @@ mem/0: location 1320 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1324 run/0: instruction grow-buffer/10 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1324 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 16 run/0: instruction grow-buffer/17 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1318 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1256 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1256 is 1062 run/0: ingredient 1 is length @@ -1009,7 +1009,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1259 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1256 is 1062 run/0: ingredient 1 is data @@ -1019,7 +1019,7 @@ mem/0: location 1063 is 1347 run/0: product 0 is 1347 mem/0: storing 1347 in location 1260 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1260 is 1347 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -1029,13 +1029,13 @@ run/0: address to copy is 1351 run/0: product 0 is 1351 mem/0: storing 1351 in location 1261 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1257 is 100 mem/0: location 1261 is 1351 mem/0: storing 100 in location 1351 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1259 is 1062 mem/0: location 1062 is 3 @@ -1044,12 +1044,12 @@ run/0: product 0 is 4 mem/0: location 1259 is 1062 mem/0: storing 4 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1256 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1002 run/0: instruction run1001/11 -run/0: {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1002 is 1062 run/0: ingredient 1 is data @@ -1059,7 +1059,7 @@ mem/0: location 1063 is 1347 run/0: product 0 is 1347 mem/0: storing 1347 in location 1005 run/0: instruction run1001/12 -run/0: {name: "10", value: 10, type: 3, properties: ["10": "boolean", "raw": ]} <- equal {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} +run/0: {name: "10", value: 10, type: 3, properties: ["10": "boolean", "raw": ]} <- equal/13 {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} run/0: ingredient 0 is s1 mem/0: location 1003 is 1064 run/0: ingredient 1 is s3 @@ -1067,7 +1067,7 @@ mem/0: location 1005 is 1347 run/0: product 0 is 0 mem/0: storing 0 in location 10 run/0: instruction run1001/13 -run/0: {name: "11", value: 11, type: 1, properties: ["11": "integer", "raw": ]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "11", value: 11, type: 1, properties: ["11": "integer", "raw": ]} <- get/23 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is x mem/0: location 1002 is 1062 run/0: ingredient 1 is length @@ -1077,7 +1077,7 @@ mem/0: location 1062 is 4 run/0: product 0 is 4 mem/0: storing 4 in location 11 run/0: instruction run1001/14 -run/0: {name: "12", value: 12, type: 5-4, properties: ["12": "array":"character", "raw": ]} <- copy {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character", "deref": ]} +run/0: {name: "12", value: 12, type: 5-4, properties: ["12": "array":"character", "raw": ]} <- copy/1 {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character", "deref": ]} run/0: ingredient 0 is s3 mem/0: location 1005 is 1347 mem/0: location 1347 is 6 @@ -1095,7 +1095,7 @@ mem/0: storing 100 in location 16 mem/0: storing 0 in location 17 mem/0: storing 0 in location 18 run/0: instruction buffer-append-works/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " # before +buffer-filled 1 <- 1 # no change in data pointer 2 <- 3 # size of data diff --git a/cpp/.traces/calling_recipe b/cpp/.traces/calling_recipe index 9b265ca1..a7a66682 100644 --- a/cpp/.traces/calling_recipe +++ b/cpp/.traces/calling_recipe @@ -10,9 +10,9 @@ after-brace/0: add ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: f +run/0: f/1001 run/0: instruction f/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 4 diff --git a/cpp/.traces/channel b/cpp/.traces/channel index c80f3f6d..59294c41 100644 --- a/cpp/.traces/channel +++ b/cpp/.traces/channel @@ -20,7 +20,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel run/0: instruction channel/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 3:literal/capacity 1:address:channel <- write 1:address:channel, 34:literal 2:integer, 1:address:channel <- read 1:address:channel @@ -45,17 +45,17 @@ after-brace/0: init-channel ... after-brace/0: write ... after-brace/0: read ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -63,12 +63,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -76,23 +76,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -100,45 +100,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 4 mem/0: array size is 4 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1042 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1041 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1070 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1072 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free @@ -148,25 +148,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1073 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1072 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1101 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1103 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1103 is 1031 run/0: ingredient 1 is data @@ -176,16 +176,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1104 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1104 is 1034 mem/0: storing 4 in location 1105 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1105 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 1074 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 1 run/0: ingredient 1 is len @@ -193,13 +193,13 @@ mem/0: location 1074 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1075 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full @@ -209,7 +209,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1076 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1076 is 0 run/0: ingredient 1 is tmp @@ -217,18 +217,18 @@ mem/0: location 1073 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1077 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1077 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is data @@ -238,7 +238,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1045 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free @@ -246,7 +246,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1046 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -256,13 +256,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1047 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1042 is 34 mem/0: location 1047 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 0 @@ -271,11 +271,11 @@ run/0: product 0 is 1 mem/0: location 1046 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1045 is 1034 mem/0: storing 4 in location 1048 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 1 @@ -284,40 +284,40 @@ mem/0: location 1048 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1041 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1132 run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1134 run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1134 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1163 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1165 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1165 is 1031 run/0: ingredient 1 is first-full @@ -327,7 +327,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1166 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1165 is 1031 run/0: ingredient 1 is first-free @@ -337,7 +337,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1167 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1166 is 0 run/0: ingredient 1 is free @@ -345,18 +345,18 @@ mem/0: location 1167 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1168 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1168 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1135 run/0: instruction read/4 -run/0: break-unless {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1135 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1134 is 1031 run/0: ingredient 1 is first-full @@ -364,7 +364,7 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1137 run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1134 is 1031 run/0: ingredient 1 is data @@ -374,7 +374,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1138 run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} +run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/25 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1138 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} @@ -386,7 +386,7 @@ mem/0: location 1035 is 34 run/0: product 0 is 34 mem/0: storing 34 in location 1139 run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is full mem/0: location 1137 is 1031 mem/0: location 1031 is 0 @@ -395,11 +395,11 @@ run/0: product 0 is 1 mem/0: location 1137 is 1031 mem/0: storing 1 in location 1031 run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1138 is 1034 mem/0: storing 4 in location 1140 run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is full mem/0: location 1137 is 1031 mem/0: location 1031 is 1 @@ -408,13 +408,13 @@ mem/0: location 1140 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1141 run/0: instruction read/15 -run/0: break-unless {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1141 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 17 run/0: instruction read/18 -run/0: reply {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1139 is 34 mem/0: location 1134 is 1031 run/0: result 0 is 34 @@ -422,7 +422,7 @@ mem/0: storing 34 in location 2 run/0: result 1 is 1031 mem/0: storing 1031 in location 1 run/0: instruction channel/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 34 ", value: 0, type: 0, properties: [" 2 <- 34 diff --git a/cpp/.traces/channel-initialization b/cpp/.traces/channel-initialization index 9d82ca12..256d270c 100644 --- a/cpp/.traces/channel-initialization +++ b/cpp/.traces/channel-initialization @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-initialization run/0: instruction channel-initialization/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 3:literal/capacity 2:integer <- get 1:address:channel/deref, first-full:offset 3:integer <- get 1:address:channel/deref, first-free:offset @@ -49,17 +49,17 @@ after-brace/0: init-channel ... after-brace/0: get ... after-brace/0: get ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -67,12 +67,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -80,23 +80,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -104,19 +104,19 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 4 mem/0: array size is 4 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-full @@ -126,7 +126,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-free @@ -136,7 +136,7 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction channel-initialization/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 0 # first-full 3 <- 0 # first-free ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/channel-new-empty-not-full b/cpp/.traces/channel-new-empty-not-full index 41c382f6..91ff45d3 100644 --- a/cpp/.traces/channel-new-empty-not-full +++ b/cpp/.traces/channel-new-empty-not-full @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-new-empty-not-full run/0: instruction channel-new-empty-not-full/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 3:literal/capacity 2:integer <- channel-empty? 1:address:channel 3:integer <- channel-full? 1:address:channel @@ -45,17 +45,17 @@ after-brace/0: init-channel ... after-brace/0: channel-empty? ... after-brace/0: channel-full? ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -63,12 +63,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -76,23 +76,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -100,30 +100,30 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 4 mem/0: array size is 4 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is first-full @@ -133,7 +133,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1042 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free @@ -143,7 +143,7 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1042 is 0 run/0: ingredient 1 is free @@ -151,23 +151,23 @@ mem/0: location 1043 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1044 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1044 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1070 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1072 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free @@ -177,25 +177,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1073 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1072 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1101 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1103 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1103 is 1031 run/0: ingredient 1 is data @@ -205,16 +205,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1104 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1104 is 1034 mem/0: storing 4 in location 1105 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1105 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 1074 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 1 run/0: ingredient 1 is len @@ -222,13 +222,13 @@ mem/0: location 1074 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1075 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full @@ -238,7 +238,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1076 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1076 is 0 run/0: ingredient 1 is tmp @@ -246,12 +246,12 @@ mem/0: location 1073 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1077 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1077 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 3 run/0: instruction channel-new-empty-not-full/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 1 # empty? 3 <- 0 # full? ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/channel-read-increments-full b/cpp/.traces/channel-read-increments-full index e3000312..45a2a88a 100644 --- a/cpp/.traces/channel-read-increments-full +++ b/cpp/.traces/channel-read-increments-full @@ -26,7 +26,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-read-increments-full run/0: instruction channel-read-increments-full/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 3:literal/capacity 1:address:channel <- write 1:address:channel, 34:literal _, 1:address:channel <- read 1:address:channel @@ -67,17 +67,17 @@ after-brace/0: read ... after-brace/0: get ... after-brace/0: get ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -85,12 +85,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -98,23 +98,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -122,45 +122,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 4 mem/0: array size is 4 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1042 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1041 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1070 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1072 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free @@ -170,25 +170,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1073 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1072 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1101 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1103 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1103 is 1031 run/0: ingredient 1 is data @@ -198,16 +198,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1104 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1104 is 1034 mem/0: storing 4 in location 1105 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1105 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 1074 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 1 run/0: ingredient 1 is len @@ -215,13 +215,13 @@ mem/0: location 1074 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1075 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full @@ -231,7 +231,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1076 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1076 is 0 run/0: ingredient 1 is tmp @@ -239,18 +239,18 @@ mem/0: location 1073 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1077 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1077 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is data @@ -260,7 +260,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1045 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free @@ -268,7 +268,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1046 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -278,13 +278,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1047 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1042 is 34 mem/0: location 1047 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 0 @@ -293,11 +293,11 @@ run/0: product 0 is 1 mem/0: location 1046 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1045 is 1034 mem/0: storing 4 in location 1048 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 1 @@ -306,40 +306,40 @@ mem/0: location 1048 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1041 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1132 run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1134 run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1134 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1163 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1165 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1165 is 1031 run/0: ingredient 1 is first-full @@ -349,7 +349,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1166 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1165 is 1031 run/0: ingredient 1 is first-free @@ -359,7 +359,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1167 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1166 is 0 run/0: ingredient 1 is free @@ -367,18 +367,18 @@ mem/0: location 1167 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1168 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1168 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1135 run/0: instruction read/4 -run/0: break-unless {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1135 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1134 is 1031 run/0: ingredient 1 is first-full @@ -386,7 +386,7 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1137 run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1134 is 1031 run/0: ingredient 1 is data @@ -396,7 +396,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1138 run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} +run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/25 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1138 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} @@ -408,7 +408,7 @@ mem/0: location 1035 is 34 run/0: product 0 is 34 mem/0: storing 34 in location 1139 run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is full mem/0: location 1137 is 1031 mem/0: location 1031 is 0 @@ -417,11 +417,11 @@ run/0: product 0 is 1 mem/0: location 1137 is 1031 mem/0: storing 1 in location 1031 run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1138 is 1034 mem/0: storing 4 in location 1140 run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is full mem/0: location 1137 is 1031 mem/0: location 1031 is 1 @@ -430,20 +430,20 @@ mem/0: location 1140 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1141 run/0: instruction read/15 -run/0: break-unless {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1141 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 17 run/0: instruction read/18 -run/0: reply {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1139 is 34 mem/0: location 1134 is 1031 run/0: result 0 is 34 run/0: result 1 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-full @@ -453,7 +453,7 @@ mem/0: location 1031 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 2 run/0: instruction run1001/4 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-free @@ -463,7 +463,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 run/0: instruction channel-read-increments-full/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 1 # first-full 3 <- 1 # first-free ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/channel-read-not-full b/cpp/.traces/channel-read-not-full index a2ccb3f6..69379ea9 100644 --- a/cpp/.traces/channel-read-not-full +++ b/cpp/.traces/channel-read-not-full @@ -26,7 +26,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-read-not-full run/0: instruction channel-read-not-full/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 1:literal/capacity 1:address:channel <- write 1:address:channel, 34:literal _, 1:address:channel <- read 1:address:channel @@ -63,17 +63,17 @@ after-brace/0: read ... after-brace/0: channel-empty? ... after-brace/0: channel-full? ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -81,12 +81,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -94,23 +94,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 1 mem/0: storing 1 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -118,45 +118,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 2 mem/0: array size is 2 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1037 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1039 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1040 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1039 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1068 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1070 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1070 is 1031 run/0: ingredient 1 is first-free @@ -166,25 +166,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1071 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1071 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1071 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1070 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1099 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1101 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1101 is 1031 run/0: ingredient 1 is data @@ -194,16 +194,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1102 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1102 is 1034 mem/0: storing 2 in location 1103 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1103 is 2 run/0: result 0 is 2 mem/0: storing 2 in location 1072 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1071 is 1 run/0: ingredient 1 is len @@ -211,13 +211,13 @@ mem/0: location 1072 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1073 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1070 is 1031 run/0: ingredient 1 is first-full @@ -227,7 +227,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1074 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1074 is 0 run/0: ingredient 1 is tmp @@ -235,18 +235,18 @@ mem/0: location 1071 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1075 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1041 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1041 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1039 is 1031 run/0: ingredient 1 is data @@ -256,7 +256,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1043 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1039 is 1031 run/0: ingredient 1 is first-free @@ -264,7 +264,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1044 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1043 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -274,13 +274,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1045 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1040 is 34 mem/0: location 1045 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1044 is 1032 mem/0: location 1032 is 0 @@ -289,11 +289,11 @@ run/0: product 0 is 1 mem/0: location 1044 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1043 is 1034 mem/0: storing 2 in location 1046 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1044 is 1032 mem/0: location 1032 is 1 @@ -302,40 +302,40 @@ mem/0: location 1046 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1039 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1130 run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1132 run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1132 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1161 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1163 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1163 is 1031 run/0: ingredient 1 is first-full @@ -345,7 +345,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1164 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1163 is 1031 run/0: ingredient 1 is first-free @@ -355,7 +355,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1165 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1164 is 0 run/0: ingredient 1 is free @@ -363,18 +363,18 @@ mem/0: location 1165 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1166 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1166 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1133 run/0: instruction read/4 -run/0: break-unless {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1133 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1132 is 1031 run/0: ingredient 1 is first-full @@ -382,7 +382,7 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1135 run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1132 is 1031 run/0: ingredient 1 is data @@ -392,7 +392,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1136 run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} +run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/25 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1136 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} @@ -404,7 +404,7 @@ mem/0: location 1035 is 34 run/0: product 0 is 34 mem/0: storing 34 in location 1137 run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is full mem/0: location 1135 is 1031 mem/0: location 1031 is 0 @@ -413,11 +413,11 @@ run/0: product 0 is 1 mem/0: location 1135 is 1031 mem/0: storing 1 in location 1031 run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1136 is 1034 mem/0: storing 2 in location 1138 run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is full mem/0: location 1135 is 1031 mem/0: location 1031 is 1 @@ -426,31 +426,31 @@ mem/0: location 1138 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1139 run/0: instruction read/15 -run/0: break-unless {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1139 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 17 run/0: instruction read/18 -run/0: reply {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1137 is 34 mem/0: location 1132 is 1031 run/0: result 0 is 34 run/0: result 1 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1192 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1194 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1194 is 1031 run/0: ingredient 1 is first-full @@ -460,7 +460,7 @@ mem/0: location 1031 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1195 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1194 is 1031 run/0: ingredient 1 is first-free @@ -470,7 +470,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1196 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1195 is 1 run/0: ingredient 1 is free @@ -478,23 +478,23 @@ mem/0: location 1196 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1197 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1197 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 2 run/0: instruction run1001/4 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1223 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1225 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1225 is 1031 run/0: ingredient 1 is first-free @@ -504,25 +504,25 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1226 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1226 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1226 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1225 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1254 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1256 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1256 is 1031 run/0: ingredient 1 is data @@ -532,16 +532,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1257 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1257 is 1034 mem/0: storing 2 in location 1258 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1258 is 2 run/0: result 0 is 2 mem/0: storing 2 in location 1227 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1226 is 2 run/0: ingredient 1 is len @@ -549,16 +549,16 @@ mem/0: location 1227 is 2 run/0: product 0 is 1 mem/0: storing 1 in location 1228 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1228 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction channel-full?/8 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1226 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1225 is 1031 run/0: ingredient 1 is first-full @@ -568,7 +568,7 @@ mem/0: location 1031 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1229 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1229 is 1 run/0: ingredient 1 is tmp @@ -576,12 +576,12 @@ mem/0: location 1226 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1230 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1230 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 3 run/0: instruction channel-read-not-full/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 1 # empty? 3 <- 0 # full? ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/channel-wrap b/cpp/.traces/channel-wrap index d785fc42..04a7cd13 100644 --- a/cpp/.traces/channel-wrap +++ b/cpp/.traces/channel-wrap @@ -48,7 +48,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-wrap run/0: instruction channel-wrap/0 -run/0: run {name: " +run/0: run/42 {name: " # channel with just 1 slot 1:address:channel <- init-channel 1:literal/capacity # write and read a value @@ -129,17 +129,17 @@ after-brace/0: get ... after-brace/0: read ... after-brace/0: get ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -147,12 +147,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -160,23 +160,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 1 mem/0: storing 1 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -184,45 +184,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 2 mem/0: array size is 2 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1037 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1039 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1040 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1039 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1068 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1070 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1070 is 1031 run/0: ingredient 1 is first-free @@ -232,25 +232,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1071 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1071 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1071 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1070 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1099 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1101 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1101 is 1031 run/0: ingredient 1 is data @@ -260,16 +260,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1102 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1102 is 1034 mem/0: storing 2 in location 1103 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1103 is 2 run/0: result 0 is 2 mem/0: storing 2 in location 1072 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1071 is 1 run/0: ingredient 1 is len @@ -277,13 +277,13 @@ mem/0: location 1072 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1073 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1070 is 1031 run/0: ingredient 1 is first-full @@ -293,7 +293,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1074 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1074 is 0 run/0: ingredient 1 is tmp @@ -301,18 +301,18 @@ mem/0: location 1071 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1075 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1041 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1041 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1039 is 1031 run/0: ingredient 1 is data @@ -322,7 +322,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1043 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1039 is 1031 run/0: ingredient 1 is first-free @@ -330,7 +330,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1044 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1043 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -340,13 +340,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1045 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1040 is 34 mem/0: location 1045 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1044 is 1032 mem/0: location 1032 is 0 @@ -355,11 +355,11 @@ run/0: product 0 is 1 mem/0: location 1044 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1043 is 1034 mem/0: storing 2 in location 1046 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1044 is 1032 mem/0: location 1032 is 1 @@ -368,40 +368,40 @@ mem/0: location 1046 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1039 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1130 run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1132 run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1132 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1161 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1163 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1163 is 1031 run/0: ingredient 1 is first-full @@ -411,7 +411,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1164 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1163 is 1031 run/0: ingredient 1 is first-free @@ -421,7 +421,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1165 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1164 is 0 run/0: ingredient 1 is free @@ -429,18 +429,18 @@ mem/0: location 1165 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1166 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1166 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1133 run/0: instruction read/4 -run/0: break-unless {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1133 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1132 is 1031 run/0: ingredient 1 is first-full @@ -448,7 +448,7 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1135 run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1132 is 1031 run/0: ingredient 1 is data @@ -458,7 +458,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1136 run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} +run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/25 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1136 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} @@ -470,7 +470,7 @@ mem/0: location 1035 is 34 run/0: product 0 is 34 mem/0: storing 34 in location 1137 run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is full mem/0: location 1135 is 1031 mem/0: location 1031 is 0 @@ -479,11 +479,11 @@ run/0: product 0 is 1 mem/0: location 1135 is 1031 mem/0: storing 1 in location 1031 run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1136 is 1034 mem/0: storing 2 in location 1138 run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is full mem/0: location 1135 is 1031 mem/0: location 1031 is 1 @@ -492,20 +492,20 @@ mem/0: location 1138 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1139 run/0: instruction read/15 -run/0: break-unless {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1139 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 17 run/0: instruction read/18 -run/0: reply {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1137 is 34 mem/0: location 1132 is 1031 run/0: result 0 is 34 run/0: result 1 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-free @@ -515,7 +515,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 2 run/0: instruction run1001/4 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-free @@ -525,33 +525,33 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 run/0: instruction run1001/5 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1192 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1194 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1195 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1194 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1223 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1225 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1225 is 1031 run/0: ingredient 1 is first-free @@ -561,25 +561,25 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1226 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1226 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1226 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1225 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1254 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1256 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1256 is 1031 run/0: ingredient 1 is data @@ -589,16 +589,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1257 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1257 is 1034 mem/0: storing 2 in location 1258 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1258 is 2 run/0: result 0 is 2 mem/0: storing 2 in location 1227 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1226 is 2 run/0: ingredient 1 is len @@ -606,16 +606,16 @@ mem/0: location 1227 is 2 run/0: product 0 is 1 mem/0: storing 1 in location 1228 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1228 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction channel-full?/8 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1226 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1225 is 1031 run/0: ingredient 1 is first-full @@ -625,7 +625,7 @@ mem/0: location 1031 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1229 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1229 is 1 run/0: ingredient 1 is tmp @@ -633,18 +633,18 @@ mem/0: location 1226 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1230 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1230 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1196 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1196 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1194 is 1031 run/0: ingredient 1 is data @@ -654,7 +654,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1198 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1194 is 1031 run/0: ingredient 1 is first-free @@ -662,7 +662,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1199 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1198 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -672,13 +672,13 @@ run/0: address to copy is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1200 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1195 is 34 mem/0: location 1200 is 1036 mem/0: storing 34 in location 1036 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1199 is 1032 mem/0: location 1032 is 1 @@ -687,11 +687,11 @@ run/0: product 0 is 2 mem/0: location 1199 is 1032 mem/0: storing 2 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1198 is 1034 mem/0: storing 2 in location 1201 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1199 is 1032 mem/0: location 1032 is 2 @@ -700,22 +700,22 @@ mem/0: location 1201 is 2 run/0: product 0 is 1 mem/0: storing 1 in location 1202 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1202 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction write/18 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1199 is 1032 mem/0: storing 0 in location 1032 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1194 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/6 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-free @@ -725,29 +725,29 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 4 run/0: instruction run1001/7 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1285 run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1287 run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1287 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1316 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1318 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1318 is 1031 run/0: ingredient 1 is first-full @@ -757,7 +757,7 @@ mem/0: location 1031 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1319 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1318 is 1031 run/0: ingredient 1 is first-free @@ -767,7 +767,7 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1320 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1319 is 1 run/0: ingredient 1 is free @@ -775,18 +775,18 @@ mem/0: location 1320 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1321 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1321 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1288 run/0: instruction read/4 -run/0: break-unless {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1288 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1287 is 1031 run/0: ingredient 1 is first-full @@ -794,7 +794,7 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1290 run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1287 is 1031 run/0: ingredient 1 is data @@ -804,7 +804,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1291 run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} +run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/25 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1291 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} @@ -816,7 +816,7 @@ mem/0: location 1036 is 34 run/0: product 0 is 34 mem/0: storing 34 in location 1292 run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is full mem/0: location 1290 is 1031 mem/0: location 1031 is 1 @@ -825,11 +825,11 @@ run/0: product 0 is 2 mem/0: location 1290 is 1031 mem/0: storing 2 in location 1031 run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1291 is 1034 mem/0: storing 2 in location 1293 run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is full mem/0: location 1290 is 1031 mem/0: location 1031 is 2 @@ -838,24 +838,24 @@ mem/0: location 1293 is 2 run/0: product 0 is 1 mem/0: storing 1 in location 1294 run/0: instruction read/15 -run/0: break-unless {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1294 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction read/16 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1290 is 1031 mem/0: storing 0 in location 1031 run/0: instruction read/18 -run/0: reply {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1292 is 34 mem/0: location 1287 is 1031 run/0: result 0 is 34 run/0: result 1 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/8 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-full @@ -865,7 +865,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 5 run/0: instruction channel-wrap/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 1 # first-free after first write 3 <- 1 # first-full after first read 4 <- 0 # first-free after second write, wrapped diff --git a/cpp/.traces/channel-write-full b/cpp/.traces/channel-write-full index e1cdb2c6..1487727c 100644 --- a/cpp/.traces/channel-write-full +++ b/cpp/.traces/channel-write-full @@ -24,7 +24,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-write-full run/0: instruction channel-write-full/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 1:literal/capacity 1:address:channel <- write 1:address:channel, 34:literal 2:integer <- channel-empty? 1:address:channel @@ -54,17 +54,17 @@ after-brace/0: write ... after-brace/0: channel-empty? ... after-brace/0: channel-full? ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -72,12 +72,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -85,23 +85,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 1 mem/0: storing 1 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -109,45 +109,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 2 mem/0: array size is 2 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1037 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1039 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1040 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1039 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1068 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1070 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1070 is 1031 run/0: ingredient 1 is first-free @@ -157,25 +157,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1071 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1071 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1071 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1070 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1099 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1101 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1101 is 1031 run/0: ingredient 1 is data @@ -185,16 +185,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1102 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1102 is 1034 mem/0: storing 2 in location 1103 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1103 is 2 run/0: result 0 is 2 mem/0: storing 2 in location 1072 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1071 is 1 run/0: ingredient 1 is len @@ -202,13 +202,13 @@ mem/0: location 1072 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1073 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1070 is 1031 run/0: ingredient 1 is first-full @@ -218,7 +218,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1074 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1074 is 0 run/0: ingredient 1 is tmp @@ -226,18 +226,18 @@ mem/0: location 1071 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1075 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1041 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1041 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1039 is 1031 run/0: ingredient 1 is data @@ -247,7 +247,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1043 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1039 is 1031 run/0: ingredient 1 is first-free @@ -255,7 +255,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1044 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1043 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -265,13 +265,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1045 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1040 is 34 mem/0: location 1045 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1044 is 1032 mem/0: location 1032 is 0 @@ -280,11 +280,11 @@ run/0: product 0 is 1 mem/0: location 1044 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1043 is 1034 mem/0: storing 2 in location 1046 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1044 is 1032 mem/0: location 1032 is 1 @@ -293,29 +293,29 @@ mem/0: location 1046 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1039 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1130 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1132 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1132 is 1031 run/0: ingredient 1 is first-full @@ -325,7 +325,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1133 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1132 is 1031 run/0: ingredient 1 is first-free @@ -335,7 +335,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1134 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1133 is 0 run/0: ingredient 1 is free @@ -343,23 +343,23 @@ mem/0: location 1134 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1135 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1135 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 2 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1161 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1163 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1163 is 1031 run/0: ingredient 1 is first-free @@ -369,25 +369,25 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1164 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1164 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1164 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1163 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1192 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1194 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1194 is 1031 run/0: ingredient 1 is data @@ -397,16 +397,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1195 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1195 is 1034 mem/0: storing 2 in location 1196 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1196 is 2 run/0: result 0 is 2 mem/0: storing 2 in location 1165 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1164 is 2 run/0: ingredient 1 is len @@ -414,16 +414,16 @@ mem/0: location 1165 is 2 run/0: product 0 is 1 mem/0: storing 1 in location 1166 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1166 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction channel-full?/8 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1164 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1163 is 1031 run/0: ingredient 1 is first-full @@ -433,7 +433,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1167 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1167 is 0 run/0: ingredient 1 is tmp @@ -441,12 +441,12 @@ mem/0: location 1164 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1168 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1168 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 3 run/0: instruction channel-write-full/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 0 # empty? 3 <- 1 # full? ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/channel-write-increments-free b/cpp/.traces/channel-write-increments-free index 9f05e40a..1f9ae970 100644 --- a/cpp/.traces/channel-write-increments-free +++ b/cpp/.traces/channel-write-increments-free @@ -24,7 +24,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-write-increments-free run/0: instruction channel-write-increments-free/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 3:literal/capacity 1:address:channel <- write 1:address:channel, 34:literal 2:integer <- get 1:address:channel/deref, first-full:offset @@ -58,17 +58,17 @@ after-brace/0: write ... after-brace/0: get ... after-brace/0: get ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -76,12 +76,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -89,23 +89,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -113,45 +113,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 4 mem/0: array size is 4 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1042 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1041 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1070 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1072 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free @@ -161,25 +161,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1073 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1072 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1101 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1103 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1103 is 1031 run/0: ingredient 1 is data @@ -189,16 +189,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1104 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1104 is 1034 mem/0: storing 4 in location 1105 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1105 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 1074 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 1 run/0: ingredient 1 is len @@ -206,13 +206,13 @@ mem/0: location 1074 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1075 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full @@ -222,7 +222,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1076 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1076 is 0 run/0: ingredient 1 is tmp @@ -230,18 +230,18 @@ mem/0: location 1073 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1077 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1077 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is data @@ -251,7 +251,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1045 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free @@ -259,7 +259,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1046 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -269,13 +269,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1047 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1042 is 34 mem/0: location 1047 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 0 @@ -284,11 +284,11 @@ run/0: product 0 is 1 mem/0: location 1046 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1045 is 1034 mem/0: storing 4 in location 1048 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 1 @@ -297,18 +297,18 @@ mem/0: location 1048 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1041 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-full @@ -318,7 +318,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 2 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/23 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is first-free @@ -328,7 +328,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 run/0: instruction channel-write-increments-free/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 0 # first-full 3 <- 1 # first-free ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/channel-write-not-empty b/cpp/.traces/channel-write-not-empty index cdc54864..e4758cd3 100644 --- a/cpp/.traces/channel-write-not-empty +++ b/cpp/.traces/channel-write-not-empty @@ -24,7 +24,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: channel-write-not-empty run/0: instruction channel-write-not-empty/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:channel <- init-channel 3:literal/capacity 1:address:channel <- write 1:address:channel, 34:literal 2:integer <- channel-empty? 1:address:channel @@ -54,17 +54,17 @@ after-brace/0: write ... after-brace/0: channel-empty? ... after-brace/0: channel-full? ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} +run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/41 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full @@ -72,12 +72,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1003 run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1003 is 1031 mem/0: storing 0 in location 1031 run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free @@ -85,23 +85,23 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1004 run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1004 is 1032 mem/0: storing 0 in location 1032 run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: storing 3 in location 1005 run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is capacity mem/0: location 1005 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1005 run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/24 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -109,45 +109,45 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1006 run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1005 is 4 mem/0: array size is 4 mem/0: new alloc: 1034 mem/0: location 1006 is 1033 mem/0: storing 1034 in location 1033 run/0: instruction init-channel/10 -run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} +run/0: reply/32 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} mem/0: location 1 is 1031 run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient +run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/29 run/0: product 0 is 34 mem/0: storing 34 in location 1042 run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full? {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1041 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1070 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1072 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free @@ -157,25 +157,25 @@ mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1073 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1073 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1072 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1101 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1103 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1103 is 1031 run/0: ingredient 1 is data @@ -185,16 +185,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1104 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1104 is 1034 mem/0: storing 4 in location 1105 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1105 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 1074 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1073 is 1 run/0: ingredient 1 is len @@ -202,13 +202,13 @@ mem/0: location 1074 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1075 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1075 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full @@ -218,7 +218,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1076 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1076 is 0 run/0: ingredient 1 is tmp @@ -226,18 +226,18 @@ mem/0: location 1073 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1077 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1077 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction write/5 -run/0: break-unless {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is data @@ -247,7 +247,7 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1045 run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free @@ -255,7 +255,7 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1046 run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} run/0: ingredient 0 is circular-buffer mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} @@ -265,13 +265,13 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1047 run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy {name: "val", value: 2, type: 1, properties: ["val": "location"]} +run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} run/0: ingredient 0 is val mem/0: location 1042 is 34 mem/0: location 1047 is 1035 mem/0: storing 34 in location 1035 run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 0 @@ -280,11 +280,11 @@ run/0: product 0 is 1 mem/0: location 1046 is 1032 mem/0: storing 1 in location 1032 run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} +run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} mem/0: location 1045 is 1034 mem/0: storing 4 in location 1048 run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is free mem/0: location 1046 is 1032 mem/0: location 1032 is 1 @@ -293,29 +293,29 @@ mem/0: location 1048 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction write/17 -run/0: break-unless {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 19 run/0: instruction write/20 -run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} mem/0: location 1041 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1132 run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1134 run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1134 is 1031 run/0: ingredient 1 is first-full @@ -325,7 +325,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1135 run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1134 is 1031 run/0: ingredient 1 is first-free @@ -335,7 +335,7 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1136 run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} +run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} run/0: ingredient 0 is full mem/0: location 1135 is 0 run/0: ingredient 1 is free @@ -343,23 +343,23 @@ mem/0: location 1136 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1137 run/0: instruction channel-empty?/5 -run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} mem/0: location 1137 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 2 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} mem/0: location 1 is 1031 run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1163 run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1165 run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} run/0: ingredient 0 is chan mem/0: location 1165 is 1031 run/0: ingredient 1 is first-free @@ -369,25 +369,25 @@ mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1166 run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is tmp mem/0: location 1166 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1166 run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} +run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} mem/0: location 1165 is 1031 run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1194 run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient +run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1196 run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} +run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is chan mem/0: location 1196 is 1031 run/0: ingredient 1 is data @@ -397,16 +397,16 @@ mem/0: location 1033 is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1197 run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} +run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/27 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} mem/0: location 1197 is 1034 mem/0: storing 4 in location 1198 run/0: instruction channel-capacity/4 -run/0: reply {name: "result", value: 3, type: 1, properties: ["result": "integer"]} +run/0: reply/32 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} mem/0: location 1198 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 1167 run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} +run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} run/0: ingredient 0 is tmp mem/0: location 1166 is 2 run/0: ingredient 1 is len @@ -414,13 +414,13 @@ mem/0: location 1167 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1168 run/0: instruction channel-full?/7 -run/0: break-unless {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1168 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 9 run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} +run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/23 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} run/0: ingredient 0 is chan mem/0: location 1165 is 1031 run/0: ingredient 1 is first-full @@ -430,7 +430,7 @@ mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1169 run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} +run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} run/0: ingredient 0 is full mem/0: location 1169 is 0 run/0: ingredient 1 is tmp @@ -438,12 +438,12 @@ mem/0: location 1166 is 2 run/0: product 0 is 0 mem/0: storing 0 in location 1170 run/0: instruction channel-full?/12 -run/0: reply {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} mem/0: location 1170 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 3 run/0: instruction channel-write-not-empty/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 0 # empty? 3 <- 0 # full? ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/check_string_in_memory b/cpp/.traces/check_string_in_memory index 277d3396..bffcabc6 100644 --- a/cpp/.traces/check_string_in_memory +++ b/cpp/.traces/check_string_in_memory @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: check_string_in_memory run/0: instruction check_string_in_memory/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- copy 3:literal 2:character <- copy 97:literal # 'a' 3:character <- copy 98:literal # 'b' @@ -51,23 +51,23 @@ after-brace/0: copy ... after-brace/0: copy ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- copy {name: "97", value: 97, type: 0, properties: ["97": "literal"]} +run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- copy/1 {name: "97", value: 97, type: 0, properties: ["97": "literal"]} run/0: ingredient 0 is 97 mem/0: storing 97 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 4, properties: ["3": "character"]} <- copy {name: "98", value: 98, type: 0, properties: ["98": "literal"]} +run/0: {name: "3", value: 3, type: 4, properties: ["3": "character"]} <- copy/1 {name: "98", value: 98, type: 0, properties: ["98": "literal"]} run/0: ingredient 0 is 98 mem/0: storing 98 in location 3 run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 4, properties: ["4": "character"]} <- copy {name: "99", value: 99, type: 0, properties: ["99": "literal"]} +run/0: {name: "4", value: 4, type: 4, properties: ["4": "character"]} <- copy/1 {name: "99", value: 99, type: 0, properties: ["99": "literal"]} run/0: ingredient 0 is 99 mem/0: storing 99 in location 4 run/0: instruction check_string_in_memory/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1:string <- [abc] ", value: 0, type: 0, properties: [" 1:string <- [abc] diff --git a/cpp/.traces/check_trace b/cpp/.traces/check_trace index c0e19982..e6f6c360 100644 --- a/cpp/.traces/check_trace +++ b/cpp/.traces/check_trace @@ -16,7 +16,7 @@ after-brace/0: trace-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: check_trace run/0: instruction check_trace/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- add 2:literal, 2:literal ", value: 0, type: 0, properties: [" 1:integer <- add 2:literal, 2:literal @@ -28,13 +28,13 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: add ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction check_trace/1 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " mem: storing 4 in location 1 ", value: 0, type: 0, properties: [" mem: storing 4 in location 1 diff --git a/cpp/.traces/check_trace_instruction b/cpp/.traces/check_trace_instruction index 08417a62..ef94da20 100644 --- a/cpp/.traces/check_trace_instruction +++ b/cpp/.traces/check_trace_instruction @@ -16,7 +16,7 @@ after-brace/0: trace-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: check_trace_instruction run/0: instruction check_trace_instruction/0 -run/0: run {name: " +run/0: run/42 {name: " trace [foo], [aaa] ", value: 0, type: 0, properties: [" trace [foo], [aaa] @@ -27,10 +27,10 @@ parse/0: ingredient: {name: "aaa", value: 0, type: 0, properties: ["aaa": "lit after-brace/0: recipe run1001 after-brace/0: trace ... run/0: instruction run1001/0 -run/0: trace {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "aaa", value: 0, type: 0, properties: ["aaa": "literal-string"]} +run/0: trace/18 {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "aaa", value: 0, type: 0, properties: ["aaa": "literal-string"]} foo/0: aaa run/0: instruction check_trace_instruction/1 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " foo: aaa ", value: 0, type: 0, properties: [" foo: aaa diff --git a/cpp/.traces/check_trace_negative b/cpp/.traces/check_trace_negative index 2d6c6dd5..1912420a 100644 --- a/cpp/.traces/check_trace_negative +++ b/cpp/.traces/check_trace_negative @@ -16,7 +16,7 @@ after-brace/0: trace-should-not-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: check_trace_negative run/0: instruction check_trace_negative/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- add 2:literal, 2:literal ", value: 0, type: 0, properties: [" 1:integer <- add 2:literal, 2:literal @@ -28,13 +28,13 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: add ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction check_trace_negative/1 -run/0: trace-should-not-contain {name: " +run/0: trace-should-not-contain/45 {name: " mem: storing 5 in location 1 ", value: 0, type: 0, properties: [" mem: storing 5 in location 1 diff --git a/cpp/.traces/clear-line-erases-printed-characters b/cpp/.traces/clear-line-erases-printed-characters index 76e0c603..25eb1b97 100644 --- a/cpp/.traces/clear-line-erases-printed-characters +++ b/cpp/.traces/clear-line-erases-printed-characters @@ -46,7 +46,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: clear-line-erases-printed-characters run/0: instruction clear-line-erases-printed-characters/0 -run/0: run {name: " +run/0: run/42 {name: " #? $start-tracing #? 3 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height # print a character @@ -101,17 +101,17 @@ after-brace/0: clear-line ... after-brace/0: get ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} +run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen/115 {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} +run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/41 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is num-columns @@ -119,12 +119,12 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1003 run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient +run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: location 1003 is 1032 mem/0: storing 3 in location 1032 run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} +run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is num-rows @@ -132,12 +132,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1004 run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient +run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: location 1004 is 1031 mem/0: storing 2 in location 1031 run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is cursor-row @@ -145,12 +145,12 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1005 run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1005 is 1033 mem/0: storing 0 in location 1033 run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is cursor-column @@ -158,12 +158,12 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1006 run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1006 is 1034 mem/0: storing 0 in location 1034 run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} +run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} run/0: ingredient 0 is width mem/0: location 1003 is 1032 mem/0: location 1032 is 3 @@ -174,7 +174,7 @@ run/0: ingredient 1 is 2 run/0: product 0 is 6 mem/0: storing 6 in location 1007 run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -182,30 +182,30 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1008 run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} +run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/41 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} mem/0: location 1007 is 6 mem/0: array size is 6 mem/0: new alloc: 1036 mem/0: location 1008 is 1035 mem/0: storing 1036 in location 1035 run/0: instruction init-fake-screen/13 -run/0: clear-screen {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} +run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} mem/0: location 1002 is 1031 run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1043 run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1045 run/0: instruction clear-screen/3 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} mem/0: location 1045 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1045 is 1031 run/0: ingredient 1 is data @@ -215,15 +215,15 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1046 run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} +run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1046 is 1036 mem/0: storing 6 in location 1047 run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1048 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 0 run/0: ingredient 1 is max @@ -231,12 +231,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -245,23 +245,23 @@ run/0: address to copy is 1037 run/0: product 0 is 1037 mem/0: storing 1037 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1037 mem/0: storing 0 in location 1037 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 1 run/0: ingredient 1 is max @@ -269,12 +269,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -283,23 +283,23 @@ run/0: address to copy is 1038 run/0: product 0 is 1038 mem/0: storing 1038 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1038 mem/0: storing 0 in location 1038 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 2 run/0: ingredient 1 is max @@ -307,12 +307,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -321,23 +321,23 @@ run/0: address to copy is 1039 run/0: product 0 is 1039 mem/0: storing 1039 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1039 mem/0: storing 0 in location 1039 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 3 run/0: ingredient 1 is max @@ -345,12 +345,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -359,23 +359,23 @@ run/0: address to copy is 1040 run/0: product 0 is 1040 mem/0: storing 1040 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1040 mem/0: storing 0 in location 1040 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 4 run/0: ingredient 1 is max @@ -383,12 +383,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -397,23 +397,23 @@ run/0: address to copy is 1041 run/0: product 0 is 1041 mem/0: storing 1041 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1041 mem/0: storing 0 in location 1041 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 5 run/0: ingredient 1 is max @@ -421,12 +421,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -435,23 +435,23 @@ run/0: address to copy is 1042 run/0: product 0 is 1042 mem/0: storing 1042 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1042 mem/0: storing 0 in location 1042 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 6 run/0: ingredient 1 is max @@ -459,41 +459,41 @@ mem/0: location 1047 is 6 run/0: product 0 is 1 mem/0: storing 1 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 14 run/0: instruction clear-screen/15 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1045 is 1031 run/0: instruction init-fake-screen/14 -run/0: reply {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} +run/0: reply/32 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} +run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character/117 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} mem/0: location 1 is 1031 run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1074 run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1076 run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 97 mem/0: storing 97 in location 1077 run/0: instruction print-character/4 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} mem/0: location 1076 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is cursor-row @@ -501,7 +501,7 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1078 run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is cursor-column @@ -509,7 +509,7 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1079 run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is num-columns @@ -519,7 +519,7 @@ mem/0: location 1032 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1080 run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is row mem/0: location 1078 is 1033 mem/0: location 1033 is 0 @@ -529,7 +529,7 @@ run/0: ingredient 1 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1081 run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} run/0: ingredient 0 is index mem/0: location 1081 is 0 run/0: ingredient 1 is column @@ -538,7 +538,7 @@ mem/0: location 1034 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1081 run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is data @@ -548,7 +548,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1082 run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/26 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} run/0: ingredient 0 is buf mem/0: location 1082 is 1036 run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} @@ -557,13 +557,13 @@ run/0: address to copy is 1037 run/0: product 0 is 1037 mem/0: storing 1037 in location 1083 run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1077 is 97 mem/0: location 1083 is 1037 mem/0: storing 97 in location 1037 run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is column mem/0: location 1079 is 1034 mem/0: location 1034 is 0 @@ -572,12 +572,12 @@ mem/0: location 1080 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1084 run/0: instruction print-character/15 -run/0: break-if {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1084 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is column mem/0: location 1079 is 1034 mem/0: location 1034 is 0 @@ -586,36 +586,36 @@ run/0: product 0 is 1 mem/0: location 1079 is 1034 mem/0: storing 1 in location 1034 run/0: instruction print-character/18 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1076 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- move-cursor {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]} +run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- move-cursor/120 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]} mem/0: location 1 is 1031 run/0: instruction move-cursor/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1105 run/0: instruction move-cursor/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1107 run/0: instruction move-cursor/2 -run/0: {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} <- next-ingredient +run/0: {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1108 run/0: instruction move-cursor/3 -run/0: {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} <- next-ingredient +run/0: {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1109 run/0: instruction move-cursor/5 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1107 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction move-cursor/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is x mem/0: location 1107 is 1031 run/0: ingredient 1 is cursor-row @@ -623,13 +623,13 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1110 run/0: instruction move-cursor/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} +run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} run/0: ingredient 0 is new-row mem/0: location 1108 is 0 mem/0: location 1110 is 1033 mem/0: storing 0 in location 1033 run/0: instruction move-cursor/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1107 is 1031 run/0: ingredient 1 is cursor-column @@ -637,34 +637,34 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1111 run/0: instruction move-cursor/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} +run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} run/0: ingredient 0 is new-column mem/0: location 1109 is 0 mem/0: location 1111 is 1034 mem/0: storing 0 in location 1034 run/0: instruction move-cursor/10 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1107 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/3 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- clear-line {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} +run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- clear-line/118 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} mem/0: location 1 is 1031 run/0: instruction clear-line/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1136 run/0: instruction clear-line/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1138 run/0: instruction clear-line/3 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 11, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 11, type: , properties: ["": ]} mem/0: location 1138 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction clear-line/4 -run/0: {name: "n", value: 2, type: 1, properties: ["n": "integer"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "n", value: 2, type: 1, properties: ["n": "integer"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is x mem/0: location 1138 is 1031 run/0: ingredient 1 is num-columns @@ -674,7 +674,7 @@ mem/0: location 1032 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1139 run/0: instruction clear-line/5 -run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1138 is 1031 run/0: ingredient 1 is cursor-column @@ -682,13 +682,13 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1140 run/0: instruction clear-line/6 -run/0: {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} <- copy {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} +run/0: {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} <- copy/1 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} run/0: ingredient 0 is column mem/0: location 1140 is 1034 mem/0: location 1034 is 0 mem/0: storing 0 in location 1141 run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} run/0: ingredient 0 is column mem/0: location 1140 is 1034 mem/0: location 1034 is 0 @@ -697,32 +697,32 @@ mem/0: location 1139 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1142 run/0: instruction clear-line/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1142 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-line/10 -run/0: print-character {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} mem/0: location 1138 is 1031 run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1167 run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1169 run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1170 run/0: instruction print-character/4 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} mem/0: location 1169 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is x mem/0: location 1169 is 1031 run/0: ingredient 1 is cursor-row @@ -730,7 +730,7 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1171 run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1169 is 1031 run/0: ingredient 1 is cursor-column @@ -738,7 +738,7 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1172 run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is x mem/0: location 1169 is 1031 run/0: ingredient 1 is num-columns @@ -748,7 +748,7 @@ mem/0: location 1032 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1173 run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is row mem/0: location 1171 is 1033 mem/0: location 1033 is 0 @@ -758,7 +758,7 @@ run/0: ingredient 1 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1174 run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} run/0: ingredient 0 is index mem/0: location 1174 is 0 run/0: ingredient 1 is column @@ -767,7 +767,7 @@ mem/0: location 1034 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1174 run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1169 is 1031 run/0: ingredient 1 is data @@ -777,7 +777,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1175 run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/26 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} run/0: ingredient 0 is buf mem/0: location 1175 is 1036 run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} @@ -786,13 +786,13 @@ run/0: address to copy is 1037 run/0: product 0 is 1037 mem/0: storing 1037 in location 1176 run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1170 is 0 mem/0: location 1176 is 1037 mem/0: storing 0 in location 1037 run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is column mem/0: location 1172 is 1034 mem/0: location 1034 is 0 @@ -801,12 +801,12 @@ mem/0: location 1173 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1177 run/0: instruction print-character/15 -run/0: break-if {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1177 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is column mem/0: location 1172 is 1034 mem/0: location 1034 is 0 @@ -815,14 +815,14 @@ run/0: product 0 is 1 mem/0: location 1172 is 1034 mem/0: storing 1 in location 1034 run/0: instruction print-character/18 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1169 is 1031 run/0: instruction clear-line/11 -run/0: loop {name: "", value: -4, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} run/0: ingredient 0 is -4 run/0: jumping to instruction 8 run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} run/0: ingredient 0 is column mem/0: location 1140 is 1034 mem/0: location 1034 is 1 @@ -831,32 +831,32 @@ mem/0: location 1139 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1142 run/0: instruction clear-line/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1142 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-line/10 -run/0: print-character {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} mem/0: location 1138 is 1031 run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1198 run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1200 run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1201 run/0: instruction print-character/4 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} mem/0: location 1200 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is x mem/0: location 1200 is 1031 run/0: ingredient 1 is cursor-row @@ -864,7 +864,7 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1202 run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1200 is 1031 run/0: ingredient 1 is cursor-column @@ -872,7 +872,7 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1203 run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is x mem/0: location 1200 is 1031 run/0: ingredient 1 is num-columns @@ -882,7 +882,7 @@ mem/0: location 1032 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1204 run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is row mem/0: location 1202 is 1033 mem/0: location 1033 is 0 @@ -892,7 +892,7 @@ run/0: ingredient 1 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1205 run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} run/0: ingredient 0 is index mem/0: location 1205 is 0 run/0: ingredient 1 is column @@ -901,7 +901,7 @@ mem/0: location 1034 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1205 run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1200 is 1031 run/0: ingredient 1 is data @@ -911,7 +911,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1206 run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/26 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} run/0: ingredient 0 is buf mem/0: location 1206 is 1036 run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} @@ -920,13 +920,13 @@ run/0: address to copy is 1038 run/0: product 0 is 1038 mem/0: storing 1038 in location 1207 run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1201 is 0 mem/0: location 1207 is 1038 mem/0: storing 0 in location 1038 run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is column mem/0: location 1203 is 1034 mem/0: location 1034 is 1 @@ -935,12 +935,12 @@ mem/0: location 1204 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1208 run/0: instruction print-character/15 -run/0: break-if {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1208 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is column mem/0: location 1203 is 1034 mem/0: location 1034 is 1 @@ -949,14 +949,14 @@ run/0: product 0 is 2 mem/0: location 1203 is 1034 mem/0: storing 2 in location 1034 run/0: instruction print-character/18 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1200 is 1031 run/0: instruction clear-line/11 -run/0: loop {name: "", value: -4, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} run/0: ingredient 0 is -4 run/0: jumping to instruction 8 run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} run/0: ingredient 0 is column mem/0: location 1140 is 1034 mem/0: location 1034 is 2 @@ -965,32 +965,32 @@ mem/0: location 1139 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1142 run/0: instruction clear-line/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1142 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-line/10 -run/0: print-character {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} mem/0: location 1138 is 1031 run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1229 run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1231 run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1232 run/0: instruction print-character/4 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} mem/0: location 1231 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is x mem/0: location 1231 is 1031 run/0: ingredient 1 is cursor-row @@ -998,7 +998,7 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1233 run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1231 is 1031 run/0: ingredient 1 is cursor-column @@ -1006,7 +1006,7 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1234 run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is x mem/0: location 1231 is 1031 run/0: ingredient 1 is num-columns @@ -1016,7 +1016,7 @@ mem/0: location 1032 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1235 run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is row mem/0: location 1233 is 1033 mem/0: location 1033 is 0 @@ -1026,7 +1026,7 @@ run/0: ingredient 1 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1236 run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} run/0: ingredient 0 is index mem/0: location 1236 is 0 run/0: ingredient 1 is column @@ -1035,7 +1035,7 @@ mem/0: location 1034 is 2 run/0: product 0 is 2 mem/0: storing 2 in location 1236 run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1231 is 1031 run/0: ingredient 1 is data @@ -1045,7 +1045,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1237 run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/26 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} run/0: ingredient 0 is buf mem/0: location 1237 is 1036 run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} @@ -1054,13 +1054,13 @@ run/0: address to copy is 1039 run/0: product 0 is 1039 mem/0: storing 1039 in location 1238 run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1232 is 0 mem/0: location 1238 is 1039 mem/0: storing 0 in location 1039 run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is column mem/0: location 1234 is 1034 mem/0: location 1034 is 2 @@ -1069,12 +1069,12 @@ mem/0: location 1235 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1239 run/0: instruction print-character/15 -run/0: break-if {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1239 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is column mem/0: location 1234 is 1034 mem/0: location 1034 is 2 @@ -1083,14 +1083,14 @@ run/0: product 0 is 3 mem/0: location 1234 is 1034 mem/0: storing 3 in location 1034 run/0: instruction print-character/18 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1231 is 1031 run/0: instruction clear-line/11 -run/0: loop {name: "", value: -4, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} run/0: ingredient 0 is -4 run/0: jumping to instruction 8 run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} run/0: ingredient 0 is column mem/0: location 1140 is 1034 mem/0: location 1034 is 3 @@ -1099,24 +1099,24 @@ mem/0: location 1139 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1142 run/0: instruction clear-line/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1142 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 12 run/0: instruction clear-line/13 -run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} +run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} run/0: ingredient 0 is original-column mem/0: location 1141 is 0 mem/0: location 1140 is 1034 mem/0: storing 0 in location 1034 run/0: instruction clear-line/14 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1138 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/4 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get/23 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is data @@ -1126,7 +1126,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 2 run/0: instruction run1001/5 -run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} +run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy/1 {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} run/0: ingredient 0 is 2 mem/0: location 2 is 1036 mem/0: location 1036 is 6 @@ -1144,7 +1144,7 @@ mem/0: storing 0 in location 7 mem/0: storing 0 in location 8 mem/0: storing 0 in location 9 run/0: instruction clear-line-erases-printed-characters/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 6 # width*height 4 <- 0 5 <- 0 diff --git a/cpp/.traces/closure b/cpp/.traces/closure index de197db2..3ee1eb17 100644 --- a/cpp/.traces/closure +++ b/cpp/.traces/closure @@ -63,78 +63,78 @@ after-brace/0: reply ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} <- init-counter +run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} <- init-counter/1001 run/0: instruction init-counter/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1031 run/0: instruction init-counter/1 -run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 1033 run/0: instruction init-counter/2 -run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1034 run/0: instruction init-counter/3 -run/0: reply {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} +run/0: reply/32 {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} run/0: result 0 is 1031 mem/0: storing 1031 in location 1002 run/0: instruction main/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer", "raw": ]} <- increment-counter {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer", "raw": ]} <- increment-counter/1002 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} mem/0: location 1002 is 1031 run/0: instruction increment-counter/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "space", value: 0, type: 0, properties: ["space": "literal"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "space", value: 0, type: 0, properties: ["space": "literal"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1062 run/0: instruction increment-counter/1 -run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} <- next-ingredient +run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1063 run/0: instruction increment-counter/2 -run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} <- add {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} <- add/2 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is y mem/0: location 1034 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1034 run/0: instruction increment-counter/3 -run/0: {name: "y", value: 1, type: 1, properties: ["y": "integer"]} <- copy {name: "234", value: 234, type: 0, properties: ["234": "literal"]} +run/0: {name: "y", value: 1, type: 1, properties: ["y": "integer"]} <- copy/1 {name: "234", value: 234, type: 0, properties: ["234": "literal"]} run/0: ingredient 0 is 234 mem/0: storing 234 in location 1064 run/0: instruction increment-counter/4 -run/0: reply {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} +run/0: reply/32 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} mem/0: location 1034 is 4 run/0: result 0 is 4 mem/0: storing 4 in location 2 run/0: instruction main/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer", "raw": ]} <- increment-counter {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer", "raw": ]} <- increment-counter/1002 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} mem/0: location 1002 is 1031 run/0: instruction increment-counter/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "space", value: 0, type: 0, properties: ["space": "literal"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "space", value: 0, type: 0, properties: ["space": "literal"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1093 run/0: instruction increment-counter/1 -run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} <- next-ingredient +run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1094 run/0: instruction increment-counter/2 -run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} <- add {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} <- add/2 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is y mem/0: location 1034 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1034 run/0: instruction increment-counter/3 -run/0: {name: "y", value: 1, type: 1, properties: ["y": "integer"]} <- copy {name: "234", value: 234, type: 0, properties: ["234": "literal"]} +run/0: {name: "y", value: 1, type: 1, properties: ["y": "integer"]} <- copy/1 {name: "234", value: 234, type: 0, properties: ["234": "literal"]} run/0: ingredient 0 is 234 mem/0: storing 234 in location 1095 run/0: instruction increment-counter/4 -run/0: reply {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} +run/0: reply/32 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} mem/0: location 1034 is 5 run/0: result 0 is 5 mem/0: storing 5 in location 3 diff --git a/cpp/.traces/convert_names b/cpp/.traces/convert_names index 96e8a0f8..5420908d 100644 --- a/cpp/.traces/convert_names +++ b/cpp/.traces/convert_names @@ -7,6 +7,6 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1 diff --git a/cpp/.traces/convert_names_passes_default_space b/cpp/.traces/convert_names_passes_default_space index b26d843a..1897c72a 100644 --- a/cpp/.traces/convert_names_passes_default_space +++ b/cpp/.traces/convert_names_passes_default_space @@ -8,5 +8,5 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "default-space", value: 0, type: 1, properties: ["default-space": "integer"]}, {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "default-space", value: 0, type: 1, properties: ["default-space": "integer"]}, {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 diff --git a/cpp/.traces/convert_names_passes_dummy b/cpp/.traces/convert_names_passes_dummy index c0fe17de..6a79d0a3 100644 --- a/cpp/.traces/convert_names_passes_dummy +++ b/cpp/.traces/convert_names_passes_dummy @@ -8,5 +8,5 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 diff --git a/cpp/.traces/convert_names_passes_raw b/cpp/.traces/convert_names_passes_raw index 6e25c354..bb1c42ae 100644 --- a/cpp/.traces/convert_names_passes_raw +++ b/cpp/.traces/convert_names_passes_raw @@ -6,6 +6,6 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "x", value: 0, type: 1, properties: ["x": "integer", "raw": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "x", value: 0, type: 1, properties: ["x": "integer", "raw": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 0 diff --git a/cpp/.traces/convert_names_transforms_container_elements b/cpp/.traces/convert_names_transforms_container_elements index 5cf58994..ec1ba6a8 100644 --- a/cpp/.traces/convert_names_transforms_container_elements +++ b/cpp/.traces/convert_names_transforms_container_elements @@ -16,7 +16,7 @@ after-brace/0: get ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "a", value: 1, type: 1, properties: ["a": "integer"]} <- get {name: "0", value: 0, type: 6, properties: ["0": "point"]}, {name: "y", value: 1, type: 0, properties: ["y": "offset"]} +run/0: {name: "a", value: 1, type: 1, properties: ["a": "integer"]} <- get/23 {name: "0", value: 0, type: 6, properties: ["0": "point"]}, {name: "y", value: 1, type: 0, properties: ["y": "offset"]} run/0: ingredient 0 is 0 run/0: ingredient 1 is y run/0: address to copy is 1 @@ -25,7 +25,7 @@ mem/0: location 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1 run/0: instruction main/1 -run/0: {name: "b", value: 2, type: 1, properties: ["b": "integer"]} <- get {name: "0", value: 0, type: 6, properties: ["0": "point"]}, {name: "x", value: 0, type: 0, properties: ["x": "offset"]} +run/0: {name: "b", value: 2, type: 1, properties: ["b": "integer"]} <- get/23 {name: "0", value: 0, type: 6, properties: ["0": "point"]}, {name: "x", value: 0, type: 0, properties: ["x": "offset"]} run/0: ingredient 0 is 0 run/0: ingredient 1 is x run/0: address to copy is 0 diff --git a/cpp/.traces/convert_names_warns b/cpp/.traces/convert_names_warns index bd98273a..53b84c52 100644 --- a/cpp/.traces/convert_names_warns +++ b/cpp/.traces/convert_names_warns @@ -9,7 +9,7 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy {name: "y", value: 0, type: 1, properties: ["y": "integer"]} +run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "y", value: 0, type: 1, properties: ["y": "integer"]} run/0: ingredient 0 is y mem/0: location 0 is 0 mem/0: storing 0 in location 1 diff --git a/cpp/.traces/copy b/cpp/.traces/copy index e8cd036f..ce833903 100644 --- a/cpp/.traces/copy +++ b/cpp/.traces/copy @@ -10,11 +10,11 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 23 mem/0: storing 23 in location 2 diff --git a/cpp/.traces/copy_array b/cpp/.traces/copy_array index 4acd43fe..00c78037 100644 --- a/cpp/.traces/copy_array +++ b/cpp/.traces/copy_array @@ -22,23 +22,23 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 5-1, properties: ["5": "array":"integer"]} <- copy {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} +run/0: {name: "5", value: 5, type: 5-1, properties: ["5": "array":"integer"]} <- copy/1 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 3 mem/0: location 2 is 14 diff --git a/cpp/.traces/copy_array_indirect b/cpp/.traces/copy_array_indirect index 1ffcac68..a32cbfc9 100644 --- a/cpp/.traces/copy_array_indirect +++ b/cpp/.traces/copy_array_indirect @@ -26,27 +26,27 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 5 run/0: instruction main/5 -run/0: {name: "6", value: 6, type: 5-1, properties: ["6": "array":"integer"]} <- copy {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} +run/0: {name: "6", value: 6, type: 5-1, properties: ["6": "array":"integer"]} <- copy/1 {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} run/0: ingredient 0 is 5 mem/0: location 5 is 1 mem/0: location 1 is 3 diff --git a/cpp/.traces/copy_exclusive_container b/cpp/.traces/copy_exclusive_container index 46d3b69b..3cc5ea54 100644 --- a/cpp/.traces/copy_exclusive_container +++ b/cpp/.traces/copy_exclusive_container @@ -18,19 +18,19 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 8, properties: ["4": "integer-or-point"]} <- copy {name: "1", value: 1, type: 8, properties: ["1": "integer-or-point"]} +run/0: {name: "4", value: 4, type: 8, properties: ["4": "integer-or-point"]} <- copy/1 {name: "1", value: 1, type: 8, properties: ["1": "integer-or-point"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1 mem/0: location 2 is 34 diff --git a/cpp/.traces/copy_handles_nested_container_elements b/cpp/.traces/copy_handles_nested_container_elements index 726ba849..b8a57d73 100644 --- a/cpp/.traces/copy_handles_nested_container_elements +++ b/cpp/.traces/copy_handles_nested_container_elements @@ -18,19 +18,19 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy {name: "36", value: 36, type: 0, properties: ["36": "literal"]} +run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} run/0: ingredient 0 is 36 mem/0: storing 36 in location 14 run/0: instruction main/3 -run/0: {name: "15", value: 15, type: 7, properties: ["15": "point-integer"]} <- copy {name: "12", value: 12, type: 7, properties: ["12": "point-integer"]} +run/0: {name: "15", value: 15, type: 7, properties: ["15": "point-integer"]} <- copy/1 {name: "12", value: 12, type: 7, properties: ["12": "point-integer"]} run/0: ingredient 0 is 12 mem/0: location 12 is 34 mem/0: location 13 is 35 diff --git a/cpp/.traces/copy_indirect b/cpp/.traces/copy_indirect index 0b093016..2c5ae938 100644 --- a/cpp/.traces/copy_indirect +++ b/cpp/.traces/copy_indirect @@ -14,15 +14,15 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 mem/0: storing 2 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 2 mem/0: location 2 is 34 diff --git a/cpp/.traces/copy_literal b/cpp/.traces/copy_literal index 553aa000..3a25bf98 100644 --- a/cpp/.traces/copy_literal +++ b/cpp/.traces/copy_literal @@ -6,6 +6,6 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 1 diff --git a/cpp/.traces/copy_multiple_locations b/cpp/.traces/copy_multiple_locations index a6df00c4..8014b483 100644 --- a/cpp/.traces/copy_multiple_locations +++ b/cpp/.traces/copy_multiple_locations @@ -14,15 +14,15 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 6, properties: ["3": "point"]} <- copy {name: "1", value: 1, type: 6, properties: ["1": "point"]} +run/0: {name: "3", value: 3, type: 6, properties: ["3": "point"]} <- copy/1 {name: "1", value: 1, type: 6, properties: ["1": "point"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 mem/0: location 2 is 35 diff --git a/cpp/.traces/deref_sidesteps_default_space b/cpp/.traces/deref_sidesteps_default_space index f5912fa2..0592d082 100644 --- a/cpp/.traces/deref_sidesteps_default_space +++ b/cpp/.traces/deref_sidesteps_default_space @@ -22,22 +22,22 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 3 run/0: instruction main/1 -run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 1000 run/0: instruction main/2 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} run/0: ingredient 0 is 1000 run/0: instruction main/3 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1002 run/0: instruction main/4 -run/0: {name: "8", value: 8, type: 1, properties: ["8": "integer", "raw": ]} <- copy {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} +run/0: {name: "8", value: 8, type: 1, properties: ["8": "integer", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} run/0: ingredient 0 is 1 mem/0: location 1002 is 3 mem/0: location 3 is 34 diff --git a/cpp/.traces/deref_sidesteps_default_space_in_get b/cpp/.traces/deref_sidesteps_default_space_in_get index 364977e2..3493fccd 100644 --- a/cpp/.traces/deref_sidesteps_default_space_in_get +++ b/cpp/.traces/deref_sidesteps_default_space_in_get @@ -27,26 +27,26 @@ after-brace/0: get ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 1000 run/0: instruction main/3 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} run/0: ingredient 0 is 1000 run/0: instruction main/4 -run/0: {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point"]} <- copy {name: "12", value: 12, type: 0, properties: ["12": "literal"]} +run/0: {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point"]} <- copy/1 {name: "12", value: 12, type: 0, properties: ["12": "literal"]} run/0: ingredient 0 is 12 mem/0: storing 12 in location 1002 run/0: instruction main/5 -run/0: {name: "9", value: 9, type: 1, properties: ["9": "integer", "raw": ]} <- get {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: {name: "9", value: 9, type: 1, properties: ["9": "integer", "raw": ]} <- get/23 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1002 is 12 run/0: ingredient 1 is 1 diff --git a/cpp/.traces/deref_sidesteps_default_space_in_index b/cpp/.traces/deref_sidesteps_default_space_in_index index 705f2b59..a33f3bfe 100644 --- a/cpp/.traces/deref_sidesteps_default_space_in_index +++ b/cpp/.traces/deref_sidesteps_default_space_in_index @@ -31,30 +31,30 @@ after-brace/0: index ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 mem/0: storing 2 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 13 run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 14 run/0: instruction main/3 -run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 1000 run/0: instruction main/4 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} run/0: ingredient 0 is 1000 run/0: instruction main/5 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer"]} <- copy {name: "12", value: 12, type: 0, properties: ["12": "literal"]} +run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer"]} <- copy/1 {name: "12", value: 12, type: 0, properties: ["12": "literal"]} run/0: ingredient 0 is 12 mem/0: storing 12 in location 1002 run/0: instruction main/6 -run/0: {name: "9", value: 9, type: 1, properties: ["9": "integer", "raw": ]} <- index {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "9", value: 9, type: 1, properties: ["9": "integer", "raw": ]} <- index/25 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "deref": ]} mem/0: location 1002 is 12 run/0: ingredient 1 is {name: "1", value: 1, type: 0, properties: ["1": "literal"]} diff --git a/cpp/.traces/divide b/cpp/.traces/divide index 9d83a35e..902b84e3 100644 --- a/cpp/.traces/divide +++ b/cpp/.traces/divide @@ -15,15 +15,15 @@ after-brace/0: divide ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "27", value: 27, type: 0, properties: ["27": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "27", value: 27, type: 0, properties: ["27": "literal"]} run/0: ingredient 0 is 27 mem/0: storing 27 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- divide {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- divide/5 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 27 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/divide_literal b/cpp/.traces/divide_literal index 40578702..81ed7530 100644 --- a/cpp/.traces/divide_literal +++ b/cpp/.traces/divide_literal @@ -7,7 +7,7 @@ after-brace/0: divide ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- divide {name: "8", value: 8, type: 0, properties: ["8": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- divide/5 {name: "8", value: 8, type: 0, properties: ["8": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 8 run/0: ingredient 1 is 2 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/divide_with_remainder b/cpp/.traces/divide_with_remainder index 979e92d3..e99c8cf2 100644 --- a/cpp/.traces/divide_with_remainder +++ b/cpp/.traces/divide_with_remainder @@ -16,15 +16,15 @@ after-brace/0: divide-with-remainder ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "27", value: 27, type: 0, properties: ["27": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "27", value: 27, type: 0, properties: ["27": "literal"]} run/0: ingredient 0 is 27 mem/0: storing 27 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "11", value: 11, type: 0, properties: ["11": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "11", value: 11, type: 0, properties: ["11": "literal"]} run/0: ingredient 0 is 11 mem/0: storing 11 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]}, {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- divide-with-remainder {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]}, {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- divide-with-remainder/6 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 27 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/divide_with_remainder_literal b/cpp/.traces/divide_with_remainder_literal index a06d9e34..a401ee2e 100644 --- a/cpp/.traces/divide_with_remainder_literal +++ b/cpp/.traces/divide_with_remainder_literal @@ -8,7 +8,7 @@ after-brace/0: divide-with-remainder ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- divide-with-remainder {name: "9", value: 9, type: 0, properties: ["9": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- divide-with-remainder/6 {name: "9", value: 9, type: 0, properties: ["9": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 9 run/0: ingredient 1 is 2 run/0: product 0 is 4 diff --git a/cpp/.traces/equal b/cpp/.traces/equal index 807515a8..52cd0896 100644 --- a/cpp/.traces/equal +++ b/cpp/.traces/equal @@ -15,15 +15,15 @@ after-brace/0: equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/equal2 b/cpp/.traces/equal2 index 7fb70453..6d43f9f1 100644 --- a/cpp/.traces/equal2 +++ b/cpp/.traces/equal2 @@ -15,15 +15,15 @@ after-brace/0: equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/first_scenario_in_mu b/cpp/.traces/first_scenario_in_mu index c02a0dff..46162d13 100644 --- a/cpp/.traces/first_scenario_in_mu +++ b/cpp/.traces/first_scenario_in_mu @@ -16,7 +16,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: first_scenario_in_mu run/0: instruction first_scenario_in_mu/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- add 2:literal, 2:literal ", value: 0, type: 0, properties: [" 1:integer <- add 2:literal, 2:literal @@ -28,13 +28,13 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: add ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction first_scenario_in_mu/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 4 ", value: 0, type: 0, properties: [" 1 <- 4 diff --git a/cpp/.traces/get b/cpp/.traces/get index 1e3db5f3..c8bf9521 100644 --- a/cpp/.traces/get +++ b/cpp/.traces/get @@ -15,15 +15,15 @@ after-brace/0: get ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "15", value: 15, type: 1, properties: ["15": "integer"]} <- get {name: "12", value: 12, type: 6, properties: ["12": "point"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: {name: "15", value: 15, type: 1, properties: ["15": "integer"]} <- get/23 {name: "12", value: 12, type: 6, properties: ["12": "point"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 run/0: address to copy is 13 diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address index 3238f4eb..22702857 100644 --- a/cpp/.traces/get_address +++ b/cpp/.traces/get_address @@ -15,15 +15,15 @@ after-brace/0: get-address ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "15", value: 15, type: 2-1, properties: ["15": "address":"integer"]} <- get-address {name: "12", value: 12, type: 6, properties: ["12": "point"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: {name: "15", value: 15, type: 2-1, properties: ["15": "address":"integer"]} <- get-address/24 {name: "12", value: 12, type: 6, properties: ["12": "point"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 run/0: address to copy is 13 diff --git a/cpp/.traces/get_address_indirect b/cpp/.traces/get_address_indirect index 40f315d2..d986b280 100644 --- a/cpp/.traces/get_address_indirect +++ b/cpp/.traces/get_address_indirect @@ -19,19 +19,19 @@ after-brace/0: get-address ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 mem/0: storing 2 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get-address {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get-address/24 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 0 diff --git a/cpp/.traces/get_default_space b/cpp/.traces/get_default_space index e9a108ab..bb513849 100644 --- a/cpp/.traces/get_default_space +++ b/cpp/.traces/get_default_space @@ -10,9 +10,9 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is 10 run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "raw": ]} <- copy {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "raw": ]} <- copy/1 {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} run/0: ingredient 0 is default-space mem/0: storing 10 in location 1 diff --git a/cpp/.traces/get_handles_nested_container_elements b/cpp/.traces/get_handles_nested_container_elements index c91a14a1..963b25c1 100644 --- a/cpp/.traces/get_handles_nested_container_elements +++ b/cpp/.traces/get_handles_nested_container_elements @@ -19,19 +19,19 @@ after-brace/0: get ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy {name: "36", value: 36, type: 0, properties: ["36": "literal"]} +run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} run/0: ingredient 0 is 36 mem/0: storing 36 in location 14 run/0: instruction main/3 -run/0: {name: "15", value: 15, type: 1, properties: ["15": "integer"]} <- get {name: "12", value: 12, type: 7, properties: ["12": "point-integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: {name: "15", value: 15, type: 1, properties: ["15": "integer"]} <- get/23 {name: "12", value: 12, type: 7, properties: ["12": "point-integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 run/0: address to copy is 14 diff --git a/cpp/.traces/get_indirect b/cpp/.traces/get_indirect index 4a276e98..62c2cdaa 100644 --- a/cpp/.traces/get_indirect +++ b/cpp/.traces/get_indirect @@ -19,19 +19,19 @@ after-brace/0: get ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 mem/0: storing 2 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get/23 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 0 diff --git a/cpp/.traces/greater_or_equal b/cpp/.traces/greater_or_equal index 59f290c0..b03df27c 100644 --- a/cpp/.traces/greater_or_equal +++ b/cpp/.traces/greater_or_equal @@ -15,15 +15,15 @@ after-brace/0: greater-or-equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal/16 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/greater_or_equal2 b/cpp/.traces/greater_or_equal2 index 4f85470f..6cc4e076 100644 --- a/cpp/.traces/greater_or_equal2 +++ b/cpp/.traces/greater_or_equal2 @@ -15,15 +15,15 @@ after-brace/0: greater-or-equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal/16 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/greater_or_equal3 b/cpp/.traces/greater_or_equal3 index 2b43292f..aa0e7f60 100644 --- a/cpp/.traces/greater_or_equal3 +++ b/cpp/.traces/greater_or_equal3 @@ -15,15 +15,15 @@ after-brace/0: greater-or-equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal/16 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/greater_than b/cpp/.traces/greater_than index 211983c3..1a56cb8b 100644 --- a/cpp/.traces/greater_than +++ b/cpp/.traces/greater_than @@ -15,15 +15,15 @@ after-brace/0: greater-than ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-than {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-than/14 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/greater_than2 b/cpp/.traces/greater_than2 index b9ee951e..f352176b 100644 --- a/cpp/.traces/greater_than2 +++ b/cpp/.traces/greater_than2 @@ -15,15 +15,15 @@ after-brace/0: greater-than ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-than {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-than/14 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/include_nonderef_properties b/cpp/.traces/include_nonderef_properties index 7a073504..aa4d3c6b 100644 --- a/cpp/.traces/include_nonderef_properties +++ b/cpp/.traces/include_nonderef_properties @@ -19,19 +19,19 @@ after-brace/0: get ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 mem/0: storing 2 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": , "foo": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get/23 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": , "foo": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 0 diff --git a/cpp/.traces/index b/cpp/.traces/index index ed5c0662..4ba27c97 100644 --- a/cpp/.traces/index +++ b/cpp/.traces/index @@ -23,23 +23,23 @@ after-brace/0: index ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- index {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- index/25 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} run/0: ingredient 1 is {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: address to copy is 2 diff --git a/cpp/.traces/index_address b/cpp/.traces/index_address index 7041c06a..1aaf7fbe 100644 --- a/cpp/.traces/index_address +++ b/cpp/.traces/index_address @@ -23,23 +23,23 @@ after-brace/0: index-address ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- index-address {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- index-address/26 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 1 run/0: ingredient 1 is {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: address to copy is 2 diff --git a/cpp/.traces/index_direct_offset b/cpp/.traces/index_direct_offset index c31f843e..fa0a134a 100644 --- a/cpp/.traces/index_direct_offset +++ b/cpp/.traces/index_direct_offset @@ -27,27 +27,27 @@ after-brace/0: index ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 5 run/0: instruction main/5 -run/0: {name: "6", value: 6, type: 1, properties: ["6": "integer"]} <- index {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "5", value: 5, type: 1, properties: ["5": "integer"]} +run/0: {name: "6", value: 6, type: 1, properties: ["6": "integer"]} <- index/25 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "5", value: 5, type: 1, properties: ["5": "integer"]} run/0: ingredient 0 is {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} run/0: ingredient 1 is {name: "5", value: 5, type: 1, properties: ["5": "integer"]} mem/0: location 5 is 0 diff --git a/cpp/.traces/index_indirect b/cpp/.traces/index_indirect index ef73381b..e610d675 100644 --- a/cpp/.traces/index_indirect +++ b/cpp/.traces/index_indirect @@ -27,27 +27,27 @@ after-brace/0: index ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "14", value: 14, type: 0, properties: ["14": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} run/0: ingredient 0 is 14 mem/0: storing 14 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "15", value: 15, type: 0, properties: ["15": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} run/0: ingredient 0 is 15 mem/0: storing 15 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "16", value: 16, type: 0, properties: ["16": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} run/0: ingredient 0 is 16 mem/0: storing 16 in location 4 run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 5 run/0: instruction main/5 -run/0: {name: "6", value: 6, type: 1, properties: ["6": "integer"]} <- index {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "6", value: 6, type: 1, properties: ["6": "integer"]} <- index/25 {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} mem/0: location 5 is 1 run/0: ingredient 1 is {name: "1", value: 1, type: 0, properties: ["1": "literal"]} diff --git a/cpp/.traces/ingredient b/cpp/.traces/ingredient index 26deed09..a2c3f5aa 100644 --- a/cpp/.traces/ingredient +++ b/cpp/.traces/ingredient @@ -15,11 +15,11 @@ after-brace/0: next-ingredient ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: f {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: f/1001 {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- ingredient {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- ingredient/31 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: product 0 is 2 mem/0: storing 2 in location 12 run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1 diff --git a/cpp/.traces/integer-to-decimal-digit-negative b/cpp/.traces/integer-to-decimal-digit-negative index 890696f4..0f3cc329 100644 --- a/cpp/.traces/integer-to-decimal-digit-negative +++ b/cpp/.traces/integer-to-decimal-digit-negative @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: integer-to-decimal-digit-negative run/0: instruction integer-to-decimal-digit-negative/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- integer-to-decimal-string -1:literal 2:array:character/raw <- copy 1:address:array:character/deref/raw ", value: 0, type: 0, properties: [" @@ -39,43 +39,43 @@ after-brace/0: recipe run1001 after-brace/0: integer-to-decimal-string ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string/105 {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]} run/0: instruction integer-to-decimal-string/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction integer-to-decimal-string/1 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient/29 run/0: product 0 is -1 mem/0: storing -1 in location 1002 run/0: instruction integer-to-decimal-string/3 -run/0: break-if {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1002 is -1 run/0: ingredient 0 is -1 run/0: ingredient 1 is run/0: jumping to instruction 6 run/0: instruction integer-to-decimal-string/7 -run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1004 run/0: instruction integer-to-decimal-string/9 -run/0: {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]} <- lesser-than {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]} <- lesser-than/15 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is -1 run/0: ingredient 1 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1005 run/0: instruction integer-to-decimal-string/10 -run/0: break-unless {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1005 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction integer-to-decimal-string/11 -run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 1004 run/0: instruction integer-to-decimal-string/12 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- multiply {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]} +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- multiply/4 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is -1 run/0: ingredient 1 is -1 @@ -83,17 +83,17 @@ run/0: ingredient 1 is -1 run/0: product 0 is 1 mem/0: storing 1 in location 1002 run/0: instruction integer-to-decimal-string/14 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- init-buffer {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- init-buffer/101 {name: "30", value: 30, type: 0, properties: ["30": "literal"]} run/0: instruction init-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1031 run/0: instruction init-buffer/1 -run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} +run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new/41 {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} mem/0: new alloc: 1062 mem/0: storing 1062 in location 1033 run/0: instruction init-buffer/2 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is result mem/0: location 1033 is 1062 run/0: ingredient 1 is length @@ -101,12 +101,12 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1034 run/0: instruction init-buffer/3 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1034 is 1062 mem/0: storing 0 in location 1062 run/0: instruction init-buffer/4 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address/24 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1033 is 1062 run/0: ingredient 1 is data @@ -114,39 +114,39 @@ run/0: address to copy is 1063 run/0: product 0 is 1063 mem/0: storing 1063 in location 1035 run/0: instruction init-buffer/5 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 30 mem/0: storing 30 in location 1036 run/0: instruction init-buffer/6 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1036 is 30 mem/0: array size is 30 mem/0: new alloc: 1064 mem/0: location 1035 is 1063 mem/0: storing 1064 in location 1063 run/0: instruction init-buffer/7 -run/0: reply {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} +run/0: reply/32 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} mem/0: location 1033 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/15 -run/0: {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]} <- copy {name: "48", value: 48, type: 0, properties: ["48": "literal"]} +run/0: {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]} <- copy/1 {name: "48", value: 48, type: 0, properties: ["48": "literal"]} run/0: ingredient 0 is 48 mem/0: storing 48 in location 1007 run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 1 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/18 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 1 run/0: ingredient 1 is 10 @@ -155,7 +155,7 @@ mem/0: storing 0 in location 1002 run/0: product 1 is 1 mem/0: storing 1 in location 1009 run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} +run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} run/0: ingredient 0 is digit-base mem/0: location 1007 is 48 run/0: ingredient 1 is digit @@ -163,34 +163,34 @@ mem/0: location 1009 is 1 run/0: product 0 is 49 mem/0: storing 49 in location 1010 run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} mem/0: location 1006 is 1062 mem/0: location 1010 is 49 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1095 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1097 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 49 mem/0: storing 49 in location 1098 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1097 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1126 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1128 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1128 is 1062 run/0: ingredient 1 is length @@ -200,7 +200,7 @@ mem/0: location 1062 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1129 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1128 is 1062 run/0: ingredient 1 is data @@ -210,11 +210,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1130 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1130 is 1064 mem/0: storing 30 in location 1131 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1129 is 0 run/0: ingredient 1 is capacity @@ -222,18 +222,18 @@ mem/0: location 1131 is 30 run/0: product 0 is 0 mem/0: storing 0 in location 1132 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1132 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1099 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1099 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1097 is 1062 run/0: ingredient 1 is length @@ -241,7 +241,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1100 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1097 is 1062 run/0: ingredient 1 is data @@ -251,7 +251,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1101 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1101 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -261,13 +261,13 @@ run/0: address to copy is 1065 run/0: product 0 is 1065 mem/0: storing 1065 in location 1102 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1098 is 49 mem/0: location 1102 is 1065 mem/0: storing 49 in location 1065 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1100 is 1062 mem/0: location 1062 is 0 @@ -276,60 +276,60 @@ run/0: product 0 is 1 mem/0: location 1100 is 1062 mem/0: storing 1 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1097 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/22 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 17 run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 0 run/0: ingredient 1 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1008 run/0: instruction integer-to-decimal-string/18 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1008 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 23 run/0: instruction integer-to-decimal-string/25 -run/0: break-unless {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1004 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction integer-to-decimal-string/26 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "45", value: 45, type: 0, properties: ["45": "literal"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "45", value: 45, type: 0, properties: ["45": "literal"]} mem/0: location 1006 is 1062 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1157 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1159 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 45 mem/0: storing 45 in location 1160 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1159 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1188 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1190 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1190 is 1062 run/0: ingredient 1 is length @@ -339,7 +339,7 @@ mem/0: location 1062 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1191 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1190 is 1062 run/0: ingredient 1 is data @@ -349,11 +349,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1192 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1192 is 1064 mem/0: storing 30 in location 1193 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1191 is 1 run/0: ingredient 1 is capacity @@ -361,18 +361,18 @@ mem/0: location 1193 is 30 run/0: product 0 is 0 mem/0: storing 0 in location 1194 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1194 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1161 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1161 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1159 is 1062 run/0: ingredient 1 is length @@ -380,7 +380,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1162 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1159 is 1062 run/0: ingredient 1 is data @@ -390,7 +390,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1163 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1163 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -400,13 +400,13 @@ run/0: address to copy is 1066 run/0: product 0 is 1066 mem/0: storing 1066 in location 1164 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1160 is 45 mem/0: location 1164 is 1066 mem/0: storing 45 in location 1066 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1162 is 1062 mem/0: location 1062 is 1 @@ -415,12 +415,12 @@ run/0: product 0 is 2 mem/0: location 1162 is 1062 mem/0: storing 2 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1159 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/28 -run/0: {name: "len", value: 10, type: 1, properties: ["len": "integer"]} <- get {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 10, type: 1, properties: ["len": "integer"]} <- get/23 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is tmp mem/0: location 1006 is 1062 run/0: ingredient 1 is length @@ -430,7 +430,7 @@ mem/0: location 1062 is 2 run/0: product 0 is 2 mem/0: storing 2 in location 1011 run/0: instruction integer-to-decimal-string/29 -run/0: {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is tmp mem/0: location 1006 is 1062 run/0: ingredient 1 is data @@ -440,36 +440,36 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1012 run/0: instruction integer-to-decimal-string/30 -run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "len", value: 10, type: 1, properties: ["len": "integer"]} +run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "len", value: 10, type: 1, properties: ["len": "integer"]} mem/0: location 1011 is 2 mem/0: array size is 2 mem/0: new alloc: 1219 mem/0: storing 1219 in location 1003 run/0: instruction integer-to-decimal-string/31 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "len", value: 10, type: 1, properties: ["len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "len", value: 10, type: 1, properties: ["len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1011 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1013 run/0: instruction integer-to-decimal-string/32 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1014 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 1 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/25 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} @@ -480,7 +480,7 @@ mem/0: location 1066 is 45 run/0: product 0 is 45 mem/0: storing 45 in location 1015 run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is result mem/0: location 1003 is 1219 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} @@ -489,43 +489,43 @@ run/0: address to copy is 1220 run/0: product 0 is 1220 mem/0: storing 1220 in location 1016 run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 14, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1015 is 45 mem/0: location 1016 is 1220 mem/0: storing 45 in location 1220 run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1013 run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1014 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1014 run/0: instruction integer-to-decimal-string/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 0 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/25 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} @@ -536,7 +536,7 @@ mem/0: location 1065 is 49 run/0: product 0 is 49 mem/0: storing 49 in location 1015 run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is result mem/0: location 1003 is 1219 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} @@ -545,49 +545,49 @@ run/0: address to copy is 1221 run/0: product 0 is 1221 mem/0: storing 1221 in location 1016 run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 14, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1015 is 49 mem/0: location 1016 is 1221 mem/0: storing 49 in location 1221 run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 0 run/0: ingredient 1 is 1 run/0: product 0 is -1 mem/0: storing -1 in location 1013 run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1014 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1014 run/0: instruction integer-to-decimal-string/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is -1 run/0: ingredient 1 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 42 run/0: instruction integer-to-decimal-string/43 -run/0: reply {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1003 is 1219 run/0: result 0 is 1219 mem/0: storing 1219 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} +run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 1219 mem/0: location 1219 is 2 @@ -597,7 +597,7 @@ mem/0: storing 2 in location 2 mem/0: storing 45 in location 3 mem/0: storing 49 in location 4 run/0: instruction integer-to-decimal-digit-negative/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2 <- 2 3 <- 45 # '-' 4 <- 49 # '1' diff --git a/cpp/.traces/integer-to-decimal-digit-positive b/cpp/.traces/integer-to-decimal-digit-positive index d42b63e6..a09aa37a 100644 --- a/cpp/.traces/integer-to-decimal-digit-positive +++ b/cpp/.traces/integer-to-decimal-digit-positive @@ -18,7 +18,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: integer-to-decimal-digit-positive run/0: instruction integer-to-decimal-digit-positive/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- integer-to-decimal-string 234:literal 2:array:character/raw <- copy 1:address:array:character/deref/raw ", value: 0, type: 0, properties: [" @@ -35,50 +35,50 @@ after-brace/0: recipe run1001 after-brace/0: integer-to-decimal-string ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string {name: "234", value: 234, type: 0, properties: ["234": "literal"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string/105 {name: "234", value: 234, type: 0, properties: ["234": "literal"]} run/0: instruction integer-to-decimal-string/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction integer-to-decimal-string/1 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient/29 run/0: product 0 is 234 mem/0: storing 234 in location 1002 run/0: instruction integer-to-decimal-string/3 -run/0: break-if {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1002 is 234 run/0: ingredient 0 is 234 run/0: ingredient 1 is run/0: jumping to instruction 6 run/0: instruction integer-to-decimal-string/7 -run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1004 run/0: instruction integer-to-decimal-string/9 -run/0: {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]} <- lesser-than {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]} <- lesser-than/15 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 234 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1005 run/0: instruction integer-to-decimal-string/10 -run/0: break-unless {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-unless/12 {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1005 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 13 run/0: instruction integer-to-decimal-string/14 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- init-buffer {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- init-buffer/101 {name: "30", value: 30, type: 0, properties: ["30": "literal"]} run/0: instruction init-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1031 run/0: instruction init-buffer/1 -run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} +run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new/41 {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} mem/0: new alloc: 1062 mem/0: storing 1062 in location 1033 run/0: instruction init-buffer/2 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is result mem/0: location 1033 is 1062 run/0: ingredient 1 is length @@ -86,12 +86,12 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1034 run/0: instruction init-buffer/3 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1034 is 1062 mem/0: storing 0 in location 1062 run/0: instruction init-buffer/4 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address/24 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1033 is 1062 run/0: ingredient 1 is data @@ -99,39 +99,39 @@ run/0: address to copy is 1063 run/0: product 0 is 1063 mem/0: storing 1063 in location 1035 run/0: instruction init-buffer/5 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/29 run/0: product 0 is 30 mem/0: storing 30 in location 1036 run/0: instruction init-buffer/6 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} mem/0: location 1036 is 30 mem/0: array size is 30 mem/0: new alloc: 1064 mem/0: location 1035 is 1063 mem/0: storing 1064 in location 1063 run/0: instruction init-buffer/7 -run/0: reply {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} +run/0: reply/32 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} mem/0: location 1033 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/15 -run/0: {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]} <- copy {name: "48", value: 48, type: 0, properties: ["48": "literal"]} +run/0: {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]} <- copy/1 {name: "48", value: 48, type: 0, properties: ["48": "literal"]} run/0: ingredient 0 is 48 mem/0: storing 48 in location 1007 run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 234 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/18 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 234 run/0: ingredient 1 is 10 @@ -140,7 +140,7 @@ mem/0: storing 23 in location 1002 run/0: product 1 is 4 mem/0: storing 4 in location 1009 run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} +run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} run/0: ingredient 0 is digit-base mem/0: location 1007 is 48 run/0: ingredient 1 is digit @@ -148,34 +148,34 @@ mem/0: location 1009 is 4 run/0: product 0 is 52 mem/0: storing 52 in location 1010 run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} mem/0: location 1006 is 1062 mem/0: location 1010 is 52 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1095 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1097 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 52 mem/0: storing 52 in location 1098 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1097 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1126 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1128 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1128 is 1062 run/0: ingredient 1 is length @@ -185,7 +185,7 @@ mem/0: location 1062 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1129 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1128 is 1062 run/0: ingredient 1 is data @@ -195,11 +195,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1130 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1130 is 1064 mem/0: storing 30 in location 1131 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1129 is 0 run/0: ingredient 1 is capacity @@ -207,18 +207,18 @@ mem/0: location 1131 is 30 run/0: product 0 is 0 mem/0: storing 0 in location 1132 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1132 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1099 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1099 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1097 is 1062 run/0: ingredient 1 is length @@ -226,7 +226,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1100 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1097 is 1062 run/0: ingredient 1 is data @@ -236,7 +236,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1101 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1101 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -246,13 +246,13 @@ run/0: address to copy is 1065 run/0: product 0 is 1065 mem/0: storing 1065 in location 1102 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1098 is 52 mem/0: location 1102 is 1065 mem/0: storing 52 in location 1065 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1100 is 1062 mem/0: location 1062 is 0 @@ -261,28 +261,28 @@ run/0: product 0 is 1 mem/0: location 1100 is 1062 mem/0: storing 1 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1097 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/22 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 17 run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 23 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/18 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 23 run/0: ingredient 1 is 10 @@ -291,7 +291,7 @@ mem/0: storing 2 in location 1002 run/0: product 1 is 3 mem/0: storing 3 in location 1009 run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} +run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} run/0: ingredient 0 is digit-base mem/0: location 1007 is 48 run/0: ingredient 1 is digit @@ -299,34 +299,34 @@ mem/0: location 1009 is 3 run/0: product 0 is 51 mem/0: storing 51 in location 1010 run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} mem/0: location 1006 is 1062 mem/0: location 1010 is 51 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1157 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1159 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 51 mem/0: storing 51 in location 1160 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1159 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1188 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1190 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1190 is 1062 run/0: ingredient 1 is length @@ -336,7 +336,7 @@ mem/0: location 1062 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1191 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1190 is 1062 run/0: ingredient 1 is data @@ -346,11 +346,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1192 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1192 is 1064 mem/0: storing 30 in location 1193 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1191 is 1 run/0: ingredient 1 is capacity @@ -358,18 +358,18 @@ mem/0: location 1193 is 30 run/0: product 0 is 0 mem/0: storing 0 in location 1194 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1194 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1161 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1161 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1159 is 1062 run/0: ingredient 1 is length @@ -377,7 +377,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1162 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1159 is 1062 run/0: ingredient 1 is data @@ -387,7 +387,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1163 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1163 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -397,13 +397,13 @@ run/0: address to copy is 1066 run/0: product 0 is 1066 mem/0: storing 1066 in location 1164 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1160 is 51 mem/0: location 1164 is 1066 mem/0: storing 51 in location 1066 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1162 is 1062 mem/0: location 1062 is 1 @@ -412,28 +412,28 @@ run/0: product 0 is 2 mem/0: location 1162 is 1062 mem/0: storing 2 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1159 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/22 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 17 run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 2 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/18 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 2 run/0: ingredient 1 is 10 @@ -442,7 +442,7 @@ mem/0: storing 0 in location 1002 run/0: product 1 is 2 mem/0: storing 2 in location 1009 run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} +run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} run/0: ingredient 0 is digit-base mem/0: location 1007 is 48 run/0: ingredient 1 is digit @@ -450,34 +450,34 @@ mem/0: location 1009 is 2 run/0: product 0 is 50 mem/0: storing 50 in location 1010 run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} +run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} mem/0: location 1006 is 1062 mem/0: location 1010 is 50 run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1219 run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1221 run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 50 mem/0: storing 50 in location 1222 run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full? {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} +run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} mem/0: location 1221 is 1062 run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1250 run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient +run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/29 run/0: product 0 is 1062 mem/0: storing 1062 in location 1252 run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1252 is 1062 run/0: ingredient 1 is length @@ -487,7 +487,7 @@ mem/0: location 1062 is 2 run/0: product 0 is 2 mem/0: storing 2 in location 1253 run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1252 is 1062 run/0: ingredient 1 is data @@ -497,11 +497,11 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1254 run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} +run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/27 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} mem/0: location 1254 is 1064 mem/0: storing 30 in location 1255 run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} +run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} run/0: ingredient 0 is len mem/0: location 1253 is 2 run/0: ingredient 1 is capacity @@ -509,18 +509,18 @@ mem/0: location 1255 is 30 run/0: product 0 is 0 mem/0: storing 0 in location 1256 run/0: instruction buffer-full?/6 -run/0: reply {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} +run/0: reply/32 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} mem/0: location 1256 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 1223 run/0: instruction buffer-append/5 -run/0: break-unless {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1223 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 7 run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is in mem/0: location 1221 is 1062 run/0: ingredient 1 is length @@ -528,7 +528,7 @@ run/0: address to copy is 1062 run/0: product 0 is 1062 mem/0: storing 1062 in location 1224 run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/23 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is in mem/0: location 1221 is 1062 run/0: ingredient 1 is data @@ -538,7 +538,7 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1225 run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} run/0: ingredient 0 is s mem/0: location 1225 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} @@ -548,13 +548,13 @@ run/0: address to copy is 1067 run/0: product 0 is 1067 mem/0: storing 1067 in location 1226 run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1222 is 50 mem/0: location 1226 is 1067 mem/0: storing 50 in location 1067 run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1224 is 1062 mem/0: location 1062 is 2 @@ -563,35 +563,35 @@ run/0: product 0 is 3 mem/0: location 1224 is 1062 mem/0: storing 3 in location 1062 run/0: instruction buffer-append/13 -run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} mem/0: location 1221 is 1062 run/0: result 0 is 1062 mem/0: storing 1062 in location 1006 run/0: instruction integer-to-decimal-string/22 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 17 run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is n mem/0: location 1002 is 0 run/0: ingredient 1 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1008 run/0: instruction integer-to-decimal-string/18 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1008 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 23 run/0: instruction integer-to-decimal-string/25 -run/0: break-unless {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-unless/12 {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1004 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 27 run/0: instruction integer-to-decimal-string/28 -run/0: {name: "len", value: 10, type: 1, properties: ["len": "integer"]} <- get {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} +run/0: {name: "len", value: 10, type: 1, properties: ["len": "integer"]} <- get/23 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} run/0: ingredient 0 is tmp mem/0: location 1006 is 1062 run/0: ingredient 1 is length @@ -601,7 +601,7 @@ mem/0: location 1062 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1011 run/0: instruction integer-to-decimal-string/29 -run/0: {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is tmp mem/0: location 1006 is 1062 run/0: ingredient 1 is data @@ -611,36 +611,36 @@ mem/0: location 1063 is 1064 run/0: product 0 is 1064 mem/0: storing 1064 in location 1012 run/0: instruction integer-to-decimal-string/30 -run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "len", value: 10, type: 1, properties: ["len": "integer"]} +run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "len", value: 10, type: 1, properties: ["len": "integer"]} mem/0: location 1011 is 3 mem/0: array size is 3 mem/0: new alloc: 1281 mem/0: storing 1281 in location 1003 run/0: instruction integer-to-decimal-string/31 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "len", value: 10, type: 1, properties: ["len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "len", value: 10, type: 1, properties: ["len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is len mem/0: location 1011 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1013 run/0: instruction integer-to-decimal-string/32 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1014 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 2 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/25 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} @@ -651,7 +651,7 @@ mem/0: location 1067 is 50 run/0: product 0 is 50 mem/0: storing 50 in location 1015 run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is result mem/0: location 1003 is 1281 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} @@ -660,43 +660,43 @@ run/0: address to copy is 1282 run/0: product 0 is 1282 mem/0: storing 1282 in location 1016 run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 14, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1015 is 50 mem/0: location 1016 is 1282 mem/0: storing 50 in location 1282 run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1013 run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1014 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1014 run/0: instruction integer-to-decimal-string/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 1 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/25 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} @@ -707,7 +707,7 @@ mem/0: location 1066 is 51 run/0: product 0 is 51 mem/0: storing 51 in location 1015 run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is result mem/0: location 1003 is 1281 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} @@ -716,43 +716,43 @@ run/0: address to copy is 1283 run/0: product 0 is 1283 mem/0: storing 1283 in location 1016 run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 14, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1015 is 51 mem/0: location 1016 is 1283 mem/0: storing 51 in location 1283 run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 1013 run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1014 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1014 run/0: instruction integer-to-decimal-string/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 0 run/0: ingredient 1 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} +run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/25 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} @@ -763,7 +763,7 @@ mem/0: location 1065 is 52 run/0: product 0 is 52 mem/0: storing 52 in location 1015 run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/26 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is result mem/0: location 1003 is 1281 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} @@ -772,49 +772,49 @@ run/0: address to copy is 1284 run/0: product 0 is 1284 mem/0: storing 1284 in location 1016 run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy {name: "src", value: 14, type: 4, properties: ["src": "character"]} +run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} run/0: ingredient 0 is src mem/0: location 1015 is 52 mem/0: location 1016 is 1284 mem/0: storing 52 in location 1284 run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is 0 run/0: ingredient 1 is 1 run/0: product 0 is -1 mem/0: storing -1 in location 1013 run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1014 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1014 run/0: instruction integer-to-decimal-string/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is i mem/0: location 1013 is -1 run/0: ingredient 1 is 0 run/0: product 0 is 1 mem/0: storing 1 in location 1008 run/0: instruction integer-to-decimal-string/35 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1008 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 42 run/0: instruction integer-to-decimal-string/43 -run/0: reply {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1003 is 1281 run/0: result 0 is 1281 mem/0: storing 1281 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} +run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 1281 mem/0: location 1281 is 3 @@ -826,7 +826,7 @@ mem/0: storing 50 in location 3 mem/0: storing 51 in location 4 mem/0: storing 52 in location 5 run/0: instruction integer-to-decimal-digit-positive/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2:string <- [234] ", value: 0, type: 0, properties: [" 2:string <- [234] diff --git a/cpp/.traces/integer-to-decimal-digit-zero b/cpp/.traces/integer-to-decimal-digit-zero index 763b760e..64d5b93d 100644 --- a/cpp/.traces/integer-to-decimal-digit-zero +++ b/cpp/.traces/integer-to-decimal-digit-zero @@ -18,7 +18,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: integer-to-decimal-digit-zero run/0: instruction integer-to-decimal-digit-zero/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- integer-to-decimal-string 0:literal 2:array:character/raw <- copy 1:address:array:character/deref/raw ", value: 0, type: 0, properties: [" @@ -35,30 +35,30 @@ after-brace/0: recipe run1001 after-brace/0: integer-to-decimal-string ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string/105 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: instruction integer-to-decimal-string/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction integer-to-decimal-string/1 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient +run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient/29 run/0: product 0 is 0 mem/0: storing 0 in location 1002 run/0: instruction integer-to-decimal-string/3 -run/0: break-if {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} +run/0: break-if/11 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} mem/0: location 1002 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction integer-to-decimal-string/4 -run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "0", value: 0, type: 0, properties: ["0": "literal-string"]} +run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "0", value: 0, type: 0, properties: ["0": "literal-string"]} mem/0: storing 1031 in location 1003 run/0: instruction integer-to-decimal-string/5 -run/0: reply {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1003 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} +run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 mem/0: location 1031 is 1 @@ -66,7 +66,7 @@ mem/0: location 1032 is 48 mem/0: storing 1 in location 2 mem/0: storing 48 in location 3 run/0: instruction integer-to-decimal-digit-zero/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 2:string <- [0] ", value: 0, type: 0, properties: [" 2:string <- [0] diff --git a/cpp/.traces/interpolate-at-end b/cpp/.traces/interpolate-at-end index de8c30dc..08c9aa86 100644 --- a/cpp/.traces/interpolate-at-end +++ b/cpp/.traces/interpolate-at-end @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: interpolate-at-end run/0: instruction interpolate-at-end/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- new [hello, _] 2:address:array:character/raw <- new [abc] 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw @@ -54,48 +54,48 @@ after-brace/0: new ... after-brace/0: interpolate ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "hello, _", value: 0, type: 0, properties: ["hello, _": "literal-string"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/41 {name: "hello, _", value: 0, type: 0, properties: ["hello, _": "literal-string"]} mem/0: storing 1000 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1009 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} +run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate/107 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} mem/0: location 1 is 1000 mem/0: location 2 is 1009 run/0: instruction interpolate/0 -run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} +run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} mem/0: array size is 60 mem/0: new alloc: 1013 run/0: instruction interpolate/1 -run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient +run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1000 mem/0: storing 1000 in location 1015 run/0: instruction interpolate/2 -run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} +run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length/27 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 mem/0: storing 8 in location 1016 run/0: instruction interpolate/3 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy/1 {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is tem-len mem/0: location 1016 is 8 mem/0: storing 8 in location 1017 run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1009 mem/0: storing 1009 in location 1018 mem/0: storing 1 in location 1019 run/0: instruction interpolate/6 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1019 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction interpolate/7 -run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1018 is 1009 mem/0: storing 3 in location 1020 run/0: instruction interpolate/8 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is result-len mem/0: location 1017 is 8 run/0: ingredient 1 is a-len @@ -103,56 +103,56 @@ mem/0: location 1020 is 3 run/0: product 0 is 11 mem/0: storing 11 in location 1017 run/0: instruction interpolate/9 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract/3 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-len mem/0: location 1017 is 11 run/0: ingredient 1 is 1 run/0: product 0 is 10 mem/0: storing 10 in location 1017 run/0: instruction interpolate/10 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 5 run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1019 run/0: instruction interpolate/6 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1019 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 11 run/0: instruction interpolate/12 -run/0: rewind-ingredients +run/0: rewind-ingredients/30 run/0: instruction interpolate/13 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient/29 run/0: product 0 is 1000 run/0: instruction interpolate/14 -run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} +run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} mem/0: location 1017 is 10 mem/0: array size is 10 mem/0: new alloc: 1074 mem/0: storing 1074 in location 1021 run/0: instruction interpolate/15 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1022 run/0: instruction interpolate/16 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1009 mem/0: storing 1009 in location 1018 mem/0: storing 1 in location 1019 run/0: instruction interpolate/19 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} mem/0: location 1019 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 0 run/0: ingredient 1 is tem-len @@ -160,12 +160,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -176,19 +176,19 @@ mem/0: location 1001 is 104 run/0: product 0 is 104 mem/0: storing 104 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 104 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -197,31 +197,31 @@ run/0: address to copy is 1075 run/0: product 0 is 1075 mem/0: storing 1075 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 104 mem/0: location 1027 is 1075 mem/0: storing 104 in location 1075 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 1 run/0: ingredient 1 is tem-len @@ -229,12 +229,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -245,19 +245,19 @@ mem/0: location 1002 is 101 run/0: product 0 is 101 mem/0: storing 101 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 101 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -266,31 +266,31 @@ run/0: address to copy is 1076 run/0: product 0 is 1076 mem/0: storing 1076 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 101 mem/0: location 1027 is 1076 mem/0: storing 101 in location 1076 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 2 run/0: ingredient 1 is tem-len @@ -298,12 +298,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -314,19 +314,19 @@ mem/0: location 1003 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 108 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -335,31 +335,31 @@ run/0: address to copy is 1077 run/0: product 0 is 1077 mem/0: storing 1077 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 108 mem/0: location 1027 is 1077 mem/0: storing 108 in location 1077 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 3 run/0: ingredient 1 is tem-len @@ -367,12 +367,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -383,19 +383,19 @@ mem/0: location 1004 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 108 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -404,31 +404,31 @@ run/0: address to copy is 1078 run/0: product 0 is 1078 mem/0: storing 1078 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 108 mem/0: location 1027 is 1078 mem/0: storing 108 in location 1078 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 4 run/0: ingredient 1 is tem-len @@ -436,12 +436,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -452,19 +452,19 @@ mem/0: location 1005 is 111 run/0: product 0 is 111 mem/0: storing 111 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 111 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -473,31 +473,31 @@ run/0: address to copy is 1079 run/0: product 0 is 1079 mem/0: storing 1079 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 111 mem/0: location 1027 is 1079 mem/0: storing 111 in location 1079 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 5 run/0: ingredient 1 is tem-len @@ -505,12 +505,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -521,19 +521,19 @@ mem/0: location 1006 is 44 run/0: product 0 is 44 mem/0: storing 44 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 44 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -542,31 +542,31 @@ run/0: address to copy is 1080 run/0: product 0 is 1080 mem/0: storing 1080 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 44 mem/0: location 1027 is 1080 mem/0: storing 44 in location 1080 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 6 run/0: ingredient 1 is tem-len @@ -574,12 +574,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -590,19 +590,19 @@ mem/0: location 1007 is 32 run/0: product 0 is 32 mem/0: storing 32 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 32 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -611,31 +611,31 @@ run/0: address to copy is 1081 run/0: product 0 is 1081 mem/0: storing 1081 in location 1027 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 32 mem/0: location 1027 is 1081 mem/0: storing 32 in location 1081 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1023 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1022 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 7 run/0: ingredient 1 is tem-len @@ -643,12 +643,12 @@ mem/0: location 1016 is 8 run/0: product 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1024 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -659,24 +659,24 @@ mem/0: location 1008 is 95 run/0: product 0 is 95 mem/0: storing 95 in location 1025 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1025 is 95 run/0: ingredient 1 is 95 run/0: product 0 is 1 mem/0: storing 1 in location 1026 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1026 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 31 run/0: instruction interpolate/32 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1028 is 0 run/0: ingredient 1 is a-len @@ -684,12 +684,12 @@ mem/0: location 1020 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1029 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1029 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1018 is 1009 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -700,7 +700,7 @@ mem/0: location 1010 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1025 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -709,31 +709,31 @@ run/0: address to copy is 1082 run/0: product 0 is 1082 mem/0: storing 1082 in location 1027 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 97 mem/0: location 1027 is 1082 mem/0: storing 97 in location 1082 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1028 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1028 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 7 run/0: ingredient 1 is 1 run/0: product 0 is 8 mem/0: storing 8 in location 1022 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1028 is 1 run/0: ingredient 1 is a-len @@ -741,12 +741,12 @@ mem/0: location 1020 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1029 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1029 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1018 is 1009 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -757,7 +757,7 @@ mem/0: location 1011 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1025 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -766,31 +766,31 @@ run/0: address to copy is 1083 run/0: product 0 is 1083 mem/0: storing 1083 in location 1027 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 98 mem/0: location 1027 is 1083 mem/0: storing 98 in location 1083 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1028 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1028 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 8 run/0: ingredient 1 is 1 run/0: product 0 is 9 mem/0: storing 9 in location 1022 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1028 is 2 run/0: ingredient 1 is a-len @@ -798,12 +798,12 @@ mem/0: location 1020 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1029 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1029 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1018 is 1009 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -814,7 +814,7 @@ mem/0: location 1012 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1025 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -823,31 +823,31 @@ run/0: address to copy is 1084 run/0: product 0 is 1084 mem/0: storing 1084 in location 1027 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1025 is 99 mem/0: location 1027 is 1084 mem/0: storing 99 in location 1084 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1028 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1028 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1022 is 9 run/0: ingredient 1 is 1 run/0: product 0 is 10 mem/0: storing 10 in location 1022 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1028 is 3 run/0: ingredient 1 is a-len @@ -855,33 +855,33 @@ mem/0: location 1020 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1029 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1029 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 42 run/0: instruction interpolate/43 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1023 is 7 run/0: ingredient 1 is 1 run/0: product 0 is 8 mem/0: storing 8 in location 1023 run/0: instruction interpolate/44 -run/0: loop {name: "", value: -27, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -27, type: , properties: ["": ]} run/0: ingredient 0 is -27 run/0: jumping to instruction 18 run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1019 run/0: instruction interpolate/19 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} mem/0: location 1019 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 45 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1023 is 8 run/0: ingredient 1 is tem-len @@ -889,18 +889,18 @@ mem/0: location 1016 is 8 run/0: product 0 is 1 mem/0: storing 1 in location 1024 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1024 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 55 run/0: instruction interpolate/56 -run/0: reply {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1021 is 1074 run/0: result 0 is 1074 mem/0: storing 1074 in location 3 run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} +run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} run/0: ingredient 0 is 3 mem/0: location 3 is 1074 mem/0: location 1074 is 10 @@ -926,7 +926,7 @@ mem/0: storing 97 in location 12 mem/0: storing 98 in location 13 mem/0: storing 99 in location 14 run/0: instruction interpolate-at-end/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 4:string <- [hello, abc] ", value: 0, type: 0, properties: [" 4:string <- [hello, abc] diff --git a/cpp/.traces/interpolate-at-start b/cpp/.traces/interpolate-at-start index 49cefee9..faaacb97 100644 --- a/cpp/.traces/interpolate-at-start +++ b/cpp/.traces/interpolate-at-start @@ -24,7 +24,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: interpolate-at-start run/0: instruction interpolate-at-start/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- new [_, hello!] 2:address:array:character/raw <- new [abc] 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw @@ -56,48 +56,48 @@ after-brace/0: new ... after-brace/0: interpolate ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "_, hello!", value: 0, type: 0, properties: ["_, hello!": "literal-string"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/41 {name: "_, hello!", value: 0, type: 0, properties: ["_, hello!": "literal-string"]} mem/0: storing 1000 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1010 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} +run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate/107 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} mem/0: location 1 is 1000 mem/0: location 2 is 1010 run/0: instruction interpolate/0 -run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} +run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} mem/0: array size is 60 mem/0: new alloc: 1014 run/0: instruction interpolate/1 -run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient +run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1000 mem/0: storing 1000 in location 1016 run/0: instruction interpolate/2 -run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} +run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length/27 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 mem/0: storing 9 in location 1017 run/0: instruction interpolate/3 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy/1 {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is tem-len mem/0: location 1017 is 9 mem/0: storing 9 in location 1018 run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1010 mem/0: storing 1010 in location 1019 mem/0: storing 1 in location 1020 run/0: instruction interpolate/6 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1020 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction interpolate/7 -run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1010 mem/0: storing 3 in location 1021 run/0: instruction interpolate/8 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is result-len mem/0: location 1018 is 9 run/0: ingredient 1 is a-len @@ -105,56 +105,56 @@ mem/0: location 1021 is 3 run/0: product 0 is 12 mem/0: storing 12 in location 1018 run/0: instruction interpolate/9 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract/3 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-len mem/0: location 1018 is 12 run/0: ingredient 1 is 1 run/0: product 0 is 11 mem/0: storing 11 in location 1018 run/0: instruction interpolate/10 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 5 run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1020 run/0: instruction interpolate/6 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1020 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 11 run/0: instruction interpolate/12 -run/0: rewind-ingredients +run/0: rewind-ingredients/30 run/0: instruction interpolate/13 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient/29 run/0: product 0 is 1000 run/0: instruction interpolate/14 -run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} +run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} mem/0: location 1018 is 11 mem/0: array size is 11 mem/0: new alloc: 1075 mem/0: storing 1075 in location 1022 run/0: instruction interpolate/15 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction interpolate/16 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1010 mem/0: storing 1010 in location 1019 mem/0: storing 1 in location 1020 run/0: instruction interpolate/19 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} mem/0: location 1020 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 0 run/0: ingredient 1 is tem-len @@ -162,12 +162,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -178,24 +178,24 @@ mem/0: location 1001 is 95 run/0: product 0 is 95 mem/0: storing 95 in location 1026 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1026 is 95 run/0: ingredient 1 is 95 run/0: product 0 is 1 mem/0: storing 1 in location 1027 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1027 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 31 run/0: instruction interpolate/32 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1029 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1029 is 0 run/0: ingredient 1 is a-len @@ -203,12 +203,12 @@ mem/0: location 1021 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1030 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1030 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1010 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -219,7 +219,7 @@ mem/0: location 1011 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1026 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -228,31 +228,31 @@ run/0: address to copy is 1076 run/0: product 0 is 1076 mem/0: storing 1076 in location 1028 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 97 mem/0: location 1028 is 1076 mem/0: storing 97 in location 1076 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1029 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1029 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1023 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1029 is 1 run/0: ingredient 1 is a-len @@ -260,12 +260,12 @@ mem/0: location 1021 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1030 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1030 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1010 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -276,7 +276,7 @@ mem/0: location 1012 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1026 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -285,31 +285,31 @@ run/0: address to copy is 1077 run/0: product 0 is 1077 mem/0: storing 1077 in location 1028 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 98 mem/0: location 1028 is 1077 mem/0: storing 98 in location 1077 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1029 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1029 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1023 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1029 is 2 run/0: ingredient 1 is a-len @@ -317,12 +317,12 @@ mem/0: location 1021 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1030 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1030 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1010 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -333,7 +333,7 @@ mem/0: location 1013 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1026 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -342,31 +342,31 @@ run/0: address to copy is 1078 run/0: product 0 is 1078 mem/0: storing 1078 in location 1028 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 99 mem/0: location 1028 is 1078 mem/0: storing 99 in location 1078 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1029 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1029 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1023 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1029 is 3 run/0: ingredient 1 is a-len @@ -374,33 +374,33 @@ mem/0: location 1021 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1030 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1030 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 42 run/0: instruction interpolate/43 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1024 run/0: instruction interpolate/44 -run/0: loop {name: "", value: -27, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -27, type: , properties: ["": ]} run/0: ingredient 0 is -27 run/0: jumping to instruction 18 run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1020 run/0: instruction interpolate/19 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} mem/0: location 1020 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 45 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 1 run/0: ingredient 1 is tem-len @@ -408,12 +408,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -424,7 +424,7 @@ mem/0: location 1002 is 44 run/0: product 0 is 44 mem/0: storing 44 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -433,31 +433,31 @@ run/0: address to copy is 1079 run/0: product 0 is 1079 mem/0: storing 1079 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 44 mem/0: location 1028 is 1079 mem/0: storing 44 in location 1079 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 2 run/0: ingredient 1 is tem-len @@ -465,12 +465,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -481,7 +481,7 @@ mem/0: location 1003 is 32 run/0: product 0 is 32 mem/0: storing 32 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -490,31 +490,31 @@ run/0: address to copy is 1080 run/0: product 0 is 1080 mem/0: storing 1080 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 32 mem/0: location 1028 is 1080 mem/0: storing 32 in location 1080 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 3 run/0: ingredient 1 is tem-len @@ -522,12 +522,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -538,7 +538,7 @@ mem/0: location 1004 is 104 run/0: product 0 is 104 mem/0: storing 104 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -547,31 +547,31 @@ run/0: address to copy is 1081 run/0: product 0 is 1081 mem/0: storing 1081 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 104 mem/0: location 1028 is 1081 mem/0: storing 104 in location 1081 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 4 run/0: ingredient 1 is tem-len @@ -579,12 +579,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -595,7 +595,7 @@ mem/0: location 1005 is 101 run/0: product 0 is 101 mem/0: storing 101 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -604,31 +604,31 @@ run/0: address to copy is 1082 run/0: product 0 is 1082 mem/0: storing 1082 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 101 mem/0: location 1028 is 1082 mem/0: storing 101 in location 1082 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 5 run/0: ingredient 1 is tem-len @@ -636,12 +636,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -652,7 +652,7 @@ mem/0: location 1006 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -661,31 +661,31 @@ run/0: address to copy is 1083 run/0: product 0 is 1083 mem/0: storing 1083 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 108 mem/0: location 1028 is 1083 mem/0: storing 108 in location 1083 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 7 run/0: ingredient 1 is 1 run/0: product 0 is 8 mem/0: storing 8 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 6 run/0: ingredient 1 is tem-len @@ -693,12 +693,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -709,7 +709,7 @@ mem/0: location 1007 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -718,31 +718,31 @@ run/0: address to copy is 1084 run/0: product 0 is 1084 mem/0: storing 1084 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 108 mem/0: location 1028 is 1084 mem/0: storing 108 in location 1084 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 8 run/0: ingredient 1 is 1 run/0: product 0 is 9 mem/0: storing 9 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 7 run/0: ingredient 1 is tem-len @@ -750,12 +750,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -766,7 +766,7 @@ mem/0: location 1008 is 111 run/0: product 0 is 111 mem/0: storing 111 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -775,31 +775,31 @@ run/0: address to copy is 1085 run/0: product 0 is 1085 mem/0: storing 1085 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 111 mem/0: location 1028 is 1085 mem/0: storing 111 in location 1085 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 7 run/0: ingredient 1 is 1 run/0: product 0 is 8 mem/0: storing 8 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 9 run/0: ingredient 1 is 1 run/0: product 0 is 10 mem/0: storing 10 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 8 run/0: ingredient 1 is tem-len @@ -807,12 +807,12 @@ mem/0: location 1017 is 9 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1016 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -823,7 +823,7 @@ mem/0: location 1009 is 33 run/0: product 0 is 33 mem/0: storing 33 in location 1026 run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -832,31 +832,31 @@ run/0: address to copy is 1086 run/0: product 0 is 1086 mem/0: storing 1086 in location 1028 run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1026 is 33 mem/0: location 1028 is 1086 mem/0: storing 33 in location 1086 run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 8 run/0: ingredient 1 is 1 run/0: product 0 is 9 mem/0: storing 9 in location 1024 run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 10 run/0: ingredient 1 is 1 run/0: product 0 is 11 mem/0: storing 11 in location 1023 run/0: instruction interpolate/54 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 47 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 9 run/0: ingredient 1 is tem-len @@ -864,18 +864,18 @@ mem/0: location 1017 is 9 run/0: product 0 is 1 mem/0: storing 1 in location 1025 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 55 run/0: instruction interpolate/56 -run/0: reply {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1022 is 1075 run/0: result 0 is 1075 mem/0: storing 1075 in location 3 run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} +run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} run/0: ingredient 0 is 3 mem/0: location 3 is 1075 mem/0: location 1075 is 11 @@ -903,7 +903,7 @@ mem/0: storing 108 in location 13 mem/0: storing 111 in location 14 mem/0: storing 33 in location 15 run/0: instruction interpolate-at-start/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 4:string <- [abc, hello!] 16 <- 0 # out of bounds ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/interpolate-works b/cpp/.traces/interpolate-works index 53336da5..a9251adc 100644 --- a/cpp/.traces/interpolate-works +++ b/cpp/.traces/interpolate-works @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: interpolate-works run/0: instruction interpolate-works/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- new [abc _] 2:address:array:character/raw <- new [def] 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw @@ -54,48 +54,48 @@ after-brace/0: new ... after-brace/0: interpolate ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "abc _", value: 0, type: 0, properties: ["abc _": "literal-string"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/41 {name: "abc _", value: 0, type: 0, properties: ["abc _": "literal-string"]} mem/0: storing 1000 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: "def", value: 0, type: 0, properties: ["def": "literal-string"]} +run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/41 {name: "def", value: 0, type: 0, properties: ["def": "literal-string"]} mem/0: storing 1006 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} +run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate/107 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} mem/0: location 1 is 1000 mem/0: location 2 is 1006 run/0: instruction interpolate/0 -run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} +run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} mem/0: array size is 60 mem/0: new alloc: 1010 run/0: instruction interpolate/1 -run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient +run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1000 mem/0: storing 1000 in location 1012 run/0: instruction interpolate/2 -run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} +run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length/27 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1000 mem/0: storing 5 in location 1013 run/0: instruction interpolate/3 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy/1 {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is tem-len mem/0: location 1013 is 5 mem/0: storing 5 in location 1014 run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1006 mem/0: storing 1006 in location 1015 mem/0: storing 1 in location 1016 run/0: instruction interpolate/6 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1016 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction interpolate/7 -run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1006 mem/0: storing 3 in location 1017 run/0: instruction interpolate/8 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is result-len mem/0: location 1014 is 5 run/0: ingredient 1 is a-len @@ -103,56 +103,56 @@ mem/0: location 1017 is 3 run/0: product 0 is 8 mem/0: storing 8 in location 1014 run/0: instruction interpolate/9 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract/3 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-len mem/0: location 1014 is 8 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1014 run/0: instruction interpolate/10 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 5 run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1016 run/0: instruction interpolate/6 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1016 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 11 run/0: instruction interpolate/12 -run/0: rewind-ingredients +run/0: rewind-ingredients/30 run/0: instruction interpolate/13 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient/29 run/0: product 0 is 1000 run/0: instruction interpolate/14 -run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} +run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} mem/0: location 1014 is 7 mem/0: array size is 7 mem/0: new alloc: 1071 mem/0: storing 1071 in location 1018 run/0: instruction interpolate/15 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1019 run/0: instruction interpolate/16 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1020 run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 run/0: product 0 is 1006 mem/0: storing 1006 in location 1015 mem/0: storing 1 in location 1016 run/0: instruction interpolate/19 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} mem/0: location 1016 is 1 run/0: ingredient 0 is 1 run/0: jump-unless fell through run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1020 is 0 run/0: ingredient 1 is tem-len @@ -160,12 +160,12 @@ mem/0: location 1013 is 5 run/0: product 0 is 0 mem/0: storing 0 in location 1021 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1021 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -176,19 +176,19 @@ mem/0: location 1001 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1022 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1022 is 97 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1023 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -197,31 +197,31 @@ run/0: address to copy is 1072 run/0: product 0 is 1072 mem/0: storing 1072 in location 1024 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 97 mem/0: location 1024 is 1072 mem/0: storing 97 in location 1072 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1020 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1020 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1019 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1020 is 1 run/0: ingredient 1 is tem-len @@ -229,12 +229,12 @@ mem/0: location 1013 is 5 run/0: product 0 is 0 mem/0: storing 0 in location 1021 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1021 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -245,19 +245,19 @@ mem/0: location 1002 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1022 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1022 is 98 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1023 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -266,31 +266,31 @@ run/0: address to copy is 1073 run/0: product 0 is 1073 mem/0: storing 1073 in location 1024 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 98 mem/0: location 1024 is 1073 mem/0: storing 98 in location 1073 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1020 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1020 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1019 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1020 is 2 run/0: ingredient 1 is tem-len @@ -298,12 +298,12 @@ mem/0: location 1013 is 5 run/0: product 0 is 0 mem/0: storing 0 in location 1021 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1021 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -314,19 +314,19 @@ mem/0: location 1003 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1022 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1022 is 99 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1023 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -335,31 +335,31 @@ run/0: address to copy is 1074 run/0: product 0 is 1074 mem/0: storing 1074 in location 1024 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 99 mem/0: location 1024 is 1074 mem/0: storing 99 in location 1074 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1020 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1020 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1019 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1020 is 3 run/0: ingredient 1 is tem-len @@ -367,12 +367,12 @@ mem/0: location 1013 is 5 run/0: product 0 is 0 mem/0: storing 0 in location 1021 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1021 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -383,19 +383,19 @@ mem/0: location 1004 is 32 run/0: product 0 is 32 mem/0: storing 32 in location 1022 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1022 is 32 run/0: ingredient 1 is 95 run/0: product 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1023 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -404,31 +404,31 @@ run/0: address to copy is 1075 run/0: product 0 is 1075 mem/0: storing 1075 in location 1024 run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 32 mem/0: location 1024 is 1075 mem/0: storing 32 in location 1075 run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1020 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1020 run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1019 run/0: instruction interpolate/30 -run/0: loop {name: "", value: -10, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} run/0: ingredient 0 is -10 run/0: jumping to instruction 21 run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1020 is 4 run/0: ingredient 1 is tem-len @@ -436,12 +436,12 @@ mem/0: location 1013 is 5 run/0: product 0 is 0 mem/0: storing 0 in location 1021 run/0: instruction interpolate/22 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} mem/0: location 1021 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} mem/0: location 1012 is 1000 run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} @@ -452,24 +452,24 @@ mem/0: location 1005 is 95 run/0: product 0 is 95 mem/0: storing 95 in location 1022 run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} +run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} run/0: ingredient 0 is in mem/0: location 1022 is 95 run/0: ingredient 1 is 95 run/0: product 0 is 1 mem/0: storing 1 in location 1023 run/0: instruction interpolate/25 -run/0: break-if {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} +run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} mem/0: location 1023 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 31 run/0: instruction interpolate/32 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1025 is 0 run/0: ingredient 1 is a-len @@ -477,12 +477,12 @@ mem/0: location 1017 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1006 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -493,7 +493,7 @@ mem/0: location 1007 is 100 run/0: product 0 is 100 mem/0: storing 100 in location 1022 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -502,31 +502,31 @@ run/0: address to copy is 1076 run/0: product 0 is 1076 mem/0: storing 1076 in location 1024 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 100 mem/0: location 1024 is 1076 mem/0: storing 100 in location 1076 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1025 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1025 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1019 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1025 is 1 run/0: ingredient 1 is a-len @@ -534,12 +534,12 @@ mem/0: location 1017 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1006 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -550,7 +550,7 @@ mem/0: location 1008 is 101 run/0: product 0 is 101 mem/0: storing 101 in location 1022 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -559,31 +559,31 @@ run/0: address to copy is 1077 run/0: product 0 is 1077 mem/0: storing 1077 in location 1024 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 101 mem/0: location 1024 is 1077 mem/0: storing 101 in location 1077 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1025 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1025 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1019 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1025 is 2 run/0: ingredient 1 is a-len @@ -591,12 +591,12 @@ mem/0: location 1017 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1026 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1026 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1015 is 1006 run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} @@ -607,7 +607,7 @@ mem/0: location 1009 is 102 run/0: product 0 is 102 mem/0: storing 102 in location 1022 run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} @@ -616,31 +616,31 @@ run/0: address to copy is 1078 run/0: product 0 is 1078 mem/0: storing 1078 in location 1024 run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1022 is 102 mem/0: location 1024 is 1078 mem/0: storing 102 in location 1078 run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is j mem/0: location 1025 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1025 run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1019 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1019 run/0: instruction interpolate/41 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 34 run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is j mem/0: location 1025 is 3 run/0: ingredient 1 is a-len @@ -648,33 +648,33 @@ mem/0: location 1017 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1026 run/0: instruction interpolate/35 -run/0: break-if {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1026 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 42 run/0: instruction interpolate/43 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1020 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1020 run/0: instruction interpolate/44 -run/0: loop {name: "", value: -27, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -27, type: , properties: ["": ]} run/0: ingredient 0 is -27 run/0: jumping to instruction 18 run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient +run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1016 run/0: instruction interpolate/19 -run/0: break-unless {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} +run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} mem/0: location 1016 is 0 run/0: ingredient 0 is 0 run/0: ingredient 1 is run/0: jumping to instruction 45 run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} +run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1020 is 5 run/0: ingredient 1 is tem-len @@ -682,18 +682,18 @@ mem/0: location 1013 is 5 run/0: product 0 is 1 mem/0: storing 1 in location 1021 run/0: instruction interpolate/48 -run/0: break-if {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1021 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 55 run/0: instruction interpolate/56 -run/0: reply {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1018 is 1071 run/0: result 0 is 1071 mem/0: storing 1071 in location 3 run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} +run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} run/0: ingredient 0 is 3 mem/0: location 3 is 1071 mem/0: location 1071 is 7 @@ -713,7 +713,7 @@ mem/0: storing 100 in location 9 mem/0: storing 101 in location 10 mem/0: storing 102 in location 11 run/0: instruction interpolate-works/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 4:string <- [abc def] ", value: 0, type: 0, properties: [" 4:string <- [abc def] diff --git a/cpp/.traces/jump_backward b/cpp/.traces/jump_backward index 4de52a27..4c652f4e 100644 --- a/cpp/.traces/jump_backward +++ b/cpp/.traces/jump_backward @@ -11,14 +11,14 @@ after-brace/0: jump ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: jump {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump/10 {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 1 run/0: jumping to instruction 2 run/0: instruction main/2 -run/0: jump {name: "-2", value: -2, type: 0, properties: ["-2": "offset"]} +run/0: jump/10 {name: "-2", value: -2, type: 0, properties: ["-2": "offset"]} run/0: ingredient 0 is -2 run/0: jumping to instruction 1 run/0: instruction main/1 -run/0: jump {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump/10 {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 1 run/0: jumping to instruction 3 diff --git a/cpp/.traces/jump_can_skip_instructions b/cpp/.traces/jump_can_skip_instructions index 6bfdce8b..ce915fa0 100644 --- a/cpp/.traces/jump_can_skip_instructions +++ b/cpp/.traces/jump_can_skip_instructions @@ -9,6 +9,6 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: jump {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump/10 {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 1 run/0: jumping to instruction 2 diff --git a/cpp/.traces/jump_if b/cpp/.traces/jump_if index b01ed9dd..cea3c4f8 100644 --- a/cpp/.traces/jump_if +++ b/cpp/.traces/jump_if @@ -10,7 +10,7 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: jump-if {name: "999", value: 999, type: 0, properties: ["999": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump-if/11 {name: "999", value: 999, type: 0, properties: ["999": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 999 run/0: ingredient 1 is 1 run/0: jumping to instruction 2 diff --git a/cpp/.traces/jump_if_fallthrough b/cpp/.traces/jump_if_fallthrough index d87703c0..c5404292 100644 --- a/cpp/.traces/jump_if_fallthrough +++ b/cpp/.traces/jump_if_fallthrough @@ -10,10 +10,10 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: jump-if {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump-if/11 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction main/1 -run/0: {name: "123", value: 123, type: 1, properties: ["123": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "123", value: 123, type: 1, properties: ["123": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 123 diff --git a/cpp/.traces/jump_unless b/cpp/.traces/jump_unless index 5c986093..fb015b69 100644 --- a/cpp/.traces/jump_unless +++ b/cpp/.traces/jump_unless @@ -10,7 +10,7 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: jump-unless {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump-unless/12 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 0 run/0: ingredient 1 is 1 run/0: jumping to instruction 2 diff --git a/cpp/.traces/jump_unless_fallthrough b/cpp/.traces/jump_unless_fallthrough index b54b5c18..f9c4b840 100644 --- a/cpp/.traces/jump_unless_fallthrough +++ b/cpp/.traces/jump_unless_fallthrough @@ -10,10 +10,10 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: jump-unless {name: "999", value: 999, type: 0, properties: ["999": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} +run/0: jump-unless/12 {name: "999", value: 999, type: 0, properties: ["999": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} run/0: ingredient 0 is 999 run/0: jump-unless fell through run/0: instruction main/1 -run/0: {name: "123", value: 123, type: 1, properties: ["123": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "123", value: 123, type: 1, properties: ["123": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 123 diff --git a/cpp/.traces/lesser_or_equal b/cpp/.traces/lesser_or_equal index a8f225ec..ef139323 100644 --- a/cpp/.traces/lesser_or_equal +++ b/cpp/.traces/lesser_or_equal @@ -15,15 +15,15 @@ after-brace/0: lesser-or-equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "32", value: 32, type: 0, properties: ["32": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "32", value: 32, type: 0, properties: ["32": "literal"]} run/0: ingredient 0 is 32 mem/0: storing 32 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal/17 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 32 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/lesser_or_equal2 b/cpp/.traces/lesser_or_equal2 index a7ee1aff..3f75857d 100644 --- a/cpp/.traces/lesser_or_equal2 +++ b/cpp/.traces/lesser_or_equal2 @@ -15,15 +15,15 @@ after-brace/0: lesser-or-equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal/17 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 33 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/lesser_or_equal3 b/cpp/.traces/lesser_or_equal3 index 027d1458..cc7d8d18 100644 --- a/cpp/.traces/lesser_or_equal3 +++ b/cpp/.traces/lesser_or_equal3 @@ -15,15 +15,15 @@ after-brace/0: lesser-or-equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal/17 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/lesser_than b/cpp/.traces/lesser_than index ccac221d..8c5a05dc 100644 --- a/cpp/.traces/lesser_than +++ b/cpp/.traces/lesser_than @@ -15,15 +15,15 @@ after-brace/0: lesser-than ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "32", value: 32, type: 0, properties: ["32": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "32", value: 32, type: 0, properties: ["32": "literal"]} run/0: ingredient 0 is 32 mem/0: storing 32 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-than {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-than/15 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 32 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/lesser_than2 b/cpp/.traces/lesser_than2 index bddf9eff..27c17708 100644 --- a/cpp/.traces/lesser_than2 +++ b/cpp/.traces/lesser_than2 @@ -15,15 +15,15 @@ after-brace/0: lesser-than ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-than {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-than/15 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/maybe_convert b/cpp/.traces/maybe_convert index adb8ebe7..0c26557b 100644 --- a/cpp/.traces/maybe_convert +++ b/cpp/.traces/maybe_convert @@ -19,19 +19,19 @@ after-brace/0: maybe-convert ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy {name: "36", value: 36, type: 0, properties: ["36": "literal"]} +run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} run/0: ingredient 0 is 36 mem/0: storing 36 in location 14 run/0: instruction main/3 -run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "1", value: 1, type: 0, properties: ["1": "variant"]} +run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert/28 {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "1", value: 1, type: 0, properties: ["1": "variant"]} run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 mem/0: storing 13 in location 20 diff --git a/cpp/.traces/maybe_convert_fail b/cpp/.traces/maybe_convert_fail index 31922135..c28c17b3 100644 --- a/cpp/.traces/maybe_convert_fail +++ b/cpp/.traces/maybe_convert_fail @@ -19,19 +19,19 @@ after-brace/0: maybe-convert ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy {name: "36", value: 36, type: 0, properties: ["36": "literal"]} +run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} run/0: ingredient 0 is 36 mem/0: storing 36 in location 14 run/0: instruction main/3 -run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "0", value: 0, type: 0, properties: ["0": "variant"]} +run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert/28 {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "0", value: 0, type: 0, properties: ["0": "variant"]} run/0: ingredient 0 is 12 run/0: ingredient 1 is 0 mem/0: storing 0 in location 20 diff --git a/cpp/.traces/maybe_convert_named b/cpp/.traces/maybe_convert_named index 3444a65f..96a6528e 100644 --- a/cpp/.traces/maybe_convert_named +++ b/cpp/.traces/maybe_convert_named @@ -20,19 +20,19 @@ after-brace/0: maybe-convert ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 12 run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy {name: "36", value: 36, type: 0, properties: ["36": "literal"]} +run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} run/0: ingredient 0 is 36 mem/0: storing 36 in location 14 run/0: instruction main/3 -run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "p", value: 1, type: 0, properties: ["p": "variant"]} +run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert/28 {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "p", value: 1, type: 0, properties: ["p": "variant"]} run/0: ingredient 0 is 12 run/0: ingredient 1 is p mem/0: storing 13 in location 20 diff --git a/cpp/.traces/memory_check b/cpp/.traces/memory_check index 2f883ae7..8f112824 100644 --- a/cpp/.traces/memory_check +++ b/cpp/.traces/memory_check @@ -9,7 +9,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 13 ", value: 0, type: 0, properties: [" 1 <- 13 diff --git a/cpp/.traces/memory_check_multiple b/cpp/.traces/memory_check_multiple index 230bdc6f..a90f062b 100644 --- a/cpp/.traces/memory_check_multiple +++ b/cpp/.traces/memory_check_multiple @@ -11,7 +11,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 0 1 <- 0 ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/memory_check_string b/cpp/.traces/memory_check_string index d81ccd3e..4d878131 100644 --- a/cpp/.traces/memory_check_string +++ b/cpp/.traces/memory_check_string @@ -25,23 +25,23 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "97", value: 97, type: 0, properties: ["97": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "97", value: 97, type: 0, properties: ["97": "literal"]} run/0: ingredient 0 is 97 mem/0: storing 97 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "98", value: 98, type: 0, properties: ["98": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "98", value: 98, type: 0, properties: ["98": "literal"]} run/0: ingredient 0 is 98 mem/0: storing 98 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "99", value: 99, type: 0, properties: ["99": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "99", value: 99, type: 0, properties: ["99": "literal"]} run/0: ingredient 0 is 99 mem/0: storing 99 in location 4 run/0: instruction main/4 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1:string <- [abc] ", value: 0, type: 0, properties: [" 1:string <- [abc] diff --git a/cpp/.traces/memory_check_string_length b/cpp/.traces/memory_check_string_length index 13ddd812..2d9759cd 100644 --- a/cpp/.traces/memory_check_string_length +++ b/cpp/.traces/memory_check_string_length @@ -25,23 +25,23 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "97", value: 97, type: 0, properties: ["97": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "97", value: 97, type: 0, properties: ["97": "literal"]} run/0: ingredient 0 is 97 mem/0: storing 97 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "98", value: 98, type: 0, properties: ["98": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "98", value: 98, type: 0, properties: ["98": "literal"]} run/0: ingredient 0 is 98 mem/0: storing 98 in location 3 run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "99", value: 99, type: 0, properties: ["99": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "99", value: 99, type: 0, properties: ["99": "literal"]} run/0: ingredient 0 is 99 mem/0: storing 99 in location 4 run/0: instruction main/4 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1:string <- [ab] ", value: 0, type: 0, properties: [" 1:string <- [ab] diff --git a/cpp/.traces/multiply b/cpp/.traces/multiply index 85425656..ceb7be06 100644 --- a/cpp/.traces/multiply +++ b/cpp/.traces/multiply @@ -15,15 +15,15 @@ after-brace/0: multiply ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "4", value: 4, type: 0, properties: ["4": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} run/0: ingredient 0 is 4 mem/0: storing 4 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "6", value: 6, type: 0, properties: ["6": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "6", value: 6, type: 0, properties: ["6": "literal"]} run/0: ingredient 0 is 6 mem/0: storing 6 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- multiply {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- multiply/4 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 4 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/multiply_literal b/cpp/.traces/multiply_literal index cd240a9a..115fb958 100644 --- a/cpp/.traces/multiply_literal +++ b/cpp/.traces/multiply_literal @@ -7,7 +7,7 @@ after-brace/0: multiply ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- multiply {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- multiply/4 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 3 run/0: ingredient 1 is 3 diff --git a/cpp/.traces/new b/cpp/.traces/new index 0ec29cd9..fddad2e9 100644 --- a/cpp/.traces/new +++ b/cpp/.traces/new @@ -17,15 +17,15 @@ after-brace/0: equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 1000 mem/0: storing 1000 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 1001 mem/0: storing 1001 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- equal {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]}, {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- equal/13 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]}, {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 1000 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/new_array b/cpp/.traces/new_array index 52919f13..44369804 100644 --- a/cpp/.traces/new_array +++ b/cpp/.traces/new_array @@ -18,16 +18,16 @@ after-brace/0: subtract ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]}, {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]}, {name: "5", value: 5, type: 0, properties: ["5": "literal"]} mem/0: array size is 5 mem/0: new alloc: 1000 mem/0: storing 1000 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 1006 mem/0: storing 1006 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer", "raw": ]} <- subtract {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]}, {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer", "raw": ]} <- subtract/3 {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]}, {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} run/0: ingredient 0 is 2 mem/0: location 2 is 1006 run/0: ingredient 1 is 1 diff --git a/cpp/.traces/new_concurrent b/cpp/.traces/new_concurrent index fe3a1a01..cf9c8dba 100644 --- a/cpp/.traces/new_concurrent +++ b/cpp/.traces/new_concurrent @@ -21,20 +21,20 @@ after-brace/0: equal ... new/0: routine allocated memory from 1000 to 101000 schedule/0: f1 run/0: instruction f1/0 -run/0: start-running {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} +run/0: start-running/33 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} run/0: ingredient 0 is f2 new/0: routine allocated memory from 101000 to 201000 run/0: instruction f1/1 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 1000 mem/0: storing 1000 in location 1 schedule/0: f2 run/0: instruction f2/0 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 101000 mem/0: storing 101000 in location 2 run/0: instruction f2/1 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- equal {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]}, {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- equal/13 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]}, {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} run/0: ingredient 0 is 1 mem/0: location 1 is 1000 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/new_overflow b/cpp/.traces/new_overflow index 1e41e693..91203b0e 100644 --- a/cpp/.traces/new_overflow +++ b/cpp/.traces/new_overflow @@ -12,11 +12,11 @@ after-brace/0: new ... new/0: routine allocated memory from 1000 to 1002 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 1000 mem/0: storing 1000 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-6, properties: ["2": "address":"point", "raw": ]} <- new {name: "point", value: 6, type: 0, properties: ["point": "type"]} +run/0: {name: "2", value: 2, type: 2-6, properties: ["2": "address":"point", "raw": ]} <- new/41 {name: "point", value: 6, type: 0, properties: ["point": "type"]} new/0: routine allocated memory from 1002 to 1004 mem/0: new alloc: 1002 mem/0: storing 1002 in location 2 diff --git a/cpp/.traces/new_string b/cpp/.traces/new_string index d926b829..75357567 100644 --- a/cpp/.traces/new_string +++ b/cpp/.traces/new_string @@ -12,10 +12,10 @@ after-brace/0: index ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character"]} <- new {name: "abc def", value: 0, type: 0, properties: ["abc def": "literal-string"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character"]} <- new/41 {name: "abc def", value: 0, type: 0, properties: ["abc def": "literal-string"]} mem/0: storing 1000 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- index {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": ]}, {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- index/25 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": ]}, {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": ]} mem/0: location 1 is 1000 run/0: ingredient 1 is {name: "5", value: 5, type: 0, properties: ["5": "literal"]} diff --git a/cpp/.traces/next_ingredient b/cpp/.traces/next_ingredient index 0b91ebf7..814f9298 100644 --- a/cpp/.traces/next_ingredient +++ b/cpp/.traces/next_ingredient @@ -14,13 +14,13 @@ after-brace/0: add ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: f {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 12 run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- add {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- add/2 {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} run/0: ingredient 0 is 1 run/0: ingredient 1 is 12 mem/0: location 12 is 2 diff --git a/cpp/.traces/next_ingredient_missing b/cpp/.traces/next_ingredient_missing index 06f8e65c..f67ee2c5 100644 --- a/cpp/.traces/next_ingredient_missing +++ b/cpp/.traces/next_ingredient_missing @@ -9,7 +9,7 @@ after-brace/0: next-ingredient ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: f +run/0: f/1001 run/0: instruction f/0 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/29 mem/0: storing 0 in location 12 diff --git a/cpp/.traces/not b/cpp/.traces/not index 24db029f..5450b050 100644 --- a/cpp/.traces/not +++ b/cpp/.traces/not @@ -10,11 +10,11 @@ after-brace/0: not ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- not {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- not/9 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1 run/0: product 0 is 0 diff --git a/cpp/.traces/or b/cpp/.traces/or index 50a78dee..72231ceb 100644 --- a/cpp/.traces/or +++ b/cpp/.traces/or @@ -15,15 +15,15 @@ after-brace/0: or ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is 1 mem/0: storing 1 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- or {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- or/8 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/print-character-at-top-left b/cpp/.traces/print-character-at-top-left index 3bdff75f..4358d624 100644 --- a/cpp/.traces/print-character-at-top-left +++ b/cpp/.traces/print-character-at-top-left @@ -28,7 +28,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: print-character-at-top-left run/0: instruction print-character-at-top-left/0 -run/0: run {name: " +run/0: run/42 {name: " #? $start-tracing #? 3 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' @@ -63,17 +63,17 @@ after-brace/0: print-character ... after-brace/0: get ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} +run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen/115 {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} +run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/41 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} mem/0: new alloc: 1031 mem/0: storing 1031 in location 1002 run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is num-columns @@ -81,12 +81,12 @@ run/0: address to copy is 1032 run/0: product 0 is 1032 mem/0: storing 1032 in location 1003 run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient +run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/29 run/0: product 0 is 3 mem/0: location 1003 is 1032 mem/0: storing 3 in location 1032 run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} +run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is num-rows @@ -94,12 +94,12 @@ run/0: address to copy is 1031 run/0: product 0 is 1031 mem/0: storing 1031 in location 1004 run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient +run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: location 1004 is 1031 mem/0: storing 2 in location 1031 run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is cursor-row @@ -107,12 +107,12 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1005 run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1005 is 1033 mem/0: storing 0 in location 1033 run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is cursor-column @@ -120,12 +120,12 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1006 run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: location 1006 is 1034 mem/0: storing 0 in location 1034 run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} +run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} run/0: ingredient 0 is width mem/0: location 1003 is 1032 mem/0: location 1032 is 3 @@ -136,7 +136,7 @@ run/0: ingredient 1 is 2 run/0: product 0 is 6 mem/0: storing 6 in location 1007 run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/24 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is result mem/0: location 1002 is 1031 run/0: ingredient 1 is data @@ -144,30 +144,30 @@ run/0: address to copy is 1035 run/0: product 0 is 1035 mem/0: storing 1035 in location 1008 run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} +run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/41 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} mem/0: location 1007 is 6 mem/0: array size is 6 mem/0: new alloc: 1036 mem/0: location 1008 is 1035 mem/0: storing 1036 in location 1035 run/0: instruction init-fake-screen/13 -run/0: clear-screen {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} +run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} mem/0: location 1002 is 1031 run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1043 run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1045 run/0: instruction clear-screen/3 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} mem/0: location 1045 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1045 is 1031 run/0: ingredient 1 is data @@ -177,15 +177,15 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1046 run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} +run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} mem/0: location 1046 is 1036 mem/0: storing 6 in location 1047 run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1048 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 0 run/0: ingredient 1 is max @@ -193,12 +193,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -207,23 +207,23 @@ run/0: address to copy is 1037 run/0: product 0 is 1037 mem/0: storing 1037 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1037 mem/0: storing 0 in location 1037 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 1 run/0: ingredient 1 is max @@ -231,12 +231,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -245,23 +245,23 @@ run/0: address to copy is 1038 run/0: product 0 is 1038 mem/0: storing 1038 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1038 mem/0: storing 0 in location 1038 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 2 run/0: ingredient 1 is max @@ -269,12 +269,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -283,23 +283,23 @@ run/0: address to copy is 1039 run/0: product 0 is 1039 mem/0: storing 1039 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1039 mem/0: storing 0 in location 1039 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 3 run/0: ingredient 1 is max @@ -307,12 +307,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -321,23 +321,23 @@ run/0: address to copy is 1040 run/0: product 0 is 1040 mem/0: storing 1040 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1040 mem/0: storing 0 in location 1040 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 4 run/0: ingredient 1 is max @@ -345,12 +345,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -359,23 +359,23 @@ run/0: address to copy is 1041 run/0: product 0 is 1041 mem/0: storing 1041 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1041 mem/0: storing 0 in location 1041 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 5 run/0: ingredient 1 is max @@ -383,12 +383,12 @@ mem/0: location 1047 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/26 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is buf mem/0: location 1046 is 1036 run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} @@ -397,23 +397,23 @@ run/0: address to copy is 1042 run/0: product 0 is 1042 mem/0: storing 1042 in location 1050 run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} +run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} run/0: ingredient 0 is mem/0: location 1050 is 1042 mem/0: storing 0 in location 1042 run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1048 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1048 run/0: instruction clear-screen/13 -run/0: loop {name: "", value: -6, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} run/0: ingredient 0 is -6 run/0: jumping to instruction 8 run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} +run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} run/0: ingredient 0 is i mem/0: location 1048 is 6 run/0: ingredient 1 is max @@ -421,41 +421,41 @@ mem/0: location 1047 is 6 run/0: product 0 is 1 mem/0: storing 1 in location 1049 run/0: instruction clear-screen/9 -run/0: break-if {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} mem/0: location 1049 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 14 run/0: instruction clear-screen/15 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1045 is 1031 run/0: instruction init-fake-screen/14 -run/0: reply {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} +run/0: reply/32 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} mem/0: location 1002 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} +run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character/117 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} mem/0: location 1 is 1031 run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1074 run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient +run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1076 run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient +run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/29 run/0: product 0 is 97 mem/0: storing 97 in location 1077 run/0: instruction print-character/4 -run/0: break-unless {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} +run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} mem/0: location 1076 is 1031 run/0: ingredient 0 is 1031 run/0: jump-unless fell through run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} +run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is cursor-row @@ -463,7 +463,7 @@ run/0: address to copy is 1033 run/0: product 0 is 1033 mem/0: storing 1033 in location 1078 run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is cursor-column @@ -471,7 +471,7 @@ run/0: address to copy is 1034 run/0: product 0 is 1034 mem/0: storing 1034 in location 1079 run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} +run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is num-columns @@ -481,7 +481,7 @@ mem/0: location 1032 is 3 run/0: product 0 is 3 mem/0: storing 3 in location 1080 run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is row mem/0: location 1078 is 1033 mem/0: location 1033 is 0 @@ -491,7 +491,7 @@ run/0: ingredient 1 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1081 run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} +run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} run/0: ingredient 0 is index mem/0: location 1081 is 0 run/0: ingredient 1 is column @@ -500,7 +500,7 @@ mem/0: location 1034 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 1081 run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/23 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is x mem/0: location 1076 is 1031 run/0: ingredient 1 is data @@ -510,7 +510,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 1082 run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/26 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} run/0: ingredient 0 is buf mem/0: location 1082 is 1036 run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} @@ -519,13 +519,13 @@ run/0: address to copy is 1037 run/0: product 0 is 1037 mem/0: storing 1037 in location 1083 run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy {name: "c", value: 2, type: 4, properties: ["c": "character"]} +run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} run/0: ingredient 0 is c mem/0: location 1077 is 97 mem/0: location 1083 is 1037 mem/0: storing 97 in location 1037 run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} +run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} run/0: ingredient 0 is column mem/0: location 1079 is 1034 mem/0: location 1034 is 0 @@ -534,12 +534,12 @@ mem/0: location 1080 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1084 run/0: instruction print-character/15 -run/0: break-if {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1084 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is column mem/0: location 1079 is 1034 mem/0: location 1034 is 0 @@ -548,12 +548,12 @@ run/0: product 0 is 1 mem/0: location 1079 is 1034 mem/0: storing 1 in location 1034 run/0: instruction print-character/18 -run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} mem/0: location 1076 is 1031 run/0: result 0 is 1031 mem/0: storing 1031 in location 1 run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} +run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get/23 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} run/0: ingredient 0 is 1 mem/0: location 1 is 1031 run/0: ingredient 1 is data @@ -563,7 +563,7 @@ mem/0: location 1035 is 1036 run/0: product 0 is 1036 mem/0: storing 1036 in location 2 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} +run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy/1 {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} run/0: ingredient 0 is 2 mem/0: location 2 is 1036 mem/0: location 1036 is 6 @@ -581,7 +581,7 @@ mem/0: storing 0 in location 7 mem/0: storing 0 in location 8 mem/0: storing 0 in location 9 run/0: instruction print-character-at-top-left/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 6 # width*height 4 <- 97 # 'a' 5 <- 0 diff --git a/cpp/.traces/reply b/cpp/.traces/reply index de83831a..5a7c9e81 100644 --- a/cpp/.traces/reply +++ b/cpp/.traces/reply @@ -20,20 +20,20 @@ after-brace/0: reply ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]}, {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- f {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]}, {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 12 run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- add {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- add/2 {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} run/0: ingredient 0 is 1 run/0: ingredient 1 is 12 mem/0: location 12 is 2 run/0: product 0 is 3 mem/0: storing 3 in location 13 run/0: instruction f/2 -run/0: reply {name: "12", value: 12, type: 1, properties: ["12": "integer"]}, {name: "13", value: 13, type: 1, properties: ["13": "integer"]} +run/0: reply/32 {name: "12", value: 12, type: 1, properties: ["12": "integer"]}, {name: "13", value: 13, type: 1, properties: ["13": "integer"]} mem/0: location 12 is 2 mem/0: location 13 is 3 run/0: result 0 is 2 diff --git a/cpp/.traces/reply_container b/cpp/.traces/reply_container index 10916f34..beaaab68 100644 --- a/cpp/.traces/reply_container +++ b/cpp/.traces/reply_container @@ -17,17 +17,17 @@ after-brace/0: reply ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "3", value: 3, type: 6, properties: ["3": "point"]} <- f {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "3", value: 3, type: 6, properties: ["3": "point"]} <- f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 12 run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy {name: "35", value: 35, type: 0, properties: ["35": "literal"]} +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} run/0: ingredient 0 is 35 mem/0: storing 35 in location 13 run/0: instruction f/2 -run/0: reply {name: "12", value: 12, type: 6, properties: ["12": "point"]} +run/0: reply/32 {name: "12", value: 12, type: 6, properties: ["12": "point"]} mem/0: location 12 is 2 mem/0: location 13 is 35 run/0: result 0 is [2, 35] diff --git a/cpp/.traces/reply_same_as_ingredient b/cpp/.traces/reply_same_as_ingredient index 781da74a..6c030bd3 100644 --- a/cpp/.traces/reply_same_as_ingredient +++ b/cpp/.traces/reply_same_as_ingredient @@ -18,18 +18,18 @@ after-brace/0: reply ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- new {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- new/41 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} mem/0: new alloc: 1000 mem/0: storing 1000 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer"]} <- test1 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} +run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer"]} <- test1/1001 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} mem/0: location 1 is 1000 run/0: instruction test1/0 -run/0: {name: "10", value: 10, type: 2-1, properties: ["10": "address":"integer"]} <- next-ingredient +run/0: {name: "10", value: 10, type: 2-1, properties: ["10": "address":"integer"]} <- next-ingredient/29 run/0: product 0 is 1000 mem/0: storing 1000 in location 10 run/0: instruction test1/1 -run/0: reply {name: "10", value: 10, type: 2-1, properties: ["10": "address":"integer", "same-as-ingredient": "0"]} +run/0: reply/32 {name: "10", value: 10, type: 2-1, properties: ["10": "address":"integer", "same-as-ingredient": "0"]} mem/0: location 10 is 1000 run/0: result 0 is 1000 warn/0: 'same-as-ingredient' result 2 must be location 1 diff --git a/cpp/.traces/return_on_fallthrough b/cpp/.traces/return_on_fallthrough index 60b3b79f..01d38444 100644 --- a/cpp/.traces/return_on_fallthrough +++ b/cpp/.traces/return_on_fallthrough @@ -25,24 +25,24 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: f +run/0: f/1001 run/0: instruction f/0 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 4 run/0: instruction f/1 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 5 run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 run/0: instruction main/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 3 diff --git a/cpp/.traces/rewind_ingredients b/cpp/.traces/rewind_ingredients index ffe655b3..7e01e4f3 100644 --- a/cpp/.traces/rewind_ingredients +++ b/cpp/.traces/rewind_ingredients @@ -19,18 +19,18 @@ after-brace/0: next-ingredient ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: f {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient +run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 12 run/0: instruction f/1 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient/29 mem/0: storing 0 in location 1 run/0: instruction f/2 -run/0: rewind-ingredients +run/0: rewind-ingredients/30 run/0: instruction f/3 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "2", value: 2, type: 3, properties: ["2": "boolean"]} <- next-ingredient +run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "2", value: 2, type: 3, properties: ["2": "boolean"]} <- next-ingredient/29 run/0: product 0 is 2 mem/0: storing 2 in location 13 mem/0: storing 1 in location 2 diff --git a/cpp/.traces/run b/cpp/.traces/run index 0fd2d418..f8480ccb 100644 --- a/cpp/.traces/run +++ b/cpp/.traces/run @@ -9,7 +9,7 @@ after-brace/0: run ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- copy 13:literal ", value: 0, type: 0, properties: [" 1:integer <- copy 13:literal @@ -20,6 +20,6 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 1 diff --git a/cpp/.traces/run_dummy b/cpp/.traces/run_dummy index 49ad354d..0cd9cdf3 100644 --- a/cpp/.traces/run_dummy +++ b/cpp/.traces/run_dummy @@ -6,5 +6,5 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 diff --git a/cpp/.traces/run_label b/cpp/.traces/run_label index 4d643bd7..f9f2fce7 100644 --- a/cpp/.traces/run_label +++ b/cpp/.traces/run_label @@ -11,11 +11,11 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 1 run/0: instruction main/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 23 mem/0: storing 23 in location 2 diff --git a/cpp/.traces/run_multiple b/cpp/.traces/run_multiple index a34de64b..6d11353c 100644 --- a/cpp/.traces/run_multiple +++ b/cpp/.traces/run_multiple @@ -16,7 +16,7 @@ after-brace/0: run ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- copy 13:literal ", value: 0, type: 0, properties: [" 1:integer <- copy 13:literal @@ -27,11 +27,11 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 1 run/0: instruction main/1 -run/0: run {name: " +run/0: run/42 {name: " 2:integer <- copy 13:literal ", value: 0, type: 0, properties: [" 2:integer <- copy 13:literal @@ -42,6 +42,6 @@ parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} after-brace/0: recipe run1002 after-brace/0: copy ... run/0: instruction run1002/0 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 2 diff --git a/cpp/.traces/scenario_block b/cpp/.traces/scenario_block index 75f23e5b..b57ef92d 100644 --- a/cpp/.traces/scenario_block +++ b/cpp/.traces/scenario_block @@ -16,7 +16,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: foo run/0: instruction foo/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- copy 13:literal ", value: 0, type: 0, properties: [" 1:integer <- copy 13:literal @@ -27,11 +27,11 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 1 run/0: instruction foo/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 13 ", value: 0, type: 0, properties: [" 1 <- 13 diff --git a/cpp/.traces/scenario_check_memory_and_trace b/cpp/.traces/scenario_check_memory_and_trace index 683f827e..8eceb1a5 100644 --- a/cpp/.traces/scenario_check_memory_and_trace +++ b/cpp/.traces/scenario_check_memory_and_trace @@ -32,7 +32,7 @@ after-brace/0: trace-should-not-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: foo run/0: instruction foo/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- copy 13:literal trace [a], [a b c] ", value: 0, type: 0, properties: [" @@ -49,27 +49,27 @@ after-brace/0: recipe run1001 after-brace/0: copy ... after-brace/0: trace ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 1 run/0: instruction run1001/1 -run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "a b c", value: 0, type: 0, properties: ["a b c": "literal-string"]} +run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "a b c", value: 0, type: 0, properties: ["a b c": "literal-string"]} a/0: a b c run/0: instruction foo/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 13 ", value: 0, type: 0, properties: [" 1 <- 13 ": "literal-string"]} run/0: checking location 1 run/0: instruction foo/2 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " a: a b c ", value: 0, type: 0, properties: [" a: a b c ": "literal-string"]} run/0: instruction foo/3 -run/0: trace-should-not-contain {name: " +run/0: trace-should-not-contain/45 {name: " a: x y z ", value: 0, type: 0, properties: [" a: x y z diff --git a/cpp/.traces/scenario_multiple_blocks b/cpp/.traces/scenario_multiple_blocks index 12434407..e627fdb7 100644 --- a/cpp/.traces/scenario_multiple_blocks +++ b/cpp/.traces/scenario_multiple_blocks @@ -32,7 +32,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: foo run/0: instruction foo/0 -run/0: run {name: " +run/0: run/42 {name: " 1:integer <- copy 13:literal ", value: 0, type: 0, properties: [" 1:integer <- copy 13:literal @@ -43,18 +43,18 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 1 run/0: instruction foo/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 13 ", value: 0, type: 0, properties: [" 1 <- 13 ": "literal-string"]} run/0: checking location 1 run/0: instruction foo/2 -run/0: run {name: " +run/0: run/42 {name: " 2:integer <- copy 13:literal ", value: 0, type: 0, properties: [" 2:integer <- copy 13:literal @@ -65,11 +65,11 @@ parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} after-brace/0: recipe run1002 after-brace/0: copy ... run/0: instruction run1002/0 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} run/0: ingredient 0 is 13 mem/0: storing 13 in location 2 run/0: instruction foo/3 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 13 2 <- 13 ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/scenario_with_comment_in_mu b/cpp/.traces/scenario_with_comment_in_mu index f5d44965..57fe0aae 100644 --- a/cpp/.traces/scenario_with_comment_in_mu +++ b/cpp/.traces/scenario_with_comment_in_mu @@ -18,7 +18,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: scenario_with_comment_in_mu run/0: instruction scenario_with_comment_in_mu/0 -run/0: run {name: " +run/0: run/42 {name: " # comment 1:integer <- add 2:literal, 2:literal ", value: 0, type: 0, properties: [" @@ -32,13 +32,13 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: add ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction scenario_with_comment_in_mu/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 4 ", value: 0, type: 0, properties: [" 1 <- 4 diff --git a/cpp/.traces/scenario_with_multiple_comments_in_mu b/cpp/.traces/scenario_with_multiple_comments_in_mu index e46f5b36..55079205 100644 --- a/cpp/.traces/scenario_with_multiple_comments_in_mu +++ b/cpp/.traces/scenario_with_multiple_comments_in_mu @@ -20,7 +20,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: scenario_with_multiple_comments_in_mu run/0: instruction scenario_with_multiple_comments_in_mu/0 -run/0: run {name: " +run/0: run/42 {name: " # comment1 # comment2 1:integer <- add 2:literal, 2:literal @@ -36,13 +36,13 @@ parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} after-brace/0: recipe run1001 after-brace/0: add ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction scenario_with_multiple_comments_in_mu/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 1 <- 4 ", value: 0, type: 0, properties: [" 1 <- 4 diff --git a/cpp/.traces/scheduler b/cpp/.traces/scheduler index a2124020..ea78689e 100644 --- a/cpp/.traces/scheduler +++ b/cpp/.traces/scheduler @@ -14,15 +14,15 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: f1 run/0: instruction f1/0 -run/0: start-running {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} +run/0: start-running/33 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} run/0: ingredient 0 is f2 new/0: routine allocated memory from 101000 to 201000 run/0: instruction f1/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} run/0: ingredient 0 is 3 mem/0: storing 3 in location 1 schedule/0: f2 run/0: instruction f2/0 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "4", value: 4, type: 0, properties: ["4": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} run/0: ingredient 0 is 4 mem/0: storing 4 in location 2 diff --git a/cpp/.traces/scheduler_interleaves_routines b/cpp/.traces/scheduler_interleaves_routines index 60b6cda4..152ef18f 100644 --- a/cpp/.traces/scheduler_interleaves_routines +++ b/cpp/.traces/scheduler_interleaves_routines @@ -22,27 +22,27 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: f1 run/0: instruction f1/0 -run/0: start-running {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} +run/0: start-running/33 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} run/0: ingredient 0 is f2 new/0: routine allocated memory from 101000 to 201000 schedule/0: f2 run/0: instruction f2/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "4", value: 4, type: 0, properties: ["4": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} run/0: ingredient 0 is 4 mem/0: storing 4 in location 3 schedule/0: f1 run/0: instruction f1/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1 schedule/0: f2 run/0: instruction f2/1 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy {name: "4", value: 4, type: 0, properties: ["4": "literal"]} +run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} run/0: ingredient 0 is 4 mem/0: storing 4 in location 4 schedule/0: f1 run/0: instruction f1/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 2 schedule/0: f2 diff --git a/cpp/.traces/scheduler_runs_single_routine b/cpp/.traces/scheduler_runs_single_routine index 8f5d7102..2847f47c 100644 --- a/cpp/.traces/scheduler_runs_single_routine +++ b/cpp/.traces/scheduler_runs_single_routine @@ -10,12 +10,12 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: f1 run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1 schedule/0: f1 run/0: instruction f1/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 2 schedule/0: f1 diff --git a/cpp/.traces/scheduler_skips_completed_routines b/cpp/.traces/scheduler_skips_completed_routines index 9e609d02..b8ed33a9 100644 --- a/cpp/.traces/scheduler_skips_completed_routines +++ b/cpp/.traces/scheduler_skips_completed_routines @@ -18,11 +18,11 @@ after-brace/0: copy ... new/0: routine allocated memory from 201000 to 301000 schedule/0: f3 run/0: instruction f3/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 3 schedule/0: f1 run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1 diff --git a/cpp/.traces/scheduler_starts_at_middle_of_routines b/cpp/.traces/scheduler_starts_at_middle_of_routines index 2c35f427..c51216fb 100644 --- a/cpp/.traces/scheduler_starts_at_middle_of_routines +++ b/cpp/.traces/scheduler_starts_at_middle_of_routines @@ -11,10 +11,10 @@ after-brace/0: copy ... new/0: routine allocated memory from 101000 to 201000 schedule/0: f1 run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1 run/0: instruction f1/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 2 diff --git a/cpp/.traces/set_default_space b/cpp/.traces/set_default_space index fbaa9aec..b26649b0 100644 --- a/cpp/.traces/set_default_space +++ b/cpp/.traces/set_default_space @@ -14,13 +14,13 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "10", value: 10, type: 1, properties: ["10": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "10", value: 10, type: 1, properties: ["10": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 10 run/0: instruction main/1 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is 10 run/0: instruction main/2 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 12 diff --git a/cpp/.traces/store_indirect b/cpp/.traces/store_indirect index 0bfc8cc6..7fec6492 100644 --- a/cpp/.traces/store_indirect +++ b/cpp/.traces/store_indirect @@ -10,11 +10,11 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 2 mem/0: storing 2 in location 1 run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: location 1 is 2 mem/0: storing 34 in location 2 diff --git a/cpp/.traces/string-append-1 b/cpp/.traces/string-append-1 index 85ebe32c..8b514403 100644 --- a/cpp/.traces/string-append-1 +++ b/cpp/.traces/string-append-1 @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: string-append-1 run/0: instruction string-append-1/0 -run/0: run {name: " +run/0: run/42 {name: " 1:address:array:character/raw <- new [hello,] 2:address:array:character/raw <- new [ world!] 3:address:array:character/raw <- string-append 1:address:array:character/raw, 2:address:array:character/raw @@ -54,37 +54,37 @@ after-brace/0: new ... after-brace/0: string-append ... after-brace/0: copy ... run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "hello,", value: 0, type: 0, properties: ["hello,": "literal-string"]} +run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/41 {name: "hello,", value: 0, type: 0, properties: ["hello,": "literal-string"]} mem/0: storing 1000 in location 1 run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: " world!", value: 0, type: 0, properties: [" world!": "literal-string"]} +run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/41 {name: " world!", value: 0, type: 0, properties: [" world!": "literal-string"]} mem/0: storing 1007 in location 2 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- string-append {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} +run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- string-append/106 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} mem/0: location 1 is 1000 mem/0: location 2 is 1007 run/0: instruction string-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1015 run/0: instruction string-append/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient +run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1000 mem/0: storing 1000 in location 1017 run/0: instruction string-append/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 mem/0: storing 6 in location 1018 run/0: instruction string-append/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient +run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1007 mem/0: storing 1007 in location 1019 run/0: instruction string-append/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} +run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/27 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 mem/0: storing 7 in location 1020 run/0: instruction string-append/5 -run/0: {name: "result-len", value: 5, type: 1, properties: ["result-len": "integer"]} <- add {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "result-len", value: 5, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is a-len mem/0: location 1018 is 6 run/0: ingredient 1 is b-len @@ -92,21 +92,21 @@ mem/0: location 1020 is 7 run/0: product 0 is 13 mem/0: storing 13 in location 1021 run/0: instruction string-append/6 -run/0: {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 5, type: 1, properties: ["result-len": "integer"]} +run/0: {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/41 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 5, type: 1, properties: ["result-len": "integer"]} mem/0: location 1021 is 13 mem/0: array size is 13 mem/0: new alloc: 1046 mem/0: storing 1046 in location 1022 run/0: instruction string-append/7 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1023 run/0: instruction string-append/8 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 0 run/0: ingredient 1 is a-len @@ -114,12 +114,12 @@ mem/0: location 1018 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -128,7 +128,7 @@ run/0: address to copy is 1047 run/0: product 0 is 1047 mem/0: storing 1047 in location 1026 run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -139,31 +139,31 @@ mem/0: location 1001 is 104 run/0: product 0 is 104 mem/0: storing 104 in location 1027 run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 104 mem/0: location 1026 is 1047 mem/0: storing 104 in location 1047 run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1024 run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1023 run/0: instruction string-append/17 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 10 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 1 run/0: ingredient 1 is a-len @@ -171,12 +171,12 @@ mem/0: location 1018 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -185,7 +185,7 @@ run/0: address to copy is 1048 run/0: product 0 is 1048 mem/0: storing 1048 in location 1026 run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -196,31 +196,31 @@ mem/0: location 1002 is 101 run/0: product 0 is 101 mem/0: storing 101 in location 1027 run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 101 mem/0: location 1026 is 1048 mem/0: storing 101 in location 1048 run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1024 run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1023 run/0: instruction string-append/17 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 10 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 2 run/0: ingredient 1 is a-len @@ -228,12 +228,12 @@ mem/0: location 1018 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -242,7 +242,7 @@ run/0: address to copy is 1049 run/0: product 0 is 1049 mem/0: storing 1049 in location 1026 run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -253,31 +253,31 @@ mem/0: location 1003 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1027 run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 108 mem/0: location 1026 is 1049 mem/0: storing 108 in location 1049 run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1024 run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1023 run/0: instruction string-append/17 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 10 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 3 run/0: ingredient 1 is a-len @@ -285,12 +285,12 @@ mem/0: location 1018 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -299,7 +299,7 @@ run/0: address to copy is 1050 run/0: product 0 is 1050 mem/0: storing 1050 in location 1026 run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -310,31 +310,31 @@ mem/0: location 1004 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1027 run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 108 mem/0: location 1026 is 1050 mem/0: storing 108 in location 1050 run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1024 run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1023 run/0: instruction string-append/17 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 10 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 4 run/0: ingredient 1 is a-len @@ -342,12 +342,12 @@ mem/0: location 1018 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -356,7 +356,7 @@ run/0: address to copy is 1051 run/0: product 0 is 1051 mem/0: storing 1051 in location 1026 run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -367,31 +367,31 @@ mem/0: location 1005 is 111 run/0: product 0 is 111 mem/0: storing 111 in location 1027 run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 111 mem/0: location 1026 is 1051 mem/0: storing 111 in location 1051 run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1024 run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1023 run/0: instruction string-append/17 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 10 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 5 run/0: ingredient 1 is a-len @@ -399,12 +399,12 @@ mem/0: location 1018 is 6 run/0: product 0 is 0 mem/0: storing 0 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -413,7 +413,7 @@ run/0: address to copy is 1052 run/0: product 0 is 1052 mem/0: storing 1052 in location 1026 run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1017 is 1000 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -424,31 +424,31 @@ mem/0: location 1006 is 44 run/0: product 0 is 44 mem/0: storing 44 in location 1027 run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 44 mem/0: location 1026 is 1052 mem/0: storing 44 in location 1052 run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1024 run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1023 run/0: instruction string-append/17 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 10 run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 6 run/0: ingredient 1 is a-len @@ -456,17 +456,17 @@ mem/0: location 1018 is 6 run/0: product 0 is 1 mem/0: storing 1 in location 1025 run/0: instruction string-append/11 -run/0: break-if {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1025 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 18 run/0: instruction string-append/19 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1024 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 0 run/0: ingredient 1 is b-len @@ -474,12 +474,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -488,7 +488,7 @@ run/0: address to copy is 1053 run/0: product 0 is 1053 mem/0: storing 1053 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -499,31 +499,31 @@ mem/0: location 1008 is 32 run/0: product 0 is 32 mem/0: storing 32 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 32 mem/0: location 1026 is 1053 mem/0: storing 32 in location 1053 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 1 run/0: ingredient 1 is b-len @@ -531,12 +531,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -545,7 +545,7 @@ run/0: address to copy is 1054 run/0: product 0 is 1054 mem/0: storing 1054 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -556,31 +556,31 @@ mem/0: location 1009 is 119 run/0: product 0 is 119 mem/0: storing 119 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 119 mem/0: location 1026 is 1054 mem/0: storing 119 in location 1054 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 7 run/0: ingredient 1 is 1 run/0: product 0 is 8 mem/0: storing 8 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 2 run/0: ingredient 1 is b-len @@ -588,12 +588,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -602,7 +602,7 @@ run/0: address to copy is 1055 run/0: product 0 is 1055 mem/0: storing 1055 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -613,31 +613,31 @@ mem/0: location 1010 is 111 run/0: product 0 is 111 mem/0: storing 111 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 111 mem/0: location 1026 is 1055 mem/0: storing 111 in location 1055 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 8 run/0: ingredient 1 is 1 run/0: product 0 is 9 mem/0: storing 9 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 3 run/0: ingredient 1 is b-len @@ -645,12 +645,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -659,7 +659,7 @@ run/0: address to copy is 1056 run/0: product 0 is 1056 mem/0: storing 1056 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -670,31 +670,31 @@ mem/0: location 1011 is 114 run/0: product 0 is 114 mem/0: storing 114 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 114 mem/0: location 1026 is 1056 mem/0: storing 114 in location 1056 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 9 run/0: ingredient 1 is 1 run/0: product 0 is 10 mem/0: storing 10 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 4 run/0: ingredient 1 is b-len @@ -702,12 +702,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -716,7 +716,7 @@ run/0: address to copy is 1057 run/0: product 0 is 1057 mem/0: storing 1057 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -727,31 +727,31 @@ mem/0: location 1012 is 108 run/0: product 0 is 108 mem/0: storing 108 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 108 mem/0: location 1026 is 1057 mem/0: storing 108 in location 1057 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 mem/0: storing 5 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 10 run/0: ingredient 1 is 1 run/0: product 0 is 11 mem/0: storing 11 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 5 run/0: ingredient 1 is b-len @@ -759,12 +759,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -773,7 +773,7 @@ run/0: address to copy is 1058 run/0: product 0 is 1058 mem/0: storing 1058 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -784,31 +784,31 @@ mem/0: location 1013 is 100 run/0: product 0 is 100 mem/0: storing 100 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 100 mem/0: location 1026 is 1058 mem/0: storing 100 in location 1058 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 6 mem/0: storing 6 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 11 run/0: ingredient 1 is 1 run/0: product 0 is 12 mem/0: storing 12 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 6 run/0: ingredient 1 is b-len @@ -816,12 +816,12 @@ mem/0: location 1020 is 7 run/0: product 0 is 0 mem/0: storing 0 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/26 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} run/0: ingredient 0 is result mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} @@ -830,7 +830,7 @@ run/0: address to copy is 1059 run/0: product 0 is 1059 mem/0: storing 1059 in location 1026 run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} +run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1019 is 1007 run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} @@ -841,31 +841,31 @@ mem/0: location 1014 is 33 run/0: product 0 is 33 mem/0: storing 33 in location 1027 run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy {name: "in", value: 11, type: 4, properties: ["in": "character"]} +run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} run/0: ingredient 0 is in mem/0: location 1027 is 33 mem/0: location 1026 is 1059 mem/0: storing 33 in location 1059 run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1024 is 6 run/0: ingredient 1 is 1 run/0: product 0 is 7 mem/0: storing 7 in location 1024 run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is result-idx mem/0: location 1023 is 12 run/0: ingredient 1 is 1 run/0: product 0 is 13 mem/0: storing 13 in location 1023 run/0: instruction string-append/28 -run/0: loop {name: "", value: -8, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} run/0: ingredient 0 is -8 run/0: jumping to instruction 21 run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1024 is 7 run/0: ingredient 1 is b-len @@ -873,18 +873,18 @@ mem/0: location 1020 is 7 run/0: product 0 is 1 mem/0: storing 1 in location 1028 run/0: instruction string-append/22 -run/0: break-if {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} +run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} mem/0: location 1028 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 29 run/0: instruction string-append/30 -run/0: reply {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character"]} +run/0: reply/32 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character"]} mem/0: location 1022 is 1046 run/0: result 0 is 1046 mem/0: storing 1046 in location 3 run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} +run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} run/0: ingredient 0 is 3 mem/0: location 3 is 1046 mem/0: location 1046 is 13 @@ -916,7 +916,7 @@ mem/0: storing 108 in location 15 mem/0: storing 100 in location 16 mem/0: storing 33 in location 17 run/0: instruction string-append-1/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 4:string <- [hello, world!] ", value: 0, type: 0, properties: [" 4:string <- [hello, world!] diff --git a/cpp/.traces/string-equal-common-lengths-but-distinct b/cpp/.traces/string-equal-common-lengths-but-distinct index d68b3984..de6e94aa 100644 --- a/cpp/.traces/string-equal-common-lengths-but-distinct +++ b/cpp/.traces/string-equal-common-lengths-but-distinct @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: string-equal-common-lengths-but-distinct run/0: instruction string-equal-common-lengths-but-distinct/0 -run/0: run {name: " +run/0: run/42 {name: " default-space:address:array:location <- new location:type, 30:literal x:address:array:character <- new [abc] y:address:array:character <- new [abd] @@ -58,44 +58,44 @@ after-brace/0: new ... after-brace/0: new ... after-brace/0: string-equal ... run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1031 in location 1002 run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abd", value: 0, type: 0, properties: ["abd": "literal-string"]} +run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/41 {name: "abd", value: 0, type: 0, properties: ["abd": "literal-string"]} mem/0: storing 1035 in location 1003 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} mem/0: location 1002 is 1031 mem/0: location 1003 is 1035 run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient +run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 mem/0: storing 3 in location 1042 run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient +run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1035 mem/0: storing 1035 in location 1043 run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} +run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/27 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 mem/0: storing 3 in location 1044 run/0: instruction string-equal/6 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} string-equal/0: comparing lengths run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is a-len mem/0: location 1042 is 3 run/0: ingredient 1 is b-len @@ -103,20 +103,20 @@ mem/0: location 1044 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1045 run/0: instruction string-equal/8 -run/0: break-if {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1045 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 10 run/0: instruction string-equal/11 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} string-equal/0: comparing characters run/0: instruction string-equal/12 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1046 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 0 run/0: ingredient 1 is a-len @@ -124,12 +124,12 @@ mem/0: location 1042 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -140,7 +140,7 @@ mem/0: location 1032 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1048 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -151,7 +151,7 @@ mem/0: location 1036 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1049 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1048 is 97 run/0: ingredient 1 is b2 @@ -159,24 +159,24 @@ mem/0: location 1049 is 97 run/0: product 0 is 1 mem/0: storing 1 in location 1050 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1050 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1046 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1046 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 1 run/0: ingredient 1 is a-len @@ -184,12 +184,12 @@ mem/0: location 1042 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -200,7 +200,7 @@ mem/0: location 1033 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1048 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -211,7 +211,7 @@ mem/0: location 1037 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1049 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1048 is 98 run/0: ingredient 1 is b2 @@ -219,24 +219,24 @@ mem/0: location 1049 is 98 run/0: product 0 is 1 mem/0: storing 1 in location 1050 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1050 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1046 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1046 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 2 run/0: ingredient 1 is a-len @@ -244,12 +244,12 @@ mem/0: location 1042 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -260,7 +260,7 @@ mem/0: location 1034 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1048 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -271,7 +271,7 @@ mem/0: location 1038 is 100 run/0: product 0 is 100 mem/0: storing 100 in location 1049 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1048 is 99 run/0: ingredient 1 is b2 @@ -279,16 +279,16 @@ mem/0: location 1049 is 100 run/0: product 0 is 0 mem/0: storing 0 in location 1050 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1050 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/21 -run/0: reply {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: reply/32 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: result 0 is 0 mem/0: storing 0 in location 3 run/0: instruction string-equal-common-lengths-but-distinct/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 0 # abc != abd ", value: 0, type: 0, properties: [" 3 <- 0 # abc != abd diff --git a/cpp/.traces/string-equal-distinct-lengths b/cpp/.traces/string-equal-distinct-lengths index 510c4252..72b419f9 100644 --- a/cpp/.traces/string-equal-distinct-lengths +++ b/cpp/.traces/string-equal-distinct-lengths @@ -36,7 +36,7 @@ after-brace/0: trace-should-not-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: string-equal-distinct-lengths run/0: instruction string-equal-distinct-lengths/0 -run/0: run {name: " +run/0: run/42 {name: " default-space:address:array:location <- new location:type, 30:literal x:address:array:character <- new [abc] y:address:array:character <- new [abcd] @@ -72,44 +72,44 @@ after-brace/0: new ... after-brace/0: new ... after-brace/0: string-equal ... run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1031 in location 1002 run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} +run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/41 {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} mem/0: storing 1035 in location 1003 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} mem/0: location 1002 is 1031 mem/0: location 1003 is 1035 run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1040 run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient +run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1042 run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1031 mem/0: storing 3 in location 1043 run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient +run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1035 mem/0: storing 1035 in location 1044 run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} +run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/27 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1044 is 1035 mem/0: storing 4 in location 1045 run/0: instruction string-equal/6 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} string-equal/0: comparing lengths run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is a-len mem/0: location 1043 is 3 run/0: ingredient 1 is b-len @@ -117,29 +117,29 @@ mem/0: location 1045 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1046 run/0: instruction string-equal/8 -run/0: break-if {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/9 -run/0: reply {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: reply/32 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: result 0 is 0 mem/0: storing 0 in location 3 run/0: instruction string-equal-distinct-lengths/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 0 # abc != abcd ", value: 0, type: 0, properties: [" 3 <- 0 # abc != abcd ": "literal-string"]} run/0: checking location 3 run/0: instruction string-equal-distinct-lengths/2 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " string-equal: comparing lengths ", value: 0, type: 0, properties: [" string-equal: comparing lengths ": "literal-string"]} run/0: instruction string-equal-distinct-lengths/3 -run/0: trace-should-not-contain {name: " +run/0: trace-should-not-contain/45 {name: " string-equal: comparing characters ", value: 0, type: 0, properties: [" string-equal: comparing characters diff --git a/cpp/.traces/string-equal-identical b/cpp/.traces/string-equal-identical index 1ece4568..254f7617 100644 --- a/cpp/.traces/string-equal-identical +++ b/cpp/.traces/string-equal-identical @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: string-equal-identical run/0: instruction string-equal-identical/0 -run/0: run {name: " +run/0: run/42 {name: " default-space:address:array:location <- new location:type, 30:literal x:address:array:character <- new [abc] y:address:array:character <- new [abc] @@ -58,44 +58,44 @@ after-brace/0: new ... after-brace/0: new ... after-brace/0: string-equal ... run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1031 in location 1002 run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1035 in location 1003 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} mem/0: location 1002 is 1031 mem/0: location 1003 is 1035 run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1039 run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient +run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1041 run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 mem/0: storing 3 in location 1042 run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient +run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1035 mem/0: storing 1035 in location 1043 run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} +run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/27 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 mem/0: storing 3 in location 1044 run/0: instruction string-equal/6 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} string-equal/0: comparing lengths run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is a-len mem/0: location 1042 is 3 run/0: ingredient 1 is b-len @@ -103,20 +103,20 @@ mem/0: location 1044 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1045 run/0: instruction string-equal/8 -run/0: break-if {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1045 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 10 run/0: instruction string-equal/11 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} string-equal/0: comparing characters run/0: instruction string-equal/12 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1046 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 0 run/0: ingredient 1 is a-len @@ -124,12 +124,12 @@ mem/0: location 1042 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -140,7 +140,7 @@ mem/0: location 1032 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1048 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -151,7 +151,7 @@ mem/0: location 1036 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1049 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1048 is 97 run/0: ingredient 1 is b2 @@ -159,24 +159,24 @@ mem/0: location 1049 is 97 run/0: product 0 is 1 mem/0: storing 1 in location 1050 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1050 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1046 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1046 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 1 run/0: ingredient 1 is a-len @@ -184,12 +184,12 @@ mem/0: location 1042 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -200,7 +200,7 @@ mem/0: location 1033 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1048 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -211,7 +211,7 @@ mem/0: location 1037 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1049 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1048 is 98 run/0: ingredient 1 is b2 @@ -219,24 +219,24 @@ mem/0: location 1049 is 98 run/0: product 0 is 1 mem/0: storing 1 in location 1050 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1050 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1046 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1046 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 2 run/0: ingredient 1 is a-len @@ -244,12 +244,12 @@ mem/0: location 1042 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -260,7 +260,7 @@ mem/0: location 1034 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1048 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -271,7 +271,7 @@ mem/0: location 1038 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1049 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1048 is 99 run/0: ingredient 1 is b2 @@ -279,24 +279,24 @@ mem/0: location 1049 is 99 run/0: product 0 is 1 mem/0: storing 1 in location 1050 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1050 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1046 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1046 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1046 is 3 run/0: ingredient 1 is a-len @@ -304,17 +304,17 @@ mem/0: location 1042 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1047 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1047 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 25 run/0: instruction string-equal/26 -run/0: reply {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: reply/32 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: result 0 is 1 mem/0: storing 1 in location 3 run/0: instruction string-equal-identical/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 1 # abc == abc ", value: 0, type: 0, properties: [" 3 <- 1 # abc == abc diff --git a/cpp/.traces/string-equal-reflexive b/cpp/.traces/string-equal-reflexive index 2c525b68..b8e8a7c3 100644 --- a/cpp/.traces/string-equal-reflexive +++ b/cpp/.traces/string-equal-reflexive @@ -20,7 +20,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: string-equal-reflexive run/0: instruction string-equal-reflexive/0 -run/0: run {name: " +run/0: run/42 {name: " default-space:address:array:location <- new location:type, 30:literal x:address:array:character <- new [abc] 3:boolean/raw <- string-equal x:address:array:character, x:address:array:character @@ -48,41 +48,41 @@ after-brace/0: new ... after-brace/0: new ... after-brace/0: string-equal ... run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} +run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/41 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} mem/0: storing 1031 in location 1002 run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} mem/0: location 1002 is 1031 mem/0: location 1002 is 1031 run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1035 run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient +run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1037 run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1037 is 1031 mem/0: storing 3 in location 1038 run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient +run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1039 run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} +run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/27 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1039 is 1031 mem/0: storing 3 in location 1040 run/0: instruction string-equal/6 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} string-equal/0: comparing lengths run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is a-len mem/0: location 1038 is 3 run/0: ingredient 1 is b-len @@ -90,20 +90,20 @@ mem/0: location 1040 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1041 run/0: instruction string-equal/8 -run/0: break-if {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1041 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 10 run/0: instruction string-equal/11 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} string-equal/0: comparing characters run/0: instruction string-equal/12 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1042 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1042 is 0 run/0: ingredient 1 is a-len @@ -111,12 +111,12 @@ mem/0: location 1038 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1037 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -127,7 +127,7 @@ mem/0: location 1032 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1044 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1039 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -138,7 +138,7 @@ mem/0: location 1032 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1045 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1044 is 97 run/0: ingredient 1 is b2 @@ -146,24 +146,24 @@ mem/0: location 1045 is 97 run/0: product 0 is 1 mem/0: storing 1 in location 1046 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1046 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1042 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1042 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1042 is 1 run/0: ingredient 1 is a-len @@ -171,12 +171,12 @@ mem/0: location 1038 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1037 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -187,7 +187,7 @@ mem/0: location 1033 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1044 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1039 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -198,7 +198,7 @@ mem/0: location 1033 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1045 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1044 is 98 run/0: ingredient 1 is b2 @@ -206,24 +206,24 @@ mem/0: location 1045 is 98 run/0: product 0 is 1 mem/0: storing 1 in location 1046 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1046 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1042 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1042 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1042 is 2 run/0: ingredient 1 is a-len @@ -231,12 +231,12 @@ mem/0: location 1038 is 3 run/0: product 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/25 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1037 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -247,7 +247,7 @@ mem/0: location 1034 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1044 run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} +run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/25 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1039 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} @@ -258,7 +258,7 @@ mem/0: location 1034 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1045 run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} +run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} run/0: ingredient 0 is a2 mem/0: location 1044 is 99 run/0: ingredient 1 is b2 @@ -266,24 +266,24 @@ mem/0: location 1045 is 99 run/0: product 0 is 1 mem/0: storing 1 in location 1046 run/0: instruction string-equal/20 -run/0: break-if {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1046 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 22 run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: ingredient 0 is i mem/0: location 1042 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1042 run/0: instruction string-equal/24 -run/0: loop {name: "", value: -11, type: , properties: ["": ]} +run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 run/0: jumping to instruction 14 run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} +run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} run/0: ingredient 0 is i mem/0: location 1042 is 3 run/0: ingredient 1 is a-len @@ -291,17 +291,17 @@ mem/0: location 1038 is 3 run/0: product 0 is 1 mem/0: storing 1 in location 1043 run/0: instruction string-equal/15 -run/0: break-if {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} +run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} mem/0: location 1043 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 25 run/0: instruction string-equal/26 -run/0: reply {name: "1", value: 1, type: 0, properties: ["1": "literal"]} +run/0: reply/32 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} run/0: result 0 is 1 mem/0: storing 1 in location 3 run/0: instruction string-equal-reflexive/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 1 # x == x for all x ", value: 0, type: 0, properties: [" 3 <- 1 # x == x for all x diff --git a/cpp/.traces/string-equal-with-empty b/cpp/.traces/string-equal-with-empty index fa1077ee..c103c72f 100644 --- a/cpp/.traces/string-equal-with-empty +++ b/cpp/.traces/string-equal-with-empty @@ -22,7 +22,7 @@ after-brace/0: memory-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: string-equal-with-empty run/0: instruction string-equal-with-empty/0 -run/0: run {name: " +run/0: run/42 {name: " default-space:address:array:location <- new location:type, 30:literal x:address:array:character <- new [] y:address:array:character <- new [abcd] @@ -58,44 +58,44 @@ after-brace/0: new ... after-brace/0: new ... after-brace/0: string-equal ... run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "", value: 0, type: 0, properties: ["": "literal-string"]} +run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/41 {name: "", value: 0, type: 0, properties: ["": "literal-string"]} mem/0: storing 1031 in location 1002 run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} +run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/41 {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} mem/0: storing 1032 in location 1003 run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} +run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} mem/0: location 1002 is 1031 mem/0: location 1003 is 1032 run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/41 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} mem/0: array size is 30 mem/0: new alloc: 1037 run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient +run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1031 mem/0: storing 1031 in location 1039 run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} +run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/27 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1039 is 1031 mem/0: storing 0 in location 1040 run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient +run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/29 run/0: product 0 is 1032 mem/0: storing 1032 in location 1041 run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} +run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/27 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1041 is 1032 mem/0: storing 4 in location 1042 run/0: instruction string-equal/6 -run/0: trace {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} +run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} string-equal/0: comparing lengths run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} +run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} run/0: ingredient 0 is a-len mem/0: location 1040 is 0 run/0: ingredient 1 is b-len @@ -103,16 +103,16 @@ mem/0: location 1042 is 4 run/0: product 0 is 0 mem/0: storing 0 in location 1043 run/0: instruction string-equal/8 -run/0: break-if {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} +run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/9 -run/0: reply {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: reply/32 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: result 0 is 0 mem/0: storing 0 in location 3 run/0: instruction string-equal-with-empty/1 -run/0: memory-should-contain {name: " +run/0: memory-should-contain/43 {name: " 3 <- 0 # "" != abcd ", value: 0, type: 0, properties: [" 3 <- 0 # "" != abcd diff --git a/cpp/.traces/subtract b/cpp/.traces/subtract index 328bec86..aeec0887 100644 --- a/cpp/.traces/subtract +++ b/cpp/.traces/subtract @@ -15,15 +15,15 @@ after-brace/0: subtract ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "23", value: 23, type: 0, properties: ["23": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} run/0: ingredient 0 is 23 mem/0: storing 23 in location 1 run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 2 run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- subtract {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} +run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 23 run/0: ingredient 1 is 2 diff --git a/cpp/.traces/subtract_literal b/cpp/.traces/subtract_literal index 24d3d23f..9d8202ca 100644 --- a/cpp/.traces/subtract_literal +++ b/cpp/.traces/subtract_literal @@ -7,7 +7,7 @@ after-brace/0: subtract ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract {name: "5", value: 5, type: 0, properties: ["5": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "5", value: 5, type: 0, properties: ["5": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} run/0: ingredient 0 is 5 run/0: ingredient 1 is 2 run/0: product 0 is 3 diff --git a/cpp/.traces/surrounding_space b/cpp/.traces/surrounding_space index abba5d00..aeddde25 100644 --- a/cpp/.traces/surrounding_space +++ b/cpp/.traces/surrounding_space @@ -27,25 +27,25 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: {name: "10", value: 10, type: 1, properties: ["10": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "10", value: 10, type: 1, properties: ["10": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 10 run/0: instruction main/1 -run/0: {name: "20", value: 20, type: 1, properties: ["20": "integer"]} <- copy {name: "5", value: 5, type: 0, properties: ["5": "literal"]} +run/0: {name: "20", value: 20, type: 1, properties: ["20": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} run/0: ingredient 0 is 5 mem/0: storing 5 in location 20 run/0: instruction main/2 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy {name: "10", value: 10, type: 0, properties: ["10": "literal"]} +run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "10", value: 10, type: 0, properties: ["10": "literal"]} run/0: ingredient 0 is 10 run/0: instruction main/3 -run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "dummy"]} <- copy {name: "20", value: 20, type: 0, properties: ["20": "literal"]} +run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "dummy"]} <- copy/1 {name: "20", value: 20, type: 0, properties: ["20": "literal"]} run/0: ingredient 0 is 20 mem/0: storing 20 in location 11 run/0: instruction main/4 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "32", value: 32, type: 0, properties: ["32": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "32", value: 32, type: 0, properties: ["32": "literal"]} run/0: ingredient 0 is 32 mem/0: storing 32 in location 12 run/0: instruction main/5 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "space": "1"]} <- copy {name: "33", value: 33, type: 0, properties: ["33": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "space": "1"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} run/0: ingredient 0 is 33 mem/0: storing 33 in location 22 diff --git a/cpp/.traces/trace b/cpp/.traces/trace index 50220cc0..f2c6721b 100644 --- a/cpp/.traces/trace +++ b/cpp/.traces/trace @@ -6,5 +6,5 @@ after-brace/0: trace ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: trace {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "this is a trace in mu", value: 0, type: 0, properties: ["this is a trace in mu": "literal-string"]} +run/0: trace/18 {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "this is a trace in mu", value: 0, type: 0, properties: ["this is a trace in mu": "literal-string"]} foo/0: this is a trace in mu diff --git a/cpp/.traces/trace_check_passes_silently b/cpp/.traces/trace_check_passes_silently index c34c73d2..3ee8d037 100644 --- a/cpp/.traces/trace_check_passes_silently +++ b/cpp/.traces/trace_check_passes_silently @@ -16,7 +16,7 @@ after-brace/0: trace-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: run {name: " +run/0: run/42 {name: " trace [a], [b] ", value: 0, type: 0, properties: [" trace [a], [b] @@ -27,10 +27,10 @@ parse/0: ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal after-brace/0: recipe run1001 after-brace/0: trace ... run/0: instruction run1001/0 -run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} +run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} a/0: b run/0: instruction main/1 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " a: b ", value: 0, type: 0, properties: [" a: b diff --git a/cpp/.traces/trace_check_warns_on_failure b/cpp/.traces/trace_check_warns_on_failure index e8ea7894..244dd582 100644 --- a/cpp/.traces/trace_check_warns_on_failure +++ b/cpp/.traces/trace_check_warns_on_failure @@ -11,7 +11,7 @@ after-brace/0: trace-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " a: b a: d ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/trace_check_warns_on_failure_in_later_line b/cpp/.traces/trace_check_warns_on_failure_in_later_line index 7c8c7088..edb485eb 100644 --- a/cpp/.traces/trace_check_warns_on_failure_in_later_line +++ b/cpp/.traces/trace_check_warns_on_failure_in_later_line @@ -18,7 +18,7 @@ after-brace/0: trace-should-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: run {name: " +run/0: run/42 {name: " trace [a], [b] ", value: 0, type: 0, properties: [" trace [a], [b] @@ -29,10 +29,10 @@ parse/0: ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal after-brace/0: recipe run1001 after-brace/0: trace ... run/0: instruction run1001/0 -run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} +run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} a/0: b run/0: instruction main/1 -run/0: trace-should-contain {name: " +run/0: trace-should-contain/44 {name: " a: b a: d ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/trace_negative_check_passes_silently b/cpp/.traces/trace_negative_check_passes_silently index b572cb34..11d92333 100644 --- a/cpp/.traces/trace_negative_check_passes_silently +++ b/cpp/.traces/trace_negative_check_passes_silently @@ -9,7 +9,7 @@ after-brace/0: trace-should-not-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: trace-should-not-contain {name: " +run/0: trace-should-not-contain/45 {name: " a: b ", value: 0, type: 0, properties: [" a: b diff --git a/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line b/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line index 95950862..372180e4 100644 --- a/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line +++ b/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line @@ -18,7 +18,7 @@ after-brace/0: trace-should-not-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: run {name: " +run/0: run/42 {name: " trace [a], [d] ", value: 0, type: 0, properties: [" trace [a], [d] @@ -29,10 +29,10 @@ parse/0: ingredient: {name: "d", value: 0, type: 0, properties: ["d": "literal after-brace/0: recipe run1001 after-brace/0: trace ... run/0: instruction run1001/0 -run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "d", value: 0, type: 0, properties: ["d": "literal-string"]} +run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "d", value: 0, type: 0, properties: ["d": "literal-string"]} a/0: d run/0: instruction main/1 -run/0: trace-should-not-contain {name: " +run/0: trace-should-not-contain/45 {name: " a: b a: d ", value: 0, type: 0, properties: [" diff --git a/cpp/.traces/trace_negative_check_warns_on_failure b/cpp/.traces/trace_negative_check_warns_on_failure index 3e8873f8..0a8b1ed5 100644 --- a/cpp/.traces/trace_negative_check_warns_on_failure +++ b/cpp/.traces/trace_negative_check_warns_on_failure @@ -16,7 +16,7 @@ after-brace/0: trace-should-not-contain ... new/0: routine allocated memory from 1000 to 101000 schedule/0: main run/0: instruction main/0 -run/0: run {name: " +run/0: run/42 {name: " trace [a], [b] ", value: 0, type: 0, properties: [" trace [a], [b] @@ -27,10 +27,10 @@ parse/0: ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal after-brace/0: recipe run1001 after-brace/0: trace ... run/0: instruction run1001/0 -run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} +run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} a/0: b run/0: instruction main/1 -run/0: trace-should-not-contain {name: " +run/0: trace-should-not-contain/45 {name: " a: b ", value: 0, type: 0, properties: [" a: b diff --git a/cpp/.traces/wait_for_location b/cpp/.traces/wait_for_location index 2c357378..a1409536 100644 --- a/cpp/.traces/wait_for_location +++ b/cpp/.traces/wait_for_location @@ -21,25 +21,25 @@ after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: f1 run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "0", value: 0, type: 0, properties: ["0": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} run/0: ingredient 0 is 0 mem/0: storing 0 in location 1 run/0: instruction f1/1 -run/0: start-running {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} +run/0: start-running/33 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} run/0: ingredient 0 is f2 new/0: routine allocated memory from 101000 to 201000 run/0: instruction f1/2 -run/0: wait-for-location {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: wait-for-location/34 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: waiting for 1 to change from 0 schedule/0: f2 run/0: instruction f2/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "34", value: 34, type: 0, properties: ["34": "literal"]} +run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} run/0: ingredient 0 is 34 mem/0: storing 34 in location 1 schedule/0: waking up routine schedule/0: f1 run/0: instruction f1/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "1", value: 1, type: 1, properties: ["1": "integer"]} +run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} run/0: ingredient 0 is 1 mem/0: location 1 is 34 mem/0: storing 34 in location 2 diff --git a/cpp/010vm.cc b/cpp/010vm.cc index e38a5958..b24bcfad 100644 --- a/cpp/010vm.cc +++ b/cpp/010vm.cc @@ -227,7 +227,7 @@ string instruction::to_string() const { out << products[i].to_string(); } if (!products.empty()) out << " <- "; - out << name << ' '; + out << name << '/' << operation << ' '; for (size_t i = 0; i < ingredients.size(); ++i) { if (i > 0) out << ", "; out << ingredients[i].to_string(); |