diff options
32 files changed, 3270 insertions, 2686 deletions
diff --git a/cpp/.traces/array-from-args b/cpp/.traces/array-from-args index 173e1fb3..d999e006 100644 --- a/cpp/.traces/array-from-args +++ b/cpp/.traces/array-from-args @@ -97,8 +97,8 @@ 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"]} mem/0: location 1002 is 3 mem/0: array size is 3 -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1005 +mem/0: new alloc: 1031 +mem/0: storing 1031 in location 1005 run/0: instruction init-array/9 run/0: rewind-ingredients run/0: instruction init-array/10 @@ -130,18 +130,18 @@ 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: ingredient 0 is result -mem/0: location 1005 is 1030 +mem/0: location 1005 is 1031 run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} mem/0: location 1006 is 0 -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1008 +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: ingredient 0 is curr-value mem/0: location 1003 is 0 -mem/0: location 1008 is 1031 -mem/0: storing 0 in location 1031 +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: ingredient 0 is i @@ -178,18 +178,18 @@ 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: ingredient 0 is result -mem/0: location 1005 is 1030 +mem/0: location 1005 is 1031 run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} mem/0: location 1006 is 1 -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1008 +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: ingredient 0 is curr-value mem/0: location 1003 is 1 -mem/0: location 1008 is 1032 -mem/0: storing 1 in location 1032 +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: ingredient 0 is i @@ -226,18 +226,18 @@ 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: ingredient 0 is result -mem/0: location 1005 is 1030 +mem/0: location 1005 is 1031 run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} mem/0: location 1006 is 2 -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1008 +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: ingredient 0 is curr-value mem/0: location 1003 is 2 -mem/0: location 1008 is 1033 -mem/0: storing 2 in location 1033 +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: ingredient 0 is i @@ -265,17 +265,17 @@ 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"]} -mem/0: location 1005 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1005 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-array-from-args/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: ingredient 0 is 1 -mem/0: location 1 is 1030 -mem/0: location 1030 is 3 -mem/0: location 1031 is 0 -mem/0: location 1032 is 1 -mem/0: location 1033 is 2 +mem/0: location 1 is 1031 +mem/0: location 1031 is 3 +mem/0: location 1032 is 0 +mem/0: location 1033 is 1 +mem/0: location 1034 is 2 mem/0: storing 3 in location 2 mem/0: storing 0 in location 3 mem/0: storing 1 in location 4 diff --git a/cpp/.traces/buffer-append-works b/cpp/.traces/buffer-append-works index 03175513..0cad1113 100644 --- a/cpp/.traces/buffer-append-works +++ b/cpp/.traces/buffer-append-works @@ -87,603 +87,603 @@ run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} < 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"]} mem/0: array size is 30 -mem/0: new alloc: 1030 +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"]} -mem/0: new alloc: 1060 -mem/0: storing 1060 in location 1032 +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: ingredient 0 is result -mem/0: location 1032 is 1060 +mem/0: location 1033 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1033 +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: ingredient 0 is 0 -mem/0: location 1033 is 1060 -mem/0: storing 0 in location 1060 +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: ingredient 0 is result -mem/0: location 1032 is 1060 +mem/0: location 1033 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 -run/0: product 0 is 1061 -mem/0: storing 1061 in location 1034 +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: product 0 is 3 -mem/0: storing 3 in location 1035 +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"]} -mem/0: location 1035 is 3 +mem/0: location 1036 is 3 mem/0: array size is 3 -mem/0: new alloc: 1062 -mem/0: location 1034 is 1061 -mem/0: storing 1062 in location 1061 +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"]} -mem/0: location 1032 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1002 +mem/0: location 1033 is 1062 +run/0: result 0 is 1062 +mem/0: storing 1062 in location 1002 run/0: instruction test-buffer-append-works/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: ingredient 0 is x -mem/0: location 1002 is 1060 +mem/0: location 1002 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1003 +mem/0: location 1063 is 1064 +run/0: product 0 is 1064 +mem/0: storing 1064 in location 1003 run/0: instruction test-buffer-append-works/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"]} -mem/0: location 1002 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1065 +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: product 0 is 1060 -mem/0: storing 1060 in location 1067 +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: product 0 is 97 -mem/0: storing 97 in location 1068 +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"]} -mem/0: location 1067 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1095 +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: product 0 is 1060 -mem/0: storing 1060 in location 1097 +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: ingredient 0 is in -mem/0: location 1097 is 1060 +mem/0: location 1101 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 0 +mem/0: location 1062 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1098 +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: ingredient 0 is in -mem/0: location 1097 is 1060 +mem/0: location 1101 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1099 +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": ]} -mem/0: location 1099 is 1062 -mem/0: storing 3 in location 1100 +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: ingredient 0 is len -mem/0: location 1098 is 0 +mem/0: location 1102 is 0 run/0: ingredient 1 is capacity -mem/0: location 1100 is 3 +mem/0: location 1104 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1101 +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"]} -mem/0: location 1101 is 0 +mem/0: location 1105 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1069 +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: ["": ]} -mem/0: location 1069 is 0 +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: ingredient 0 is in -mem/0: location 1067 is 1060 +mem/0: location 1070 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1070 +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: ingredient 0 is in -mem/0: location 1067 is 1060 +mem/0: location 1070 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1071 +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: ingredient 0 is s -mem/0: location 1071 is 1062 +mem/0: location 1074 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1070 is 1060 -mem/0: location 1060 is 0 -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1072 +mem/0: location 1073 is 1062 +mem/0: location 1062 is 0 +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: ingredient 0 is c -mem/0: location 1068 is 97 -mem/0: location 1072 is 1063 -mem/0: storing 97 in location 1063 +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: ingredient 0 is len -mem/0: location 1070 is 1060 -mem/0: location 1060 is 0 +mem/0: location 1073 is 1062 +mem/0: location 1062 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1070 is 1060 -mem/0: storing 1 in location 1060 +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"]} -mem/0: location 1067 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1002 +mem/0: location 1070 is 1062 +run/0: result 0 is 1062 +mem/0: storing 1062 in location 1002 run/0: instruction test-buffer-append-works/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"]} -mem/0: location 1002 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1125 +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: product 0 is 1060 -mem/0: storing 1060 in location 1127 +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: product 0 is 98 -mem/0: storing 98 in location 1128 +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"]} -mem/0: location 1127 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1155 +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: product 0 is 1060 -mem/0: storing 1060 in location 1157 +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: ingredient 0 is in -mem/0: location 1157 is 1060 +mem/0: location 1163 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 1 +mem/0: location 1062 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1158 +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: ingredient 0 is in -mem/0: location 1157 is 1060 +mem/0: location 1163 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1159 +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": ]} -mem/0: location 1159 is 1062 -mem/0: storing 3 in location 1160 +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: ingredient 0 is len -mem/0: location 1158 is 1 +mem/0: location 1164 is 1 run/0: ingredient 1 is capacity -mem/0: location 1160 is 3 +mem/0: location 1166 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1161 +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"]} -mem/0: location 1161 is 0 +mem/0: location 1167 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1129 +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: ["": ]} -mem/0: location 1129 is 0 +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: ingredient 0 is in -mem/0: location 1127 is 1060 +mem/0: location 1132 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1130 +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: ingredient 0 is in -mem/0: location 1127 is 1060 +mem/0: location 1132 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1131 +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: ingredient 0 is s -mem/0: location 1131 is 1062 +mem/0: location 1136 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1130 is 1060 -mem/0: location 1060 is 1 -run/0: address to copy is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1132 +mem/0: location 1135 is 1062 +mem/0: location 1062 is 1 +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: ingredient 0 is c -mem/0: location 1128 is 98 -mem/0: location 1132 is 1064 -mem/0: storing 98 in location 1064 +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: ingredient 0 is len -mem/0: location 1130 is 1060 -mem/0: location 1060 is 1 +mem/0: location 1135 is 1062 +mem/0: location 1062 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: location 1130 is 1060 -mem/0: storing 2 in location 1060 +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"]} -mem/0: location 1127 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1002 +mem/0: location 1132 is 1062 +run/0: result 0 is 1062 +mem/0: storing 1062 in location 1002 run/0: instruction test-buffer-append-works/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"]} -mem/0: location 1002 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1185 +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: product 0 is 1060 -mem/0: storing 1060 in location 1187 +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: product 0 is 99 -mem/0: storing 99 in location 1188 +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"]} -mem/0: location 1187 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1215 +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: product 0 is 1060 -mem/0: storing 1060 in location 1217 +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: ingredient 0 is in -mem/0: location 1217 is 1060 +mem/0: location 1225 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 2 +mem/0: location 1062 is 2 run/0: product 0 is 2 -mem/0: storing 2 in location 1218 +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: ingredient 0 is in -mem/0: location 1217 is 1060 +mem/0: location 1225 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1219 +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": ]} -mem/0: location 1219 is 1062 -mem/0: storing 3 in location 1220 +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: ingredient 0 is len -mem/0: location 1218 is 2 +mem/0: location 1226 is 2 run/0: ingredient 1 is capacity -mem/0: location 1220 is 3 +mem/0: location 1228 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1221 +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"]} -mem/0: location 1221 is 0 +mem/0: location 1229 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1189 +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: ["": ]} -mem/0: location 1189 is 0 +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: ingredient 0 is in -mem/0: location 1187 is 1060 +mem/0: location 1194 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1190 +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: ingredient 0 is in -mem/0: location 1187 is 1060 +mem/0: location 1194 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1191 +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: ingredient 0 is s -mem/0: location 1191 is 1062 +mem/0: location 1198 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1190 is 1060 -mem/0: location 1060 is 2 -run/0: address to copy is 1065 -run/0: product 0 is 1065 -mem/0: storing 1065 in location 1192 +mem/0: location 1197 is 1062 +mem/0: location 1062 is 2 +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: ingredient 0 is c -mem/0: location 1188 is 99 -mem/0: location 1192 is 1065 -mem/0: storing 99 in location 1065 +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: ingredient 0 is len -mem/0: location 1190 is 1060 -mem/0: location 1060 is 2 +mem/0: location 1197 is 1062 +mem/0: location 1062 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 -mem/0: location 1190 is 1060 -mem/0: storing 3 in location 1060 +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"]} -mem/0: location 1187 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1002 +mem/0: location 1194 is 1062 +run/0: result 0 is 1062 +mem/0: storing 1062 in location 1002 run/0: instruction test-buffer-append-works/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: ingredient 0 is x -mem/0: location 1002 is 1060 +mem/0: location 1002 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1004 +mem/0: location 1063 is 1064 +run/0: product 0 is 1064 +mem/0: storing 1064 in location 1004 run/0: instruction test-buffer-append-works/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: ingredient 0 is s1 -mem/0: location 1003 is 1062 +mem/0: location 1003 is 1064 run/0: ingredient 1 is s2 -mem/0: location 1004 is 1062 +mem/0: location 1004 is 1064 run/0: product 0 is 1 mem/0: storing 1 in location 1 run/0: instruction test-buffer-append-works/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: ingredient 0 is s2 -mem/0: location 1004 is 1062 -mem/0: location 1062 is 3 -mem/0: location 1063 is 97 -mem/0: location 1064 is 98 -mem/0: location 1065 is 99 +mem/0: location 1004 is 1064 +mem/0: location 1064 is 3 +mem/0: location 1065 is 97 +mem/0: location 1066 is 98 +mem/0: location 1067 is 99 mem/0: storing 3 in location 2 mem/0: storing 97 in location 3 mem/0: storing 98 in location 4 mem/0: storing 99 in location 5 run/0: instruction test-buffer-append-works/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"]} -mem/0: location 1002 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1245 +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: product 0 is 1060 -mem/0: storing 1060 in location 1247 +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: product 0 is 100 -mem/0: storing 100 in location 1248 +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"]} -mem/0: location 1247 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1275 +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: product 0 is 1060 -mem/0: storing 1060 in location 1277 +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: ingredient 0 is in -mem/0: location 1277 is 1060 +mem/0: location 1287 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 3 +mem/0: location 1062 is 3 run/0: product 0 is 3 -mem/0: storing 3 in location 1278 +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: ingredient 0 is in -mem/0: location 1277 is 1060 +mem/0: location 1287 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1279 +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": ]} -mem/0: location 1279 is 1062 -mem/0: storing 3 in location 1280 +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: ingredient 0 is len -mem/0: location 1278 is 3 +mem/0: location 1288 is 3 run/0: ingredient 1 is capacity -mem/0: location 1280 is 3 +mem/0: location 1290 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1281 +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"]} -mem/0: location 1281 is 1 +mem/0: location 1291 is 1 run/0: result 0 is 1 -mem/0: storing 1 in location 1249 +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: ["": ]} -mem/0: location 1249 is 1 +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"]} -mem/0: location 1247 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1305 +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: product 0 is 1060 -mem/0: storing 1060 in location 1307 +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: ingredient 0 is in -mem/0: location 1307 is 1060 +mem/0: location 1318 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 -run/0: product 0 is 1061 -mem/0: storing 1061 in location 1308 +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": ]} -mem/0: location 1308 is 1061 -mem/0: location 1061 is 1062 -mem/0: storing 3 in location 1309 +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: ingredient 0 is oldlen -mem/0: location 1309 is 3 +mem/0: location 1320 is 3 run/0: ingredient 1 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 6 -mem/0: storing 6 in location 1310 +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: ingredient 0 is x -mem/0: location 1308 is 1061 -mem/0: location 1061 is 1062 -mem/0: storing 1062 in location 1311 +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"]} -mem/0: location 1310 is 6 +mem/0: location 1321 is 6 mem/0: array size is 6 -mem/0: new alloc: 1335 -mem/0: location 1308 is 1061 -mem/0: storing 1335 in location 1061 +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: ingredient 0 is 0 -mem/0: storing 0 in location 1312 +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: ingredient 0 is i -mem/0: location 1312 is 0 +mem/0: location 1323 is 0 run/0: ingredient 1 is oldlen -mem/0: location 1309 is 3 +mem/0: location 1320 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1313 +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: ["": ]} -mem/0: location 1313 is 0 +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: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} -mem/0: location 1311 is 1062 +mem/0: location 1322 is 1064 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1312 is 0 -run/0: address to copy is 1063 +mem/0: location 1323 is 0 +run/0: address to copy is 1065 run/0: its type is 4 -mem/0: location 1063 is 97 +mem/0: location 1065 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1314 +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: ingredient 0 is x -mem/0: location 1308 is 1061 -mem/0: location 1061 is 1335 +mem/0: location 1319 is 1063 +mem/0: location 1063 is 1347 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1312 is 0 -run/0: address to copy is 1336 -run/0: product 0 is 1336 -mem/0: storing 1336 in location 1315 +mem/0: location 1323 is 0 +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: ingredient 0 is src -mem/0: location 1314 is 97 -mem/0: location 1315 is 1336 -mem/0: storing 97 in location 1336 +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: ingredient 0 is i -mem/0: location 1312 is 0 +mem/0: location 1323 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1312 +mem/0: storing 1 in location 1323 run/0: instruction grow-buffer/15 run/0: loop {name: "", value: -7, type: , properties: ["": ]} run/0: ingredient 0 is -7 @@ -691,50 +691,50 @@ 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: ingredient 0 is i -mem/0: location 1312 is 1 +mem/0: location 1323 is 1 run/0: ingredient 1 is oldlen -mem/0: location 1309 is 3 +mem/0: location 1320 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1313 +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: ["": ]} -mem/0: location 1313 is 0 +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: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} -mem/0: location 1311 is 1062 +mem/0: location 1322 is 1064 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1312 is 1 -run/0: address to copy is 1064 +mem/0: location 1323 is 1 +run/0: address to copy is 1066 run/0: its type is 4 -mem/0: location 1064 is 98 +mem/0: location 1066 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1314 +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: ingredient 0 is x -mem/0: location 1308 is 1061 -mem/0: location 1061 is 1335 +mem/0: location 1319 is 1063 +mem/0: location 1063 is 1347 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1312 is 1 -run/0: address to copy is 1337 -run/0: product 0 is 1337 -mem/0: storing 1337 in location 1315 +mem/0: location 1323 is 1 +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: ingredient 0 is src -mem/0: location 1314 is 98 -mem/0: location 1315 is 1337 -mem/0: storing 98 in location 1337 +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: ingredient 0 is i -mem/0: location 1312 is 1 +mem/0: location 1323 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1312 +mem/0: storing 2 in location 1323 run/0: instruction grow-buffer/15 run/0: loop {name: "", value: -7, type: , properties: ["": ]} run/0: ingredient 0 is -7 @@ -742,50 +742,50 @@ 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: ingredient 0 is i -mem/0: location 1312 is 2 +mem/0: location 1323 is 2 run/0: ingredient 1 is oldlen -mem/0: location 1309 is 3 +mem/0: location 1320 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1313 +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: ["": ]} -mem/0: location 1313 is 0 +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: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} -mem/0: location 1311 is 1062 +mem/0: location 1322 is 1064 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1312 is 2 -run/0: address to copy is 1065 +mem/0: location 1323 is 2 +run/0: address to copy is 1067 run/0: its type is 4 -mem/0: location 1065 is 99 +mem/0: location 1067 is 99 run/0: product 0 is 99 -mem/0: storing 99 in location 1314 +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: ingredient 0 is x -mem/0: location 1308 is 1061 -mem/0: location 1061 is 1335 +mem/0: location 1319 is 1063 +mem/0: location 1063 is 1347 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1312 is 2 -run/0: address to copy is 1338 -run/0: product 0 is 1338 -mem/0: storing 1338 in location 1315 +mem/0: location 1323 is 2 +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: ingredient 0 is src -mem/0: location 1314 is 99 -mem/0: location 1315 is 1338 -mem/0: storing 99 in location 1338 +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: ingredient 0 is i -mem/0: location 1312 is 2 +mem/0: location 1323 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 -mem/0: storing 3 in location 1312 +mem/0: storing 3 in location 1323 run/0: instruction grow-buffer/15 run/0: loop {name: "", value: -7, type: , properties: ["": ]} run/0: ingredient 0 is -7 @@ -793,109 +793,109 @@ 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: ingredient 0 is i -mem/0: location 1312 is 3 +mem/0: location 1323 is 3 run/0: ingredient 1 is oldlen -mem/0: location 1309 is 3 +mem/0: location 1320 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1313 +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: ["": ]} -mem/0: location 1313 is 1 +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"]} -mem/0: location 1307 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1247 +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: ingredient 0 is in -mem/0: location 1247 is 1060 +mem/0: location 1256 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1250 +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: ingredient 0 is in -mem/0: location 1247 is 1060 +mem/0: location 1256 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1335 -run/0: product 0 is 1335 -mem/0: storing 1335 in location 1251 +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: ingredient 0 is s -mem/0: location 1251 is 1335 +mem/0: location 1260 is 1347 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1250 is 1060 -mem/0: location 1060 is 3 -run/0: address to copy is 1339 -run/0: product 0 is 1339 -mem/0: storing 1339 in location 1252 +mem/0: location 1259 is 1062 +mem/0: location 1062 is 3 +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: ingredient 0 is c -mem/0: location 1248 is 100 -mem/0: location 1252 is 1339 -mem/0: storing 100 in location 1339 +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: ingredient 0 is len -mem/0: location 1250 is 1060 -mem/0: location 1060 is 3 +mem/0: location 1259 is 1062 +mem/0: location 1062 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 -mem/0: location 1250 is 1060 -mem/0: storing 4 in location 1060 +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"]} -mem/0: location 1247 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1002 +mem/0: location 1256 is 1062 +run/0: result 0 is 1062 +mem/0: storing 1062 in location 1002 run/0: instruction test-buffer-append-works/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: ingredient 0 is x -mem/0: location 1002 is 1060 +mem/0: location 1002 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1335 -run/0: product 0 is 1335 -mem/0: storing 1335 in location 1005 +mem/0: location 1063 is 1347 +run/0: product 0 is 1347 +mem/0: storing 1347 in location 1005 run/0: instruction test-buffer-append-works/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: ingredient 0 is s1 -mem/0: location 1003 is 1062 +mem/0: location 1003 is 1064 run/0: ingredient 1 is s3 -mem/0: location 1005 is 1335 +mem/0: location 1005 is 1347 run/0: product 0 is 0 mem/0: storing 0 in location 10 run/0: instruction test-buffer-append-works/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: ingredient 0 is x -mem/0: location 1002 is 1060 +mem/0: location 1002 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 4 +mem/0: location 1062 is 4 run/0: product 0 is 4 mem/0: storing 4 in location 11 run/0: instruction test-buffer-append-works/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: ingredient 0 is s3 -mem/0: location 1005 is 1335 -mem/0: location 1335 is 6 -mem/0: location 1336 is 97 -mem/0: location 1337 is 98 -mem/0: location 1338 is 99 -mem/0: location 1339 is 100 -mem/0: location 1340 is 0 -mem/0: location 1341 is 0 +mem/0: location 1005 is 1347 +mem/0: location 1347 is 6 +mem/0: location 1348 is 97 +mem/0: location 1349 is 98 +mem/0: location 1350 is 99 +mem/0: location 1351 is 100 +mem/0: location 1352 is 0 +mem/0: location 1353 is 0 mem/0: storing 6 in location 12 mem/0: storing 97 in location 13 mem/0: storing 98 in location 14 diff --git a/cpp/.traces/channel b/cpp/.traces/channel index 00679385..50c7ae3b 100644 --- a/cpp/.traces/channel +++ b/cpp/.traces/channel @@ -23,34 +23,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 3 @@ -65,330 +65,330 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 4 mem/0: array size is 4 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1037 +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: product 0 is 1030 -mem/0: storing 1030 in location 1039 +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: product 0 is 34 -mem/0: storing 34 in location 1040 +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"]} -mem/0: location 1039 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1067 +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: product 0 is 1030 -mem/0: storing 1030 in location 1069 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ingredient 0 is tmp -mem/0: location 1070 is 0 +mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1070 +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"]} -mem/0: location 1069 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1097 +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: product 0 is 1030 -mem/0: storing 1030 in location 1099 +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: ingredient 0 is chan -mem/0: location 1099 is 1030 +mem/0: location 1103 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1100 +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": ]} -mem/0: location 1100 is 1033 -mem/0: storing 4 in location 1101 +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"]} -mem/0: location 1101 is 4 +mem/0: location 1105 is 4 run/0: result 0 is 4 -mem/0: storing 4 in location 1071 +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: ingredient 0 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: ingredient 1 is len -mem/0: location 1071 is 4 +mem/0: location 1074 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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: ["": ]} -mem/0: location 1072 is 0 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1073 +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: ingredient 0 is full -mem/0: location 1073 is 0 +mem/0: location 1076 is 0 run/0: ingredient 1 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1074 +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"]} -mem/0: location 1074 is 0 +mem/0: location 1077 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1041 +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: ["": ]} -mem/0: location 1041 is 0 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1043 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1044 +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: ingredient 0 is circular-buffer -mem/0: location 1043 is 1033 +mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1044 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1043 is 1033 -mem/0: storing 4 in location 1046 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1046 is 4 +mem/0: location 1048 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1047 +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: ["": ]} -mem/0: location 1047 is 0 +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"]} -mem/0: location 1039 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1041 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1127 +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: product 0 is 1030 -mem/0: storing 1030 in location 1129 +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"]} -mem/0: location 1129 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1157 +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: product 0 is 1030 -mem/0: storing 1030 in location 1159 +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: ingredient 0 is chan -mem/0: location 1159 is 1030 +mem/0: location 1165 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1160 +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: ingredient 0 is chan -mem/0: location 1159 is 1030 +mem/0: location 1165 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1161 +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: ingredient 0 is full -mem/0: location 1160 is 0 +mem/0: location 1166 is 0 run/0: ingredient 1 is free -mem/0: location 1161 is 1 +mem/0: location 1167 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1162 +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"]} -mem/0: location 1162 is 0 +mem/0: location 1168 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1130 +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: ["": ]} -mem/0: location 1130 is 0 +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: ingredient 0 is chan -mem/0: location 1129 is 1030 +mem/0: location 1134 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1132 +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: ingredient 0 is chan -mem/0: location 1129 is 1030 +mem/0: location 1134 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1133 +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: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1133 is 1033 +mem/0: location 1138 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1132 is 1030 -mem/0: location 1030 is 0 -run/0: address to copy is 1034 +mem/0: location 1137 is 1031 +mem/0: location 1031 is 0 +run/0: address to copy is 1035 run/0: its type is 1 -mem/0: location 1034 is 34 +mem/0: location 1035 is 34 run/0: product 0 is 34 -mem/0: storing 34 in location 1134 +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: ingredient 0 is full -mem/0: location 1132 is 1030 -mem/0: location 1030 is 0 +mem/0: location 1137 is 1031 +mem/0: location 1031 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1132 is 1030 -mem/0: storing 1 in location 1030 +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": ]} -mem/0: location 1133 is 1033 -mem/0: storing 4 in location 1135 +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: ingredient 0 is full -mem/0: location 1132 is 1030 -mem/0: location 1030 is 1 +mem/0: location 1137 is 1031 +mem/0: location 1031 is 1 run/0: ingredient 1 is len -mem/0: location 1135 is 4 +mem/0: location 1140 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1136 +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: ["": ]} -mem/0: location 1136 is 0 +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"]} -mem/0: location 1134 is 34 -mem/0: location 1129 is 1030 +mem/0: location 1139 is 34 +mem/0: location 1134 is 1031 run/0: result 0 is 34 mem/0: storing 34 in location 2 -run/0: result 1 is 1030 -mem/0: storing 1030 in location 1 +run/0: result 1 is 1031 +mem/0: storing 1031 in location 1 diff --git a/cpp/.traces/channel-initialization b/cpp/.traces/channel-initialization index 1fca38e2..e04b4594 100644 --- a/cpp/.traces/channel-initialization +++ b/cpp/.traces/channel-initialization @@ -25,34 +25,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 3 @@ -67,40 +67,40 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 4 mem/0: array size is 4 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-initialization/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 2 run/0: instruction test-channel-initialization/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 3 diff --git a/cpp/.traces/channel-new-empty-not-full b/cpp/.traces/channel-new-empty-not-full index 46b69534..74584d36 100644 --- a/cpp/.traces/channel-new-empty-not-full +++ b/cpp/.traces/channel-new-empty-not-full @@ -21,34 +21,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 3 @@ -63,159 +63,159 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 4 mem/0: array size is 4 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-new-empty-not-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1037 +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: product 0 is 1030 -mem/0: storing 1030 in location 1039 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1040 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1041 +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: ingredient 0 is full -mem/0: location 1040 is 0 +mem/0: location 1042 is 0 run/0: ingredient 1 is free -mem/0: location 1041 is 0 +mem/0: location 1043 is 0 run/0: product 0 is 1 -mem/0: storing 1 in location 1042 +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"]} -mem/0: location 1042 is 1 +mem/0: location 1044 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 2 run/0: instruction test-channel-new-empty-not-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1067 +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: product 0 is 1030 -mem/0: storing 1030 in location 1069 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ingredient 0 is tmp -mem/0: location 1070 is 0 +mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1070 +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"]} -mem/0: location 1069 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1097 +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: product 0 is 1030 -mem/0: storing 1030 in location 1099 +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: ingredient 0 is chan -mem/0: location 1099 is 1030 +mem/0: location 1103 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1100 +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": ]} -mem/0: location 1100 is 1033 -mem/0: storing 4 in location 1101 +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"]} -mem/0: location 1101 is 4 +mem/0: location 1105 is 4 run/0: result 0 is 4 -mem/0: storing 4 in location 1071 +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: ingredient 0 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: ingredient 1 is len -mem/0: location 1071 is 4 +mem/0: location 1074 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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: ["": ]} -mem/0: location 1072 is 0 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1073 +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: ingredient 0 is full -mem/0: location 1073 is 0 +mem/0: location 1076 is 0 run/0: ingredient 1 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1074 +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"]} -mem/0: location 1074 is 0 +mem/0: location 1077 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 3 diff --git a/cpp/.traces/channel-read-increments-full b/cpp/.traces/channel-read-increments-full index a3e68559..ec0c90d1 100644 --- a/cpp/.traces/channel-read-increments-full +++ b/cpp/.traces/channel-read-increments-full @@ -35,34 +35,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 3 @@ -77,349 +77,349 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 4 mem/0: array size is 4 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-read-increments-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1037 +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: product 0 is 1030 -mem/0: storing 1030 in location 1039 +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: product 0 is 34 -mem/0: storing 34 in location 1040 +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"]} -mem/0: location 1039 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1067 +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: product 0 is 1030 -mem/0: storing 1030 in location 1069 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ingredient 0 is tmp -mem/0: location 1070 is 0 +mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1070 +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"]} -mem/0: location 1069 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1097 +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: product 0 is 1030 -mem/0: storing 1030 in location 1099 +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: ingredient 0 is chan -mem/0: location 1099 is 1030 +mem/0: location 1103 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1100 +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": ]} -mem/0: location 1100 is 1033 -mem/0: storing 4 in location 1101 +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"]} -mem/0: location 1101 is 4 +mem/0: location 1105 is 4 run/0: result 0 is 4 -mem/0: storing 4 in location 1071 +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: ingredient 0 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: ingredient 1 is len -mem/0: location 1071 is 4 +mem/0: location 1074 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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: ["": ]} -mem/0: location 1072 is 0 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1073 +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: ingredient 0 is full -mem/0: location 1073 is 0 +mem/0: location 1076 is 0 run/0: ingredient 1 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1074 +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"]} -mem/0: location 1074 is 0 +mem/0: location 1077 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1041 +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: ["": ]} -mem/0: location 1041 is 0 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1043 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1044 +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: ingredient 0 is circular-buffer -mem/0: location 1043 is 1033 +mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1044 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1043 is 1033 -mem/0: storing 4 in location 1046 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1046 is 4 +mem/0: location 1048 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1047 +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: ["": ]} -mem/0: location 1047 is 0 +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"]} -mem/0: location 1039 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1041 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-read-increments-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1127 +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: product 0 is 1030 -mem/0: storing 1030 in location 1129 +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"]} -mem/0: location 1129 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1157 +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: product 0 is 1030 -mem/0: storing 1030 in location 1159 +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: ingredient 0 is chan -mem/0: location 1159 is 1030 +mem/0: location 1165 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1160 +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: ingredient 0 is chan -mem/0: location 1159 is 1030 +mem/0: location 1165 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1161 +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: ingredient 0 is full -mem/0: location 1160 is 0 +mem/0: location 1166 is 0 run/0: ingredient 1 is free -mem/0: location 1161 is 1 +mem/0: location 1167 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1162 +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"]} -mem/0: location 1162 is 0 +mem/0: location 1168 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1130 +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: ["": ]} -mem/0: location 1130 is 0 +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: ingredient 0 is chan -mem/0: location 1129 is 1030 +mem/0: location 1134 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1132 +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: ingredient 0 is chan -mem/0: location 1129 is 1030 +mem/0: location 1134 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1133 +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: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1133 is 1033 +mem/0: location 1138 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1132 is 1030 -mem/0: location 1030 is 0 -run/0: address to copy is 1034 +mem/0: location 1137 is 1031 +mem/0: location 1031 is 0 +run/0: address to copy is 1035 run/0: its type is 1 -mem/0: location 1034 is 34 +mem/0: location 1035 is 34 run/0: product 0 is 34 -mem/0: storing 34 in location 1134 +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: ingredient 0 is full -mem/0: location 1132 is 1030 -mem/0: location 1030 is 0 +mem/0: location 1137 is 1031 +mem/0: location 1031 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1132 is 1030 -mem/0: storing 1 in location 1030 +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": ]} -mem/0: location 1133 is 1033 -mem/0: storing 4 in location 1135 +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: ingredient 0 is full -mem/0: location 1132 is 1030 -mem/0: location 1030 is 1 +mem/0: location 1137 is 1031 +mem/0: location 1031 is 1 run/0: ingredient 1 is len -mem/0: location 1135 is 4 +mem/0: location 1140 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1136 +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: ["": ]} -mem/0: location 1136 is 0 +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"]} -mem/0: location 1134 is 34 -mem/0: location 1129 is 1030 +mem/0: location 1139 is 34 +mem/0: location 1134 is 1031 run/0: result 0 is 34 -run/0: result 1 is 1030 -mem/0: storing 1030 in location 1 +run/0: result 1 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-read-increments-full/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 1 +mem/0: location 1031 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 2 run/0: instruction test-channel-read-increments-full/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 diff --git a/cpp/.traces/channel-read-not-full b/cpp/.traces/channel-read-not-full index 859eaefd..d05be04b 100644 --- a/cpp/.traces/channel-read-not-full +++ b/cpp/.traces/channel-read-not-full @@ -31,34 +31,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 1 @@ -73,471 +73,471 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 2 mem/0: array size is 2 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-read-not-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1035 +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: product 0 is 1030 -mem/0: storing 1030 in location 1037 +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: product 0 is 34 -mem/0: storing 34 in location 1038 +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"]} -mem/0: location 1037 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1065 +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: product 0 is 1030 -mem/0: storing 1030 in location 1067 +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: ingredient 0 is chan -mem/0: location 1067 is 1030 +mem/0: location 1070 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1068 +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: ingredient 0 is tmp -mem/0: location 1068 is 0 +mem/0: location 1071 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1068 +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"]} -mem/0: location 1067 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1095 +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: product 0 is 1030 -mem/0: storing 1030 in location 1097 +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: ingredient 0 is chan -mem/0: location 1097 is 1030 +mem/0: location 1101 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1098 +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": ]} -mem/0: location 1098 is 1033 -mem/0: storing 2 in location 1099 +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"]} -mem/0: location 1099 is 2 +mem/0: location 1103 is 2 run/0: result 0 is 2 -mem/0: storing 2 in location 1069 +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: ingredient 0 is tmp -mem/0: location 1068 is 1 +mem/0: location 1071 is 1 run/0: ingredient 1 is len -mem/0: location 1069 is 2 +mem/0: location 1072 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ["": ]} -mem/0: location 1070 is 0 +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: ingredient 0 is chan -mem/0: location 1067 is 1030 +mem/0: location 1070 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1071 +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: ingredient 0 is full -mem/0: location 1071 is 0 +mem/0: location 1074 is 0 run/0: ingredient 1 is tmp -mem/0: location 1068 is 1 +mem/0: location 1071 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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"]} -mem/0: location 1072 is 0 +mem/0: location 1075 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1039 +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: ["": ]} -mem/0: location 1039 is 0 +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: ingredient 0 is chan -mem/0: location 1037 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1041 +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: ingredient 0 is chan -mem/0: location 1037 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1042 +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: ingredient 0 is circular-buffer -mem/0: location 1041 is 1033 +mem/0: location 1043 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1042 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1043 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1038 is 34 -mem/0: location 1043 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1042 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1042 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1041 is 1033 -mem/0: storing 2 in location 1044 +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: ingredient 0 is free -mem/0: location 1042 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1044 is 2 +mem/0: location 1046 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1045 +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: ["": ]} -mem/0: location 1045 is 0 +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"]} -mem/0: location 1037 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1039 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-read-not-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1125 +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: product 0 is 1030 -mem/0: storing 1030 in location 1127 +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"]} -mem/0: location 1127 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1155 +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: product 0 is 1030 -mem/0: storing 1030 in location 1157 +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: ingredient 0 is chan -mem/0: location 1157 is 1030 +mem/0: location 1163 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1158 +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: ingredient 0 is chan -mem/0: location 1157 is 1030 +mem/0: location 1163 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1159 +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: ingredient 0 is full -mem/0: location 1158 is 0 +mem/0: location 1164 is 0 run/0: ingredient 1 is free -mem/0: location 1159 is 1 +mem/0: location 1165 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1160 +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"]} -mem/0: location 1160 is 0 +mem/0: location 1166 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1128 +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: ["": ]} -mem/0: location 1128 is 0 +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: ingredient 0 is chan -mem/0: location 1127 is 1030 +mem/0: location 1132 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1130 +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: ingredient 0 is chan -mem/0: location 1127 is 1030 +mem/0: location 1132 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1131 +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: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1131 is 1033 +mem/0: location 1136 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1130 is 1030 -mem/0: location 1030 is 0 -run/0: address to copy is 1034 +mem/0: location 1135 is 1031 +mem/0: location 1031 is 0 +run/0: address to copy is 1035 run/0: its type is 1 -mem/0: location 1034 is 34 +mem/0: location 1035 is 34 run/0: product 0 is 34 -mem/0: storing 34 in location 1132 +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: ingredient 0 is full -mem/0: location 1130 is 1030 -mem/0: location 1030 is 0 +mem/0: location 1135 is 1031 +mem/0: location 1031 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1130 is 1030 -mem/0: storing 1 in location 1030 +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": ]} -mem/0: location 1131 is 1033 -mem/0: storing 2 in location 1133 +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: ingredient 0 is full -mem/0: location 1130 is 1030 -mem/0: location 1030 is 1 +mem/0: location 1135 is 1031 +mem/0: location 1031 is 1 run/0: ingredient 1 is len -mem/0: location 1133 is 2 +mem/0: location 1138 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1134 +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: ["": ]} -mem/0: location 1134 is 0 +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"]} -mem/0: location 1132 is 34 -mem/0: location 1127 is 1030 +mem/0: location 1137 is 34 +mem/0: location 1132 is 1031 run/0: result 0 is 34 -run/0: result 1 is 1030 -mem/0: storing 1030 in location 1 +run/0: result 1 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-read-not-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1185 +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: product 0 is 1030 -mem/0: storing 1030 in location 1187 +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: ingredient 0 is chan -mem/0: location 1187 is 1030 +mem/0: location 1194 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 1 +mem/0: location 1031 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1188 +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: ingredient 0 is chan -mem/0: location 1187 is 1030 +mem/0: location 1194 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1189 +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: ingredient 0 is full -mem/0: location 1188 is 1 +mem/0: location 1195 is 1 run/0: ingredient 1 is free -mem/0: location 1189 is 1 +mem/0: location 1196 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1190 +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"]} -mem/0: location 1190 is 1 +mem/0: location 1197 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 2 run/0: instruction test-channel-read-not-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1215 +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: product 0 is 1030 -mem/0: storing 1030 in location 1217 +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: ingredient 0 is chan -mem/0: location 1217 is 1030 +mem/0: location 1225 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1218 +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: ingredient 0 is tmp -mem/0: location 1218 is 1 +mem/0: location 1226 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1218 +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"]} -mem/0: location 1217 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1245 +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: product 0 is 1030 -mem/0: storing 1030 in location 1247 +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: ingredient 0 is chan -mem/0: location 1247 is 1030 +mem/0: location 1256 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1248 +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": ]} -mem/0: location 1248 is 1033 -mem/0: storing 2 in location 1249 +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"]} -mem/0: location 1249 is 2 +mem/0: location 1258 is 2 run/0: result 0 is 2 -mem/0: storing 2 in location 1219 +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: ingredient 0 is tmp -mem/0: location 1218 is 2 +mem/0: location 1226 is 2 run/0: ingredient 1 is len -mem/0: location 1219 is 2 +mem/0: location 1227 is 2 run/0: product 0 is 1 -mem/0: storing 1 in location 1220 +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: ["": ]} -mem/0: location 1220 is 1 +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: ingredient 0 is 0 -mem/0: storing 0 in location 1218 +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: ingredient 0 is chan -mem/0: location 1217 is 1030 +mem/0: location 1225 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 1 +mem/0: location 1031 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1221 +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: ingredient 0 is full -mem/0: location 1221 is 1 +mem/0: location 1229 is 1 run/0: ingredient 1 is tmp -mem/0: location 1218 is 0 +mem/0: location 1226 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1222 +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"]} -mem/0: location 1222 is 0 +mem/0: location 1230 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 3 diff --git a/cpp/.traces/channel-wrap b/cpp/.traces/channel-wrap index 9cc3177f..fc196654 100644 --- a/cpp/.traces/channel-wrap +++ b/cpp/.traces/channel-wrap @@ -57,34 +57,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 1 @@ -99,689 +99,689 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 2 mem/0: array size is 2 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-wrap/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1035 +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: product 0 is 1030 -mem/0: storing 1030 in location 1037 +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: product 0 is 34 -mem/0: storing 34 in location 1038 +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"]} -mem/0: location 1037 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1065 +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: product 0 is 1030 -mem/0: storing 1030 in location 1067 +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: ingredient 0 is chan -mem/0: location 1067 is 1030 +mem/0: location 1070 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1068 +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: ingredient 0 is tmp -mem/0: location 1068 is 0 +mem/0: location 1071 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1068 +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"]} -mem/0: location 1067 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1095 +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: product 0 is 1030 -mem/0: storing 1030 in location 1097 +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: ingredient 0 is chan -mem/0: location 1097 is 1030 +mem/0: location 1101 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1098 +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": ]} -mem/0: location 1098 is 1033 -mem/0: storing 2 in location 1099 +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"]} -mem/0: location 1099 is 2 +mem/0: location 1103 is 2 run/0: result 0 is 2 -mem/0: storing 2 in location 1069 +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: ingredient 0 is tmp -mem/0: location 1068 is 1 +mem/0: location 1071 is 1 run/0: ingredient 1 is len -mem/0: location 1069 is 2 +mem/0: location 1072 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ["": ]} -mem/0: location 1070 is 0 +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: ingredient 0 is chan -mem/0: location 1067 is 1030 +mem/0: location 1070 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1071 +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: ingredient 0 is full -mem/0: location 1071 is 0 +mem/0: location 1074 is 0 run/0: ingredient 1 is tmp -mem/0: location 1068 is 1 +mem/0: location 1071 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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"]} -mem/0: location 1072 is 0 +mem/0: location 1075 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1039 +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: ["": ]} -mem/0: location 1039 is 0 +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: ingredient 0 is chan -mem/0: location 1037 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1041 +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: ingredient 0 is chan -mem/0: location 1037 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1042 +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: ingredient 0 is circular-buffer -mem/0: location 1041 is 1033 +mem/0: location 1043 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1042 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1043 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1038 is 34 -mem/0: location 1043 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1042 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1042 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1041 is 1033 -mem/0: storing 2 in location 1044 +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: ingredient 0 is free -mem/0: location 1042 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1044 is 2 +mem/0: location 1046 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1045 +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: ["": ]} -mem/0: location 1045 is 0 +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"]} -mem/0: location 1037 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1039 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-wrap/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1125 +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: product 0 is 1030 -mem/0: storing 1030 in location 1127 +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"]} -mem/0: location 1127 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1155 +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: product 0 is 1030 -mem/0: storing 1030 in location 1157 +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: ingredient 0 is chan -mem/0: location 1157 is 1030 +mem/0: location 1163 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1158 +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: ingredient 0 is chan -mem/0: location 1157 is 1030 +mem/0: location 1163 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1159 +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: ingredient 0 is full -mem/0: location 1158 is 0 +mem/0: location 1164 is 0 run/0: ingredient 1 is free -mem/0: location 1159 is 1 +mem/0: location 1165 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1160 +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"]} -mem/0: location 1160 is 0 +mem/0: location 1166 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1128 +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: ["": ]} -mem/0: location 1128 is 0 +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: ingredient 0 is chan -mem/0: location 1127 is 1030 +mem/0: location 1132 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1130 +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: ingredient 0 is chan -mem/0: location 1127 is 1030 +mem/0: location 1132 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1131 +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: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1131 is 1033 +mem/0: location 1136 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1130 is 1030 -mem/0: location 1030 is 0 -run/0: address to copy is 1034 +mem/0: location 1135 is 1031 +mem/0: location 1031 is 0 +run/0: address to copy is 1035 run/0: its type is 1 -mem/0: location 1034 is 34 +mem/0: location 1035 is 34 run/0: product 0 is 34 -mem/0: storing 34 in location 1132 +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: ingredient 0 is full -mem/0: location 1130 is 1030 -mem/0: location 1030 is 0 +mem/0: location 1135 is 1031 +mem/0: location 1031 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1130 is 1030 -mem/0: storing 1 in location 1030 +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": ]} -mem/0: location 1131 is 1033 -mem/0: storing 2 in location 1133 +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: ingredient 0 is full -mem/0: location 1130 is 1030 -mem/0: location 1030 is 1 +mem/0: location 1135 is 1031 +mem/0: location 1031 is 1 run/0: ingredient 1 is len -mem/0: location 1133 is 2 +mem/0: location 1138 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1134 +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: ["": ]} -mem/0: location 1134 is 0 +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"]} -mem/0: location 1132 is 34 -mem/0: location 1127 is 1030 +mem/0: location 1137 is 34 +mem/0: location 1132 is 1031 run/0: result 0 is 34 -run/0: result 1 is 1030 -mem/0: storing 1030 in location 1 +run/0: result 1 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-wrap/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 2 run/0: instruction test-channel-wrap/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 run/0: instruction test-channel-wrap/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1185 +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: product 0 is 1030 -mem/0: storing 1030 in location 1187 +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: product 0 is 34 -mem/0: storing 34 in location 1188 +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"]} -mem/0: location 1187 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1215 +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: product 0 is 1030 -mem/0: storing 1030 in location 1217 +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: ingredient 0 is chan -mem/0: location 1217 is 1030 +mem/0: location 1225 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1218 +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: ingredient 0 is tmp -mem/0: location 1218 is 1 +mem/0: location 1226 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1218 +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"]} -mem/0: location 1217 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1245 +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: product 0 is 1030 -mem/0: storing 1030 in location 1247 +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: ingredient 0 is chan -mem/0: location 1247 is 1030 +mem/0: location 1256 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1248 +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": ]} -mem/0: location 1248 is 1033 -mem/0: storing 2 in location 1249 +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"]} -mem/0: location 1249 is 2 +mem/0: location 1258 is 2 run/0: result 0 is 2 -mem/0: storing 2 in location 1219 +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: ingredient 0 is tmp -mem/0: location 1218 is 2 +mem/0: location 1226 is 2 run/0: ingredient 1 is len -mem/0: location 1219 is 2 +mem/0: location 1227 is 2 run/0: product 0 is 1 -mem/0: storing 1 in location 1220 +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: ["": ]} -mem/0: location 1220 is 1 +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: ingredient 0 is 0 -mem/0: storing 0 in location 1218 +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: ingredient 0 is chan -mem/0: location 1217 is 1030 +mem/0: location 1225 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 1 +mem/0: location 1031 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1221 +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: ingredient 0 is full -mem/0: location 1221 is 1 +mem/0: location 1229 is 1 run/0: ingredient 1 is tmp -mem/0: location 1218 is 0 +mem/0: location 1226 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1222 +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"]} -mem/0: location 1222 is 0 +mem/0: location 1230 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1189 +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: ["": ]} -mem/0: location 1189 is 0 +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: ingredient 0 is chan -mem/0: location 1187 is 1030 +mem/0: location 1194 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1191 +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: ingredient 0 is chan -mem/0: location 1187 is 1030 +mem/0: location 1194 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1192 +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: ingredient 0 is circular-buffer -mem/0: location 1191 is 1033 +mem/0: location 1198 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1192 is 1031 -mem/0: location 1031 is 1 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1193 +mem/0: location 1199 is 1032 +mem/0: location 1032 is 1 +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: ingredient 0 is val -mem/0: location 1188 is 34 -mem/0: location 1193 is 1035 -mem/0: storing 34 in location 1035 +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: ingredient 0 is free -mem/0: location 1192 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1199 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: location 1192 is 1031 -mem/0: storing 2 in location 1031 +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": ]} -mem/0: location 1191 is 1033 -mem/0: storing 2 in location 1194 +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: ingredient 0 is free -mem/0: location 1192 is 1031 -mem/0: location 1031 is 2 +mem/0: location 1199 is 1032 +mem/0: location 1032 is 2 run/0: ingredient 1 is len -mem/0: location 1194 is 2 +mem/0: location 1201 is 2 run/0: product 0 is 1 -mem/0: storing 1 in location 1195 +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: ["": ]} -mem/0: location 1195 is 1 +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: ingredient 0 is 0 -mem/0: location 1192 is 1031 -mem/0: storing 0 in location 1031 +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"]} -mem/0: location 1187 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1194 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-wrap/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 4 run/0: instruction test-channel-wrap/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1275 +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: product 0 is 1030 -mem/0: storing 1030 in location 1277 +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"]} -mem/0: location 1277 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1305 +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: product 0 is 1030 -mem/0: storing 1030 in location 1307 +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: ingredient 0 is chan -mem/0: location 1307 is 1030 +mem/0: location 1318 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 1 +mem/0: location 1031 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1308 +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: ingredient 0 is chan -mem/0: location 1307 is 1030 +mem/0: location 1318 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1309 +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: ingredient 0 is full -mem/0: location 1308 is 1 +mem/0: location 1319 is 1 run/0: ingredient 1 is free -mem/0: location 1309 is 0 +mem/0: location 1320 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1310 +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"]} -mem/0: location 1310 is 0 +mem/0: location 1321 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1278 +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: ["": ]} -mem/0: location 1278 is 0 +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: ingredient 0 is chan -mem/0: location 1277 is 1030 +mem/0: location 1287 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1280 +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: ingredient 0 is chan -mem/0: location 1277 is 1030 +mem/0: location 1287 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1281 +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: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1281 is 1033 +mem/0: location 1291 is 1034 run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1280 is 1030 -mem/0: location 1030 is 1 -run/0: address to copy is 1035 +mem/0: location 1290 is 1031 +mem/0: location 1031 is 1 +run/0: address to copy is 1036 run/0: its type is 1 -mem/0: location 1035 is 34 +mem/0: location 1036 is 34 run/0: product 0 is 34 -mem/0: storing 34 in location 1282 +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: ingredient 0 is full -mem/0: location 1280 is 1030 -mem/0: location 1030 is 1 +mem/0: location 1290 is 1031 +mem/0: location 1031 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: location 1280 is 1030 -mem/0: storing 2 in location 1030 +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": ]} -mem/0: location 1281 is 1033 -mem/0: storing 2 in location 1283 +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: ingredient 0 is full -mem/0: location 1280 is 1030 -mem/0: location 1030 is 2 +mem/0: location 1290 is 1031 +mem/0: location 1031 is 2 run/0: ingredient 1 is len -mem/0: location 1283 is 2 +mem/0: location 1293 is 2 run/0: product 0 is 1 -mem/0: storing 1 in location 1284 +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: ["": ]} -mem/0: location 1284 is 1 +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: ingredient 0 is 0 -mem/0: location 1280 is 1030 -mem/0: storing 0 in location 1030 +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"]} -mem/0: location 1282 is 34 -mem/0: location 1277 is 1030 +mem/0: location 1292 is 34 +mem/0: location 1287 is 1031 run/0: result 0 is 34 -run/0: result 1 is 1030 -mem/0: storing 1030 in location 1 +run/0: result 1 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-wrap/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 5 diff --git a/cpp/.traces/channel-write-full b/cpp/.traces/channel-write-full index fe81114d..121c73bf 100644 --- a/cpp/.traces/channel-write-full +++ b/cpp/.traces/channel-write-full @@ -26,34 +26,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 1 @@ -68,345 +68,345 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 2 mem/0: array size is 2 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-write-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1035 +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: product 0 is 1030 -mem/0: storing 1030 in location 1037 +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: product 0 is 34 -mem/0: storing 34 in location 1038 +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"]} -mem/0: location 1037 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1065 +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: product 0 is 1030 -mem/0: storing 1030 in location 1067 +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: ingredient 0 is chan -mem/0: location 1067 is 1030 +mem/0: location 1070 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1068 +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: ingredient 0 is tmp -mem/0: location 1068 is 0 +mem/0: location 1071 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1068 +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"]} -mem/0: location 1067 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1095 +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: product 0 is 1030 -mem/0: storing 1030 in location 1097 +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: ingredient 0 is chan -mem/0: location 1097 is 1030 +mem/0: location 1101 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1098 +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": ]} -mem/0: location 1098 is 1033 -mem/0: storing 2 in location 1099 +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"]} -mem/0: location 1099 is 2 +mem/0: location 1103 is 2 run/0: result 0 is 2 -mem/0: storing 2 in location 1069 +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: ingredient 0 is tmp -mem/0: location 1068 is 1 +mem/0: location 1071 is 1 run/0: ingredient 1 is len -mem/0: location 1069 is 2 +mem/0: location 1072 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ["": ]} -mem/0: location 1070 is 0 +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: ingredient 0 is chan -mem/0: location 1067 is 1030 +mem/0: location 1070 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1071 +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: ingredient 0 is full -mem/0: location 1071 is 0 +mem/0: location 1074 is 0 run/0: ingredient 1 is tmp -mem/0: location 1068 is 1 +mem/0: location 1071 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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"]} -mem/0: location 1072 is 0 +mem/0: location 1075 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1039 +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: ["": ]} -mem/0: location 1039 is 0 +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: ingredient 0 is chan -mem/0: location 1037 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1041 +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: ingredient 0 is chan -mem/0: location 1037 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1042 +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: ingredient 0 is circular-buffer -mem/0: location 1041 is 1033 +mem/0: location 1043 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1042 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1043 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1038 is 34 -mem/0: location 1043 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1042 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1042 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1041 is 1033 -mem/0: storing 2 in location 1044 +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: ingredient 0 is free -mem/0: location 1042 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1044 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1044 is 2 +mem/0: location 1046 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1045 +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: ["": ]} -mem/0: location 1045 is 0 +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"]} -mem/0: location 1037 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1039 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-write-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1125 +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: product 0 is 1030 -mem/0: storing 1030 in location 1127 +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: ingredient 0 is chan -mem/0: location 1127 is 1030 +mem/0: location 1132 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1128 +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: ingredient 0 is chan -mem/0: location 1127 is 1030 +mem/0: location 1132 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1129 +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: ingredient 0 is full -mem/0: location 1128 is 0 +mem/0: location 1133 is 0 run/0: ingredient 1 is free -mem/0: location 1129 is 1 +mem/0: location 1134 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1130 +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"]} -mem/0: location 1130 is 0 +mem/0: location 1135 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 2 run/0: instruction test-channel-write-full/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1155 +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: product 0 is 1030 -mem/0: storing 1030 in location 1157 +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: ingredient 0 is chan -mem/0: location 1157 is 1030 +mem/0: location 1163 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1158 +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: ingredient 0 is tmp -mem/0: location 1158 is 1 +mem/0: location 1164 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1158 +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"]} -mem/0: location 1157 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1185 +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: product 0 is 1030 -mem/0: storing 1030 in location 1187 +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: ingredient 0 is chan -mem/0: location 1187 is 1030 +mem/0: location 1194 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1188 +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": ]} -mem/0: location 1188 is 1033 -mem/0: storing 2 in location 1189 +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"]} -mem/0: location 1189 is 2 +mem/0: location 1196 is 2 run/0: result 0 is 2 -mem/0: storing 2 in location 1159 +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: ingredient 0 is tmp -mem/0: location 1158 is 2 +mem/0: location 1164 is 2 run/0: ingredient 1 is len -mem/0: location 1159 is 2 +mem/0: location 1165 is 2 run/0: product 0 is 1 -mem/0: storing 1 in location 1160 +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: ["": ]} -mem/0: location 1160 is 1 +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: ingredient 0 is 0 -mem/0: storing 0 in location 1158 +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: ingredient 0 is chan -mem/0: location 1157 is 1030 +mem/0: location 1163 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1161 +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: ingredient 0 is full -mem/0: location 1161 is 0 +mem/0: location 1167 is 0 run/0: ingredient 1 is tmp -mem/0: location 1158 is 0 +mem/0: location 1164 is 0 run/0: product 0 is 1 -mem/0: storing 1 in location 1162 +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"]} -mem/0: location 1162 is 1 +mem/0: location 1168 is 1 run/0: result 0 is 1 mem/0: storing 1 in location 3 diff --git a/cpp/.traces/channel-write-increments-free b/cpp/.traces/channel-write-increments-free index f060c64c..397bd2b9 100644 --- a/cpp/.traces/channel-write-increments-free +++ b/cpp/.traces/channel-write-increments-free @@ -30,34 +30,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 3 @@ -72,223 +72,223 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 4 mem/0: array size is 4 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-write-increments-free/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1037 +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: product 0 is 1030 -mem/0: storing 1030 in location 1039 +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: product 0 is 34 -mem/0: storing 34 in location 1040 +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"]} -mem/0: location 1039 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1067 +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: product 0 is 1030 -mem/0: storing 1030 in location 1069 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ingredient 0 is tmp -mem/0: location 1070 is 0 +mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1070 +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"]} -mem/0: location 1069 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1097 +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: product 0 is 1030 -mem/0: storing 1030 in location 1099 +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: ingredient 0 is chan -mem/0: location 1099 is 1030 +mem/0: location 1103 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1100 +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": ]} -mem/0: location 1100 is 1033 -mem/0: storing 4 in location 1101 +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"]} -mem/0: location 1101 is 4 +mem/0: location 1105 is 4 run/0: result 0 is 4 -mem/0: storing 4 in location 1071 +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: ingredient 0 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: ingredient 1 is len -mem/0: location 1071 is 4 +mem/0: location 1074 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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: ["": ]} -mem/0: location 1072 is 0 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1073 +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: ingredient 0 is full -mem/0: location 1073 is 0 +mem/0: location 1076 is 0 run/0: ingredient 1 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1074 +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"]} -mem/0: location 1074 is 0 +mem/0: location 1077 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1041 +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: ["": ]} -mem/0: location 1041 is 0 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1043 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1044 +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: ingredient 0 is circular-buffer -mem/0: location 1043 is 1033 +mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1044 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1043 is 1033 -mem/0: storing 4 in location 1046 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1046 is 4 +mem/0: location 1048 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1047 +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: ["": ]} -mem/0: location 1047 is 0 +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"]} -mem/0: location 1039 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1041 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-write-increments-free/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 mem/0: storing 0 in location 2 run/0: instruction test-channel-write-increments-free/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: ingredient 0 is 1 -mem/0: location 1 is 1030 +mem/0: location 1 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 diff --git a/cpp/.traces/channel-write-not-empty b/cpp/.traces/channel-write-not-empty index 45a4a267..bf541002 100644 --- a/cpp/.traces/channel-write-not-empty +++ b/cpp/.traces/channel-write-not-empty @@ -26,34 +26,34 @@ 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"]} -mem/0: new alloc: 1030 -mem/0: storing 1030 in location 1002 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 -run/0: product 0 is 1030 -mem/0: storing 1030 in location 1003 +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: ingredient 0 is 0 -mem/0: location 1003 is 1030 -mem/0: storing 0 in location 1030 +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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 +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: ingredient 0 is 0 -mem/0: location 1004 is 1031 -mem/0: storing 0 in location 1031 +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: product 0 is 3 @@ -68,342 +68,342 @@ 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: ingredient 0 is result -mem/0: location 1002 is 1030 +mem/0: location 1002 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1006 +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"]} mem/0: location 1005 is 4 mem/0: array size is 4 -mem/0: new alloc: 1033 -mem/0: location 1006 is 1032 -mem/0: storing 1033 in location 1032 +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"]} -mem/0: location 1002 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-write-not-empty/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1037 +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: product 0 is 1030 -mem/0: storing 1030 in location 1039 +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: product 0 is 34 -mem/0: storing 34 in location 1040 +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"]} -mem/0: location 1039 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1067 +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: product 0 is 1030 -mem/0: storing 1030 in location 1069 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 0 +mem/0: location 1032 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1070 +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: ingredient 0 is tmp -mem/0: location 1070 is 0 +mem/0: location 1073 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1070 +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"]} -mem/0: location 1069 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1097 +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: product 0 is 1030 -mem/0: storing 1030 in location 1099 +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: ingredient 0 is chan -mem/0: location 1099 is 1030 +mem/0: location 1103 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1100 +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": ]} -mem/0: location 1100 is 1033 -mem/0: storing 4 in location 1101 +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"]} -mem/0: location 1101 is 4 +mem/0: location 1105 is 4 run/0: result 0 is 4 -mem/0: storing 4 in location 1071 +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: ingredient 0 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: ingredient 1 is len -mem/0: location 1071 is 4 +mem/0: location 1074 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1072 +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: ["": ]} -mem/0: location 1072 is 0 +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: ingredient 0 is chan -mem/0: location 1069 is 1030 +mem/0: location 1072 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1073 +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: ingredient 0 is full -mem/0: location 1073 is 0 +mem/0: location 1076 is 0 run/0: ingredient 1 is tmp -mem/0: location 1070 is 1 +mem/0: location 1073 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1074 +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"]} -mem/0: location 1074 is 0 +mem/0: location 1077 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1041 +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: ["": ]} -mem/0: location 1041 is 0 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1043 +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: ingredient 0 is chan -mem/0: location 1039 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1044 +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: ingredient 0 is circular-buffer -mem/0: location 1043 is 1033 +mem/0: location 1045 is 1034 run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 +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: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1034 -mem/0: storing 34 in location 1034 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 0 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1044 is 1031 -mem/0: storing 1 in location 1031 +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": ]} -mem/0: location 1043 is 1033 -mem/0: storing 4 in location 1046 +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: ingredient 0 is free -mem/0: location 1044 is 1031 -mem/0: location 1031 is 1 +mem/0: location 1046 is 1032 +mem/0: location 1032 is 1 run/0: ingredient 1 is len -mem/0: location 1046 is 4 +mem/0: location 1048 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1047 +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: ["": ]} -mem/0: location 1047 is 0 +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"]} -mem/0: location 1039 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1041 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-channel-write-not-empty/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1127 +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: product 0 is 1030 -mem/0: storing 1030 in location 1129 +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: ingredient 0 is chan -mem/0: location 1129 is 1030 +mem/0: location 1134 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1130 +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: ingredient 0 is chan -mem/0: location 1129 is 1030 +mem/0: location 1134 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1131 +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: ingredient 0 is full -mem/0: location 1130 is 0 +mem/0: location 1135 is 0 run/0: ingredient 1 is free -mem/0: location 1131 is 1 +mem/0: location 1136 is 1 run/0: product 0 is 0 -mem/0: storing 0 in location 1132 +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"]} -mem/0: location 1132 is 0 +mem/0: location 1137 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 2 run/0: instruction test-channel-write-not-empty/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"]} -mem/0: location 1 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1157 +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: product 0 is 1030 -mem/0: storing 1030 in location 1159 +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: ingredient 0 is chan -mem/0: location 1159 is 1030 +mem/0: location 1165 is 1031 run/0: ingredient 1 is first-free -run/0: address to copy is 1031 +run/0: address to copy is 1032 run/0: its type is 1 -mem/0: location 1031 is 1 +mem/0: location 1032 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1160 +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: ingredient 0 is tmp -mem/0: location 1160 is 1 +mem/0: location 1166 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1160 +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"]} -mem/0: location 1159 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1187 +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: product 0 is 1030 -mem/0: storing 1030 in location 1189 +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: ingredient 0 is chan -mem/0: location 1189 is 1030 +mem/0: location 1196 is 1031 run/0: ingredient 1 is data -run/0: address to copy is 1032 +run/0: address to copy is 1033 run/0: its type is 2 -mem/0: location 1032 is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1190 +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": ]} -mem/0: location 1190 is 1033 -mem/0: storing 4 in location 1191 +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"]} -mem/0: location 1191 is 4 +mem/0: location 1198 is 4 run/0: result 0 is 4 -mem/0: storing 4 in location 1161 +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: ingredient 0 is tmp -mem/0: location 1160 is 2 +mem/0: location 1166 is 2 run/0: ingredient 1 is len -mem/0: location 1161 is 4 +mem/0: location 1167 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1162 +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: ["": ]} -mem/0: location 1162 is 0 +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: ingredient 0 is chan -mem/0: location 1159 is 1030 +mem/0: location 1165 is 1031 run/0: ingredient 1 is first-full -run/0: address to copy is 1030 +run/0: address to copy is 1031 run/0: its type is 1 -mem/0: location 1030 is 0 +mem/0: location 1031 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1163 +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: ingredient 0 is full -mem/0: location 1163 is 0 +mem/0: location 1169 is 0 run/0: ingredient 1 is tmp -mem/0: location 1160 is 2 +mem/0: location 1166 is 2 run/0: product 0 is 0 -mem/0: storing 0 in location 1164 +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"]} -mem/0: location 1164 is 0 +mem/0: location 1170 is 0 run/0: result 0 is 0 mem/0: storing 0 in location 3 diff --git a/cpp/.traces/closure b/cpp/.traces/closure index eea62ad0..de197db2 100644 --- a/cpp/.traces/closure +++ b/cpp/.traces/closure @@ -71,70 +71,70 @@ run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"l 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"]} mem/0: array size is 30 -mem/0: new alloc: 1030 +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: ingredient 0 is 23 -mem/0: storing 23 in location 1032 +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: ingredient 0 is 3 -mem/0: storing 3 in location 1033 +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: result 0 is 1030 -mem/0: storing 1030 in location 1002 +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"]} -mem/0: location 1002 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1060 +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: product 0 is 1030 -mem/0: storing 1030 in location 1061 +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: ingredient 0 is y -mem/0: location 1033 is 3 +mem/0: location 1034 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 4 -mem/0: storing 4 in location 1033 +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: ingredient 0 is 234 -mem/0: storing 234 in location 1062 +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"]} -mem/0: location 1033 is 4 +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"]} -mem/0: location 1002 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1090 +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: product 0 is 1030 -mem/0: storing 1030 in location 1091 +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: ingredient 0 is y -mem/0: location 1033 is 4 +mem/0: location 1034 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 5 -mem/0: storing 5 in location 1033 +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: ingredient 0 is 234 -mem/0: storing 234 in location 1092 +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"]} -mem/0: location 1033 is 5 +mem/0: location 1034 is 5 run/0: result 0 is 5 mem/0: storing 5 in location 3 diff --git a/cpp/.traces/integer-to-decimal-digit-negative b/cpp/.traces/integer-to-decimal-digit-negative index 39d56dd2..ef47b493 100644 --- a/cpp/.traces/integer-to-decimal-digit-negative +++ b/cpp/.traces/integer-to-decimal-digit-negative @@ -58,48 +58,48 @@ run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer" 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"]} mem/0: array size is 30 -mem/0: new alloc: 1030 +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"]} -mem/0: new alloc: 1060 -mem/0: storing 1060 in location 1032 +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: ingredient 0 is result -mem/0: location 1032 is 1060 +mem/0: location 1033 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1033 +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: ingredient 0 is 0 -mem/0: location 1033 is 1060 -mem/0: storing 0 in location 1060 +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: ingredient 0 is result -mem/0: location 1032 is 1060 +mem/0: location 1033 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 -run/0: product 0 is 1061 -mem/0: storing 1061 in location 1034 +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: product 0 is 30 -mem/0: storing 30 in location 1035 +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"]} -mem/0: location 1035 is 30 +mem/0: location 1036 is 30 mem/0: array size is 30 -mem/0: new alloc: 1062 -mem/0: location 1034 is 1061 -mem/0: storing 1062 in location 1061 +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"]} -mem/0: location 1032 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is 48 @@ -135,122 +135,122 @@ 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"]} -mem/0: location 1006 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1092 +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: product 0 is 1060 -mem/0: storing 1060 in location 1094 +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: product 0 is 49 -mem/0: storing 49 in location 1095 +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"]} -mem/0: location 1094 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1122 +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: product 0 is 1060 -mem/0: storing 1060 in location 1124 +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: ingredient 0 is in -mem/0: location 1124 is 1060 +mem/0: location 1128 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 0 +mem/0: location 1062 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1125 +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: ingredient 0 is in -mem/0: location 1124 is 1060 +mem/0: location 1128 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1126 +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": ]} -mem/0: location 1126 is 1062 -mem/0: storing 30 in location 1127 +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: ingredient 0 is len -mem/0: location 1125 is 0 +mem/0: location 1129 is 0 run/0: ingredient 1 is capacity -mem/0: location 1127 is 30 +mem/0: location 1131 is 30 run/0: product 0 is 0 -mem/0: storing 0 in location 1128 +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"]} -mem/0: location 1128 is 0 +mem/0: location 1132 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1096 +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: ["": ]} -mem/0: location 1096 is 0 +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: ingredient 0 is in -mem/0: location 1094 is 1060 +mem/0: location 1097 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1097 +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: ingredient 0 is in -mem/0: location 1094 is 1060 +mem/0: location 1097 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1098 +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: ingredient 0 is s -mem/0: location 1098 is 1062 +mem/0: location 1101 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1097 is 1060 -mem/0: location 1060 is 0 -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1099 +mem/0: location 1100 is 1062 +mem/0: location 1062 is 0 +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: ingredient 0 is c -mem/0: location 1095 is 49 -mem/0: location 1099 is 1063 -mem/0: storing 49 in location 1063 +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: ingredient 0 is len -mem/0: location 1097 is 1060 -mem/0: location 1060 is 0 +mem/0: location 1100 is 1062 +mem/0: location 1062 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1097 is 1060 -mem/0: storing 1 in location 1060 +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"]} -mem/0: location 1094 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is -6 @@ -275,147 +275,147 @@ 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"]} -mem/0: location 1006 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1152 +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: product 0 is 1060 -mem/0: storing 1060 in location 1154 +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: product 0 is 45 -mem/0: storing 45 in location 1155 +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"]} -mem/0: location 1154 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1182 +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: product 0 is 1060 -mem/0: storing 1060 in location 1184 +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: ingredient 0 is in -mem/0: location 1184 is 1060 +mem/0: location 1190 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 1 +mem/0: location 1062 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1185 +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: ingredient 0 is in -mem/0: location 1184 is 1060 +mem/0: location 1190 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1186 +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": ]} -mem/0: location 1186 is 1062 -mem/0: storing 30 in location 1187 +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: ingredient 0 is len -mem/0: location 1185 is 1 +mem/0: location 1191 is 1 run/0: ingredient 1 is capacity -mem/0: location 1187 is 30 +mem/0: location 1193 is 30 run/0: product 0 is 0 -mem/0: storing 0 in location 1188 +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"]} -mem/0: location 1188 is 0 +mem/0: location 1194 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1156 +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: ["": ]} -mem/0: location 1156 is 0 +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: ingredient 0 is in -mem/0: location 1154 is 1060 +mem/0: location 1159 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1157 +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: ingredient 0 is in -mem/0: location 1154 is 1060 +mem/0: location 1159 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1158 +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: ingredient 0 is s -mem/0: location 1158 is 1062 +mem/0: location 1163 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1157 is 1060 -mem/0: location 1060 is 1 -run/0: address to copy is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1159 +mem/0: location 1162 is 1062 +mem/0: location 1062 is 1 +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: ingredient 0 is c -mem/0: location 1155 is 45 -mem/0: location 1159 is 1064 -mem/0: storing 45 in location 1064 +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: ingredient 0 is len -mem/0: location 1157 is 1060 -mem/0: location 1060 is 1 +mem/0: location 1162 is 1062 +mem/0: location 1062 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: location 1157 is 1060 -mem/0: storing 2 in location 1060 +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"]} -mem/0: location 1154 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is tmp -mem/0: location 1006 is 1060 +mem/0: location 1006 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 2 +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: ingredient 0 is tmp -mem/0: location 1006 is 1060 +mem/0: location 1006 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1012 +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"]} mem/0: location 1011 is 2 mem/0: array size is 2 -mem/0: new alloc: 1212 -mem/0: storing 1212 in location 1003 +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: ingredient 0 is len @@ -442,29 +442,29 @@ 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: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1062 +mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} mem/0: location 1013 is 1 -run/0: address to copy is 1064 +run/0: address to copy is 1066 run/0: its type is 4 -mem/0: location 1064 is 45 +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: ingredient 0 is result -mem/0: location 1003 is 1212 +mem/0: location 1003 is 1219 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} mem/0: location 1014 is 0 -run/0: address to copy is 1213 -run/0: product 0 is 1213 -mem/0: storing 1213 in location 1016 +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: ingredient 0 is src mem/0: location 1015 is 45 -mem/0: location 1016 is 1213 -mem/0: storing 45 in location 1213 +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: ingredient 0 is i @@ -498,29 +498,29 @@ 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: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1062 +mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} mem/0: location 1013 is 0 -run/0: address to copy is 1063 +run/0: address to copy is 1065 run/0: its type is 4 -mem/0: location 1063 is 49 +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: ingredient 0 is result -mem/0: location 1003 is 1212 +mem/0: location 1003 is 1219 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} mem/0: location 1014 is 1 -run/0: address to copy is 1214 -run/0: product 0 is 1214 -mem/0: storing 1214 in location 1016 +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: ingredient 0 is src mem/0: location 1015 is 49 -mem/0: location 1016 is 1214 -mem/0: storing 49 in location 1214 +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: ingredient 0 is i @@ -554,16 +554,16 @@ 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"]} -mem/0: location 1003 is 1212 -run/0: result 0 is 1212 -mem/0: storing 1212 in location 1 +mem/0: location 1003 is 1219 +run/0: result 0 is 1219 +mem/0: storing 1219 in location 1 run/0: instruction test-integer-to-decimal-digit-negative/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: ingredient 0 is 1 -mem/0: location 1 is 1212 -mem/0: location 1212 is 2 -mem/0: location 1213 is 45 -mem/0: location 1214 is 49 +mem/0: location 1 is 1219 +mem/0: location 1219 is 2 +mem/0: location 1220 is 45 +mem/0: location 1221 is 49 mem/0: storing 2 in location 2 mem/0: storing 45 in location 3 mem/0: storing 49 in location 4 diff --git a/cpp/.traces/integer-to-decimal-digit-positive b/cpp/.traces/integer-to-decimal-digit-positive index 7239ec92..df2d858d 100644 --- a/cpp/.traces/integer-to-decimal-digit-positive +++ b/cpp/.traces/integer-to-decimal-digit-positive @@ -47,48 +47,48 @@ run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer" 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"]} mem/0: array size is 30 -mem/0: new alloc: 1030 +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"]} -mem/0: new alloc: 1060 -mem/0: storing 1060 in location 1032 +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: ingredient 0 is result -mem/0: location 1032 is 1060 +mem/0: location 1033 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1033 +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: ingredient 0 is 0 -mem/0: location 1033 is 1060 -mem/0: storing 0 in location 1060 +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: ingredient 0 is result -mem/0: location 1032 is 1060 +mem/0: location 1033 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 -run/0: product 0 is 1061 -mem/0: storing 1061 in location 1034 +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: product 0 is 30 -mem/0: storing 30 in location 1035 +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"]} -mem/0: location 1035 is 30 +mem/0: location 1036 is 30 mem/0: array size is 30 -mem/0: new alloc: 1062 -mem/0: location 1034 is 1061 -mem/0: storing 1062 in location 1061 +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"]} -mem/0: location 1032 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is 48 @@ -124,122 +124,122 @@ 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"]} -mem/0: location 1006 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1092 +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: product 0 is 1060 -mem/0: storing 1060 in location 1094 +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: product 0 is 52 -mem/0: storing 52 in location 1095 +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"]} -mem/0: location 1094 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1122 +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: product 0 is 1060 -mem/0: storing 1060 in location 1124 +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: ingredient 0 is in -mem/0: location 1124 is 1060 +mem/0: location 1128 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 0 +mem/0: location 1062 is 0 run/0: product 0 is 0 -mem/0: storing 0 in location 1125 +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: ingredient 0 is in -mem/0: location 1124 is 1060 +mem/0: location 1128 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1126 +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": ]} -mem/0: location 1126 is 1062 -mem/0: storing 30 in location 1127 +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: ingredient 0 is len -mem/0: location 1125 is 0 +mem/0: location 1129 is 0 run/0: ingredient 1 is capacity -mem/0: location 1127 is 30 +mem/0: location 1131 is 30 run/0: product 0 is 0 -mem/0: storing 0 in location 1128 +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"]} -mem/0: location 1128 is 0 +mem/0: location 1132 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1096 +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: ["": ]} -mem/0: location 1096 is 0 +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: ingredient 0 is in -mem/0: location 1094 is 1060 +mem/0: location 1097 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1097 +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: ingredient 0 is in -mem/0: location 1094 is 1060 +mem/0: location 1097 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1098 +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: ingredient 0 is s -mem/0: location 1098 is 1062 +mem/0: location 1101 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1097 is 1060 -mem/0: location 1060 is 0 -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1099 +mem/0: location 1100 is 1062 +mem/0: location 1062 is 0 +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: ingredient 0 is c -mem/0: location 1095 is 52 -mem/0: location 1099 is 1063 -mem/0: storing 52 in location 1063 +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: ingredient 0 is len -mem/0: location 1097 is 1060 -mem/0: location 1060 is 0 +mem/0: location 1100 is 1062 +mem/0: location 1062 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: location 1097 is 1060 -mem/0: storing 1 in location 1060 +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"]} -mem/0: location 1094 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is -6 @@ -275,122 +275,122 @@ 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"]} -mem/0: location 1006 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1152 +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: product 0 is 1060 -mem/0: storing 1060 in location 1154 +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: product 0 is 51 -mem/0: storing 51 in location 1155 +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"]} -mem/0: location 1154 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1182 +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: product 0 is 1060 -mem/0: storing 1060 in location 1184 +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: ingredient 0 is in -mem/0: location 1184 is 1060 +mem/0: location 1190 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 1 +mem/0: location 1062 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1185 +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: ingredient 0 is in -mem/0: location 1184 is 1060 +mem/0: location 1190 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1186 +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": ]} -mem/0: location 1186 is 1062 -mem/0: storing 30 in location 1187 +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: ingredient 0 is len -mem/0: location 1185 is 1 +mem/0: location 1191 is 1 run/0: ingredient 1 is capacity -mem/0: location 1187 is 30 +mem/0: location 1193 is 30 run/0: product 0 is 0 -mem/0: storing 0 in location 1188 +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"]} -mem/0: location 1188 is 0 +mem/0: location 1194 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1156 +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: ["": ]} -mem/0: location 1156 is 0 +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: ingredient 0 is in -mem/0: location 1154 is 1060 +mem/0: location 1159 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1157 +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: ingredient 0 is in -mem/0: location 1154 is 1060 +mem/0: location 1159 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1158 +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: ingredient 0 is s -mem/0: location 1158 is 1062 +mem/0: location 1163 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1157 is 1060 -mem/0: location 1060 is 1 -run/0: address to copy is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1159 +mem/0: location 1162 is 1062 +mem/0: location 1062 is 1 +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: ingredient 0 is c -mem/0: location 1155 is 51 -mem/0: location 1159 is 1064 -mem/0: storing 51 in location 1064 +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: ingredient 0 is len -mem/0: location 1157 is 1060 -mem/0: location 1060 is 1 +mem/0: location 1162 is 1062 +mem/0: location 1062 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: location 1157 is 1060 -mem/0: storing 2 in location 1060 +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"]} -mem/0: location 1154 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is -6 @@ -426,122 +426,122 @@ 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"]} -mem/0: location 1006 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1212 +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: product 0 is 1060 -mem/0: storing 1060 in location 1214 +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: product 0 is 50 -mem/0: storing 50 in location 1215 +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"]} -mem/0: location 1214 is 1060 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1242 +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: product 0 is 1060 -mem/0: storing 1060 in location 1244 +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: ingredient 0 is in -mem/0: location 1244 is 1060 +mem/0: location 1252 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 2 +mem/0: location 1062 is 2 run/0: product 0 is 2 -mem/0: storing 2 in location 1245 +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: ingredient 0 is in -mem/0: location 1244 is 1060 +mem/0: location 1252 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1246 +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": ]} -mem/0: location 1246 is 1062 -mem/0: storing 30 in location 1247 +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: ingredient 0 is len -mem/0: location 1245 is 2 +mem/0: location 1253 is 2 run/0: ingredient 1 is capacity -mem/0: location 1247 is 30 +mem/0: location 1255 is 30 run/0: product 0 is 0 -mem/0: storing 0 in location 1248 +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"]} -mem/0: location 1248 is 0 +mem/0: location 1256 is 0 run/0: result 0 is 0 -mem/0: storing 0 in location 1216 +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: ["": ]} -mem/0: location 1216 is 0 +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: ingredient 0 is in -mem/0: location 1214 is 1060 +mem/0: location 1221 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 -run/0: product 0 is 1060 -mem/0: storing 1060 in location 1217 +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: ingredient 0 is in -mem/0: location 1214 is 1060 +mem/0: location 1221 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1218 +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: ingredient 0 is s -mem/0: location 1218 is 1062 +mem/0: location 1225 is 1064 run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1217 is 1060 -mem/0: location 1060 is 2 -run/0: address to copy is 1065 -run/0: product 0 is 1065 -mem/0: storing 1065 in location 1219 +mem/0: location 1224 is 1062 +mem/0: location 1062 is 2 +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: ingredient 0 is c -mem/0: location 1215 is 50 -mem/0: location 1219 is 1065 -mem/0: storing 50 in location 1065 +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: ingredient 0 is len -mem/0: location 1217 is 1060 -mem/0: location 1060 is 2 +mem/0: location 1224 is 1062 +mem/0: location 1062 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 -mem/0: location 1217 is 1060 -mem/0: storing 3 in location 1060 +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"]} -mem/0: location 1214 is 1060 -run/0: result 0 is 1060 -mem/0: storing 1060 in location 1006 +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: ingredient 0 is -6 @@ -568,29 +568,29 @@ 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: ingredient 0 is tmp -mem/0: location 1006 is 1060 +mem/0: location 1006 is 1062 run/0: ingredient 1 is length -run/0: address to copy is 1060 +run/0: address to copy is 1062 run/0: its type is 1 -mem/0: location 1060 is 3 +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: ingredient 0 is tmp -mem/0: location 1006 is 1060 +mem/0: location 1006 is 1062 run/0: ingredient 1 is data -run/0: address to copy is 1061 +run/0: address to copy is 1063 run/0: its type is 2 -mem/0: location 1061 is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1012 +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"]} mem/0: location 1011 is 3 mem/0: array size is 3 -mem/0: new alloc: 1272 -mem/0: storing 1272 in location 1003 +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: ingredient 0 is len @@ -617,29 +617,29 @@ 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: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1062 +mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} mem/0: location 1013 is 2 -run/0: address to copy is 1065 +run/0: address to copy is 1067 run/0: its type is 4 -mem/0: location 1065 is 50 +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: ingredient 0 is result -mem/0: location 1003 is 1272 +mem/0: location 1003 is 1281 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} mem/0: location 1014 is 0 -run/0: address to copy is 1273 -run/0: product 0 is 1273 -mem/0: storing 1273 in location 1016 +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: ingredient 0 is src mem/0: location 1015 is 50 -mem/0: location 1016 is 1273 -mem/0: storing 50 in location 1273 +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: ingredient 0 is i @@ -673,29 +673,29 @@ 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: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1062 +mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} mem/0: location 1013 is 1 -run/0: address to copy is 1064 +run/0: address to copy is 1066 run/0: its type is 4 -mem/0: location 1064 is 51 +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: ingredient 0 is result -mem/0: location 1003 is 1272 +mem/0: location 1003 is 1281 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} mem/0: location 1014 is 1 -run/0: address to copy is 1274 -run/0: product 0 is 1274 -mem/0: storing 1274 in location 1016 +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: ingredient 0 is src mem/0: location 1015 is 51 -mem/0: location 1016 is 1274 -mem/0: storing 51 in location 1274 +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: ingredient 0 is i @@ -729,29 +729,29 @@ 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: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1062 +mem/0: location 1012 is 1064 run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} mem/0: location 1013 is 0 -run/0: address to copy is 1063 +run/0: address to copy is 1065 run/0: its type is 4 -mem/0: location 1063 is 52 +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: ingredient 0 is result -mem/0: location 1003 is 1272 +mem/0: location 1003 is 1281 run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} mem/0: location 1014 is 2 -run/0: address to copy is 1275 -run/0: product 0 is 1275 -mem/0: storing 1275 in location 1016 +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: ingredient 0 is src mem/0: location 1015 is 52 -mem/0: location 1016 is 1275 -mem/0: storing 52 in location 1275 +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: ingredient 0 is i @@ -785,17 +785,17 @@ 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"]} -mem/0: location 1003 is 1272 -run/0: result 0 is 1272 -mem/0: storing 1272 in location 1 +mem/0: location 1003 is 1281 +run/0: result 0 is 1281 +mem/0: storing 1281 in location 1 run/0: instruction test-integer-to-decimal-digit-positive/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: ingredient 0 is 1 -mem/0: location 1 is 1272 -mem/0: location 1272 is 3 -mem/0: location 1273 is 50 -mem/0: location 1274 is 51 -mem/0: location 1275 is 52 +mem/0: location 1 is 1281 +mem/0: location 1281 is 3 +mem/0: location 1282 is 50 +mem/0: location 1283 is 51 +mem/0: location 1284 is 52 mem/0: storing 3 in location 2 mem/0: storing 50 in location 3 mem/0: storing 51 in location 4 diff --git a/cpp/.traces/integer-to-decimal-digit-zero b/cpp/.traces/integer-to-decimal-digit-zero index 16b62e31..e80db30e 100644 --- a/cpp/.traces/integer-to-decimal-digit-zero +++ b/cpp/.traces/integer-to-decimal-digit-zero @@ -26,17 +26,17 @@ 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"]} -mem/0: storing 1030 in location 1003 +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"]} -mem/0: location 1003 is 1030 -run/0: result 0 is 1030 -mem/0: storing 1030 in location 1 +mem/0: location 1003 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 run/0: instruction test-integer-to-decimal-digit-zero/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: ingredient 0 is 1 -mem/0: location 1 is 1030 -mem/0: location 1030 is 1 -mem/0: location 1031 is 48 +mem/0: location 1 is 1031 +mem/0: location 1031 is 1 +mem/0: location 1032 is 48 mem/0: storing 1 in location 2 mem/0: storing 48 in location 3 diff --git a/cpp/.traces/interpolate-at-end b/cpp/.traces/interpolate-at-end index 2ea86fe0..35fc4746 100644 --- a/cpp/.traces/interpolate-at-end +++ b/cpp/.traces/interpolate-at-end @@ -98,8 +98,8 @@ 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"]} mem/0: location 1017 is 10 mem/0: array size is 10 -mem/0: new alloc: 1073 -mem/0: storing 1073 in location 1021 +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: ingredient 0 is 0 @@ -157,18 +157,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 0 -run/0: address to copy is 1074 -run/0: product 0 is 1074 -mem/0: storing 1074 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 104 -mem/0: location 1027 is 1074 -mem/0: storing 104 in location 1074 +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: ingredient 0 is i @@ -226,18 +226,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 1 -run/0: address to copy is 1075 -run/0: product 0 is 1075 -mem/0: storing 1075 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 101 -mem/0: location 1027 is 1075 -mem/0: storing 101 in location 1075 +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: ingredient 0 is i @@ -295,18 +295,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 2 -run/0: address to copy is 1076 -run/0: product 0 is 1076 -mem/0: storing 1076 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 108 -mem/0: location 1027 is 1076 -mem/0: storing 108 in location 1076 +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: ingredient 0 is i @@ -364,18 +364,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 3 -run/0: address to copy is 1077 -run/0: product 0 is 1077 -mem/0: storing 1077 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 108 -mem/0: location 1027 is 1077 -mem/0: storing 108 in location 1077 +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: ingredient 0 is i @@ -433,18 +433,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 4 -run/0: address to copy is 1078 -run/0: product 0 is 1078 -mem/0: storing 1078 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 111 -mem/0: location 1027 is 1078 -mem/0: storing 111 in location 1078 +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: ingredient 0 is i @@ -502,18 +502,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 5 -run/0: address to copy is 1079 -run/0: product 0 is 1079 -mem/0: storing 1079 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 44 -mem/0: location 1027 is 1079 -mem/0: storing 44 in location 1079 +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: ingredient 0 is i @@ -571,18 +571,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 6 -run/0: address to copy is 1080 -run/0: product 0 is 1080 -mem/0: storing 1080 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 32 -mem/0: location 1027 is 1080 -mem/0: storing 32 in location 1080 +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: ingredient 0 is i @@ -669,18 +669,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 7 -run/0: address to copy is 1081 -run/0: product 0 is 1081 -mem/0: storing 1081 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 97 -mem/0: location 1027 is 1081 -mem/0: storing 97 in location 1081 +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: ingredient 0 is j @@ -726,18 +726,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 8 -run/0: address to copy is 1082 -run/0: product 0 is 1082 -mem/0: storing 1082 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 98 -mem/0: location 1027 is 1082 -mem/0: storing 98 in location 1082 +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: ingredient 0 is j @@ -783,18 +783,18 @@ 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: ingredient 0 is result -mem/0: location 1021 is 1073 +mem/0: location 1021 is 1074 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1022 is 9 -run/0: address to copy is 1083 -run/0: product 0 is 1083 -mem/0: storing 1083 in location 1027 +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: ingredient 0 is in mem/0: location 1025 is 99 -mem/0: location 1027 is 1083 -mem/0: storing 99 in location 1083 +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: ingredient 0 is j @@ -863,24 +863,24 @@ 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"]} -mem/0: location 1021 is 1073 -run/0: result 0 is 1073 -mem/0: storing 1073 in location 3 +mem/0: location 1021 is 1074 +run/0: result 0 is 1074 +mem/0: storing 1074 in location 3 run/0: instruction test-interpolate-at-end/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: ingredient 0 is 3 -mem/0: location 3 is 1073 -mem/0: location 1073 is 10 -mem/0: location 1074 is 104 -mem/0: location 1075 is 101 -mem/0: location 1076 is 108 +mem/0: location 3 is 1074 +mem/0: location 1074 is 10 +mem/0: location 1075 is 104 +mem/0: location 1076 is 101 mem/0: location 1077 is 108 -mem/0: location 1078 is 111 -mem/0: location 1079 is 44 -mem/0: location 1080 is 32 -mem/0: location 1081 is 97 -mem/0: location 1082 is 98 -mem/0: location 1083 is 99 +mem/0: location 1078 is 108 +mem/0: location 1079 is 111 +mem/0: location 1080 is 44 +mem/0: location 1081 is 32 +mem/0: location 1082 is 97 +mem/0: location 1083 is 98 +mem/0: location 1084 is 99 mem/0: storing 10 in location 4 mem/0: storing 104 in location 5 mem/0: storing 101 in location 6 diff --git a/cpp/.traces/interpolate-at-start b/cpp/.traces/interpolate-at-start index 75c4420b..47c1d8c0 100644 --- a/cpp/.traces/interpolate-at-start +++ b/cpp/.traces/interpolate-at-start @@ -98,8 +98,8 @@ 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"]} mem/0: location 1018 is 11 mem/0: array size is 11 -mem/0: new alloc: 1074 -mem/0: storing 1074 in location 1022 +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: ingredient 0 is 0 @@ -186,18 +186,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 0 -run/0: address to copy is 1075 -run/0: product 0 is 1075 -mem/0: storing 1075 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 97 -mem/0: location 1028 is 1075 -mem/0: storing 97 in location 1075 +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: ingredient 0 is j @@ -243,18 +243,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 1 -run/0: address to copy is 1076 -run/0: product 0 is 1076 -mem/0: storing 1076 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 98 -mem/0: location 1028 is 1076 -mem/0: storing 98 in location 1076 +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: ingredient 0 is j @@ -300,18 +300,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 2 -run/0: address to copy is 1077 -run/0: product 0 is 1077 -mem/0: storing 1077 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 99 -mem/0: location 1028 is 1077 -mem/0: storing 99 in location 1077 +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: ingredient 0 is j @@ -391,18 +391,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 3 -run/0: address to copy is 1078 -run/0: product 0 is 1078 -mem/0: storing 1078 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 44 -mem/0: location 1028 is 1078 -mem/0: storing 44 in location 1078 +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: ingredient 0 is i @@ -448,18 +448,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 4 -run/0: address to copy is 1079 -run/0: product 0 is 1079 -mem/0: storing 1079 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 32 -mem/0: location 1028 is 1079 -mem/0: storing 32 in location 1079 +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: ingredient 0 is i @@ -505,18 +505,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 5 -run/0: address to copy is 1080 -run/0: product 0 is 1080 -mem/0: storing 1080 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 104 -mem/0: location 1028 is 1080 -mem/0: storing 104 in location 1080 +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: ingredient 0 is i @@ -562,18 +562,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 6 -run/0: address to copy is 1081 -run/0: product 0 is 1081 -mem/0: storing 1081 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 101 -mem/0: location 1028 is 1081 -mem/0: storing 101 in location 1081 +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: ingredient 0 is i @@ -619,18 +619,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 7 -run/0: address to copy is 1082 -run/0: product 0 is 1082 -mem/0: storing 1082 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 108 -mem/0: location 1028 is 1082 -mem/0: storing 108 in location 1082 +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: ingredient 0 is i @@ -676,18 +676,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 8 -run/0: address to copy is 1083 -run/0: product 0 is 1083 -mem/0: storing 1083 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 108 -mem/0: location 1028 is 1083 -mem/0: storing 108 in location 1083 +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: ingredient 0 is i @@ -733,18 +733,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 9 -run/0: address to copy is 1084 -run/0: product 0 is 1084 -mem/0: storing 1084 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 111 -mem/0: location 1028 is 1084 -mem/0: storing 111 in location 1084 +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: ingredient 0 is i @@ -790,18 +790,18 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1074 +mem/0: location 1022 is 1075 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 10 -run/0: address to copy is 1085 -run/0: product 0 is 1085 -mem/0: storing 1085 in location 1028 +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: ingredient 0 is in mem/0: location 1026 is 33 -mem/0: location 1028 is 1085 -mem/0: storing 33 in location 1085 +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: ingredient 0 is i @@ -836,25 +836,25 @@ 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"]} -mem/0: location 1022 is 1074 -run/0: result 0 is 1074 -mem/0: storing 1074 in location 3 +mem/0: location 1022 is 1075 +run/0: result 0 is 1075 +mem/0: storing 1075 in location 3 run/0: instruction test-interpolate-at-start/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: ingredient 0 is 3 -mem/0: location 3 is 1074 -mem/0: location 1074 is 11 -mem/0: location 1075 is 97 -mem/0: location 1076 is 98 -mem/0: location 1077 is 99 -mem/0: location 1078 is 44 -mem/0: location 1079 is 32 -mem/0: location 1080 is 104 -mem/0: location 1081 is 101 -mem/0: location 1082 is 108 +mem/0: location 3 is 1075 +mem/0: location 1075 is 11 +mem/0: location 1076 is 97 +mem/0: location 1077 is 98 +mem/0: location 1078 is 99 +mem/0: location 1079 is 44 +mem/0: location 1080 is 32 +mem/0: location 1081 is 104 +mem/0: location 1082 is 101 mem/0: location 1083 is 108 -mem/0: location 1084 is 111 -mem/0: location 1085 is 33 +mem/0: location 1084 is 108 +mem/0: location 1085 is 111 +mem/0: location 1086 is 33 mem/0: storing 11 in location 4 mem/0: storing 97 in location 5 mem/0: storing 98 in location 6 diff --git a/cpp/.traces/interpolate-works b/cpp/.traces/interpolate-works index e299c10a..c093cc14 100644 --- a/cpp/.traces/interpolate-works +++ b/cpp/.traces/interpolate-works @@ -98,8 +98,8 @@ 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"]} mem/0: location 1014 is 7 mem/0: array size is 7 -mem/0: new alloc: 1070 -mem/0: storing 1070 in location 1018 +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: ingredient 0 is 0 @@ -157,18 +157,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 0 -run/0: address to copy is 1071 -run/0: product 0 is 1071 -mem/0: storing 1071 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 97 -mem/0: location 1024 is 1071 -mem/0: storing 97 in location 1071 +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: ingredient 0 is i @@ -226,18 +226,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 1 -run/0: address to copy is 1072 -run/0: product 0 is 1072 -mem/0: storing 1072 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 98 -mem/0: location 1024 is 1072 -mem/0: storing 98 in location 1072 +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: ingredient 0 is i @@ -295,18 +295,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 2 -run/0: address to copy is 1073 -run/0: product 0 is 1073 -mem/0: storing 1073 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 99 -mem/0: location 1024 is 1073 -mem/0: storing 99 in location 1073 +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: ingredient 0 is i @@ -364,18 +364,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 3 -run/0: address to copy is 1074 -run/0: product 0 is 1074 -mem/0: storing 1074 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 32 -mem/0: location 1024 is 1074 -mem/0: storing 32 in location 1074 +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: ingredient 0 is i @@ -462,18 +462,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 4 -run/0: address to copy is 1075 -run/0: product 0 is 1075 -mem/0: storing 1075 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 100 -mem/0: location 1024 is 1075 -mem/0: storing 100 in location 1075 +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: ingredient 0 is j @@ -519,18 +519,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 5 -run/0: address to copy is 1076 -run/0: product 0 is 1076 -mem/0: storing 1076 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 101 -mem/0: location 1024 is 1076 -mem/0: storing 101 in location 1076 +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: ingredient 0 is j @@ -576,18 +576,18 @@ 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: ingredient 0 is result -mem/0: location 1018 is 1070 +mem/0: location 1018 is 1071 run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1019 is 6 -run/0: address to copy is 1077 -run/0: product 0 is 1077 -mem/0: storing 1077 in location 1024 +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: ingredient 0 is in mem/0: location 1022 is 102 -mem/0: location 1024 is 1077 -mem/0: storing 102 in location 1077 +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: ingredient 0 is j @@ -656,21 +656,21 @@ 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"]} -mem/0: location 1018 is 1070 -run/0: result 0 is 1070 -mem/0: storing 1070 in location 3 +mem/0: location 1018 is 1071 +run/0: result 0 is 1071 +mem/0: storing 1071 in location 3 run/0: instruction test-interpolate-works/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: ingredient 0 is 3 -mem/0: location 3 is 1070 -mem/0: location 1070 is 7 -mem/0: location 1071 is 97 -mem/0: location 1072 is 98 -mem/0: location 1073 is 99 -mem/0: location 1074 is 32 -mem/0: location 1075 is 100 -mem/0: location 1076 is 101 -mem/0: location 1077 is 102 +mem/0: location 3 is 1071 +mem/0: location 1071 is 7 +mem/0: location 1072 is 97 +mem/0: location 1073 is 98 +mem/0: location 1074 is 99 +mem/0: location 1075 is 32 +mem/0: location 1076 is 100 +mem/0: location 1077 is 101 +mem/0: location 1078 is 102 mem/0: storing 7 in location 4 mem/0: storing 97 in location 5 mem/0: storing 98 in location 6 diff --git a/cpp/.traces/new_array b/cpp/.traces/new_array index 1cf28797..52919f13 100644 --- a/cpp/.traces/new_array +++ b/cpp/.traces/new_array @@ -24,13 +24,13 @@ 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"]} -mem/0: new alloc: 1005 -mem/0: storing 1005 in location 2 +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: ingredient 0 is 2 -mem/0: location 2 is 1005 +mem/0: location 2 is 1006 run/0: ingredient 1 is 1 mem/0: location 1 is 1000 -run/0: product 0 is 5 -mem/0: storing 5 in location 3 +run/0: product 0 is 6 +mem/0: storing 6 in location 3 diff --git a/cpp/.traces/parse_dollar_as_recipe_name b/cpp/.traces/parse_dollar_as_recipe_name new file mode 100644 index 00000000..a73100d5 --- /dev/null +++ b/cpp/.traces/parse_dollar_as_recipe_name @@ -0,0 +1 @@ +parse/0: instruction: $foo diff --git a/cpp/.traces/print-character-at-top-left b/cpp/.traces/print-character-at-top-left new file mode 100644 index 00000000..65bf6f98 --- /dev/null +++ b/cpp/.traces/print-character-at-top-left @@ -0,0 +1,541 @@ +parse/0: instruction: init-fake-screen +parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "width": ]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal", "height": ]} +parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} +parse/0: instruction: print-character +parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} +parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} +parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} +parse/0: instruction: get +parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen", "deref": ]} +parse/0: ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]} +parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character"]} +parse/0: instruction: copy +parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} +parse/0: product: {name: "3", value: 0, type: 5-4, properties: ["3": "array":"character"]} +name/0: element data of type screen is at offset 4 +after-brace/0: recipe test-print-character-at-top-left +after-brace/0: init-fake-screen ... +after-brace/0: print-character ... +after-brace/0: get ... +after-brace/0: copy ... +new/0: routine allocated memory from 1000 to 101000 +schedule/0: test-print-character-at-top-left +run/0: instruction test-print-character-at-top-left/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: 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": ]} +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"]} +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: ingredient 0 is result +mem/0: location 1002 is 1031 +run/0: ingredient 1 is num-columns +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: 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: ingredient 0 is result +mem/0: location 1002 is 1031 +run/0: ingredient 1 is num-rows +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: 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: ingredient 0 is result +mem/0: location 1002 is 1031 +run/0: ingredient 1 is cursor-row +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: 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: ingredient 0 is result +mem/0: location 1002 is 1031 +run/0: ingredient 1 is cursor-column +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: 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: ingredient 0 is width +mem/0: location 1003 is 1032 +mem/0: location 1032 is 3 +run/0: ingredient 1 is height +mem/0: location 1004 is 1031 +mem/0: location 1031 is 2 +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: ingredient 0 is result +mem/0: location 1002 is 1031 +run/0: ingredient 1 is data +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"]} +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"]} +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"]} +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: 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: ["": ]} +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: ingredient 0 is x +mem/0: location 1045 is 1031 +run/0: ingredient 1 is data +run/0: address to copy is 1035 +run/0: its type is 2 +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": ]} +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: 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: ingredient 0 is i +mem/0: location 1048 is 0 +run/0: ingredient 1 is max +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: ["": ]} +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: ingredient 0 is buf +mem/0: location 1046 is 1036 +run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +mem/0: location 1048 is 0 +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: 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: 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: 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: ingredient 0 is i +mem/0: location 1048 is 1 +run/0: ingredient 1 is max +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: ["": ]} +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: ingredient 0 is buf +mem/0: location 1046 is 1036 +run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +mem/0: location 1048 is 1 +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: 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: 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: 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: ingredient 0 is i +mem/0: location 1048 is 2 +run/0: ingredient 1 is max +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: ["": ]} +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: ingredient 0 is buf +mem/0: location 1046 is 1036 +run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +mem/0: location 1048 is 2 +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: 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: 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: 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: ingredient 0 is i +mem/0: location 1048 is 3 +run/0: ingredient 1 is max +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: ["": ]} +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: ingredient 0 is buf +mem/0: location 1046 is 1036 +run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +mem/0: location 1048 is 3 +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: 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: 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: 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: ingredient 0 is i +mem/0: location 1048 is 4 +run/0: ingredient 1 is max +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: ["": ]} +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: ingredient 0 is buf +mem/0: location 1046 is 1036 +run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +mem/0: location 1048 is 4 +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: 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: 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: 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: ingredient 0 is i +mem/0: location 1048 is 5 +run/0: ingredient 1 is max +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: ["": ]} +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: ingredient 0 is buf +mem/0: location 1046 is 1036 +run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} +mem/0: location 1048 is 5 +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: 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: 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: 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: ingredient 0 is i +mem/0: location 1048 is 6 +run/0: ingredient 1 is max +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: ["": ]} +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"]} +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"]} +mem/0: location 1002 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 +run/0: instruction test-print-character-at-top-left/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"]} +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"]} +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: 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: 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: ["": ]} +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: ingredient 0 is x +mem/0: location 1076 is 1031 +run/0: ingredient 1 is cursor-row +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: ingredient 0 is x +mem/0: location 1076 is 1031 +run/0: ingredient 1 is cursor-column +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: ingredient 0 is x +mem/0: location 1076 is 1031 +run/0: ingredient 1 is num-columns +run/0: address to copy is 1032 +run/0: its type is 1 +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: ingredient 0 is row +mem/0: location 1078 is 1033 +mem/0: location 1033 is 0 +run/0: ingredient 1 is width +mem/0: location 1080 is 3 +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: ingredient 0 is index +mem/0: location 1081 is 0 +run/0: ingredient 1 is column +mem/0: location 1079 is 1034 +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: ingredient 0 is x +mem/0: location 1076 is 1031 +run/0: ingredient 1 is data +run/0: address to copy is 1035 +run/0: its type is 2 +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: ingredient 0 is buf +mem/0: location 1082 is 1036 +run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} +mem/0: location 1081 is 0 +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: 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: ingredient 0 is column +mem/0: location 1079 is 1034 +mem/0: location 1034 is 0 +run/0: ingredient 1 is width +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: ["": ]} +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: ingredient 0 is column +mem/0: location 1079 is 1034 +mem/0: location 1034 is 0 +run/0: ingredient 1 is 1 +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"]} +mem/0: location 1076 is 1031 +run/0: result 0 is 1031 +mem/0: storing 1031 in location 1 +run/0: instruction test-print-character-at-top-left/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: ingredient 0 is 1 +mem/0: location 1 is 1031 +run/0: ingredient 1 is data +run/0: address to copy is 1035 +run/0: its type is 2 +mem/0: location 1035 is 1036 +run/0: product 0 is 1036 +mem/0: storing 1036 in location 2 +run/0: instruction test-print-character-at-top-left/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: ingredient 0 is 2 +mem/0: location 2 is 1036 +mem/0: location 1036 is 6 +mem/0: location 1037 is 97 +mem/0: location 1038 is 0 +mem/0: location 1039 is 0 +mem/0: location 1040 is 0 +mem/0: location 1041 is 0 +mem/0: location 1042 is 0 +mem/0: storing 6 in location 3 +mem/0: storing 97 in location 4 +mem/0: storing 0 in location 5 +mem/0: storing 0 in location 6 +mem/0: storing 0 in location 7 +mem/0: storing 0 in location 8 +mem/0: storing 0 in location 9 diff --git a/cpp/.traces/string-append-1 b/cpp/.traces/string-append-1 index ce50ab28..16645ab7 100644 --- a/cpp/.traces/string-append-1 +++ b/cpp/.traces/string-append-1 @@ -62,8 +62,8 @@ 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"]} mem/0: location 1021 is 13 mem/0: array size is 13 -mem/0: new alloc: 1045 -mem/0: storing 1045 in location 1022 +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: ingredient 0 is 0 @@ -88,12 +88,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 0 -run/0: address to copy is 1046 -run/0: product 0 is 1046 -mem/0: storing 1046 in location 1026 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} @@ -109,8 +109,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 104 -mem/0: location 1026 is 1046 -mem/0: storing 104 in location 1046 +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: ingredient 0 is i @@ -145,12 +145,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 1 -run/0: address to copy is 1047 -run/0: product 0 is 1047 -mem/0: storing 1047 in location 1026 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} @@ -166,8 +166,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 101 -mem/0: location 1026 is 1047 -mem/0: storing 101 in location 1047 +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: ingredient 0 is i @@ -202,12 +202,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 2 -run/0: address to copy is 1048 -run/0: product 0 is 1048 -mem/0: storing 1048 in location 1026 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} @@ -223,8 +223,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 108 -mem/0: location 1026 is 1048 -mem/0: storing 108 in location 1048 +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: ingredient 0 is i @@ -259,12 +259,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 3 -run/0: address to copy is 1049 -run/0: product 0 is 1049 -mem/0: storing 1049 in location 1026 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} @@ -280,8 +280,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 108 -mem/0: location 1026 is 1049 -mem/0: storing 108 in location 1049 +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: ingredient 0 is i @@ -316,12 +316,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 4 -run/0: address to copy is 1050 -run/0: product 0 is 1050 -mem/0: storing 1050 in location 1026 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} @@ -337,8 +337,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 111 -mem/0: location 1026 is 1050 -mem/0: storing 111 in location 1050 +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: ingredient 0 is i @@ -373,12 +373,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 5 -run/0: address to copy is 1051 -run/0: product 0 is 1051 -mem/0: storing 1051 in location 1026 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} @@ -394,8 +394,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 44 -mem/0: location 1026 is 1051 -mem/0: storing 44 in location 1051 +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: ingredient 0 is i @@ -448,12 +448,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 6 -run/0: address to copy is 1052 -run/0: product 0 is 1052 -mem/0: storing 1052 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -469,8 +469,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 32 -mem/0: location 1026 is 1052 -mem/0: storing 32 in location 1052 +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: ingredient 0 is i @@ -505,12 +505,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 7 -run/0: address to copy is 1053 -run/0: product 0 is 1053 -mem/0: storing 1053 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -526,8 +526,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 119 -mem/0: location 1026 is 1053 -mem/0: storing 119 in location 1053 +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: ingredient 0 is i @@ -562,12 +562,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 8 -run/0: address to copy is 1054 -run/0: product 0 is 1054 -mem/0: storing 1054 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -583,8 +583,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 111 -mem/0: location 1026 is 1054 -mem/0: storing 111 in location 1054 +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: ingredient 0 is i @@ -619,12 +619,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 9 -run/0: address to copy is 1055 -run/0: product 0 is 1055 -mem/0: storing 1055 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -640,8 +640,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 114 -mem/0: location 1026 is 1055 -mem/0: storing 114 in location 1055 +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: ingredient 0 is i @@ -676,12 +676,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 10 -run/0: address to copy is 1056 -run/0: product 0 is 1056 -mem/0: storing 1056 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -697,8 +697,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 108 -mem/0: location 1026 is 1056 -mem/0: storing 108 in location 1056 +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: ingredient 0 is i @@ -733,12 +733,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 11 -run/0: address to copy is 1057 -run/0: product 0 is 1057 -mem/0: storing 1057 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -754,8 +754,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 100 -mem/0: location 1026 is 1057 -mem/0: storing 100 in location 1057 +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: ingredient 0 is i @@ -790,12 +790,12 @@ 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: ingredient 0 is result -mem/0: location 1022 is 1045 +mem/0: location 1022 is 1046 run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} mem/0: location 1023 is 12 -run/0: address to copy is 1058 -run/0: product 0 is 1058 -mem/0: storing 1058 in location 1026 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} @@ -811,8 +811,8 @@ 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: ingredient 0 is in mem/0: location 1027 is 33 -mem/0: location 1026 is 1058 -mem/0: storing 33 in location 1058 +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: ingredient 0 is i @@ -847,27 +847,27 @@ 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"]} -mem/0: location 1022 is 1045 -run/0: result 0 is 1045 -mem/0: storing 1045 in location 3 +mem/0: location 1022 is 1046 +run/0: result 0 is 1046 +mem/0: storing 1046 in location 3 run/0: instruction test-string-append-1/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: ingredient 0 is 3 -mem/0: location 3 is 1045 -mem/0: location 1045 is 13 -mem/0: location 1046 is 104 -mem/0: location 1047 is 101 -mem/0: location 1048 is 108 +mem/0: location 3 is 1046 +mem/0: location 1046 is 13 +mem/0: location 1047 is 104 +mem/0: location 1048 is 101 mem/0: location 1049 is 108 -mem/0: location 1050 is 111 -mem/0: location 1051 is 44 -mem/0: location 1052 is 32 -mem/0: location 1053 is 119 -mem/0: location 1054 is 111 -mem/0: location 1055 is 114 -mem/0: location 1056 is 108 -mem/0: location 1057 is 100 -mem/0: location 1058 is 33 +mem/0: location 1050 is 108 +mem/0: location 1051 is 111 +mem/0: location 1052 is 44 +mem/0: location 1053 is 32 +mem/0: location 1054 is 119 +mem/0: location 1055 is 111 +mem/0: location 1056 is 114 +mem/0: location 1057 is 108 +mem/0: location 1058 is 100 +mem/0: location 1059 is 33 mem/0: storing 13 in location 4 mem/0: storing 104 in location 5 mem/0: storing 101 in location 6 diff --git a/cpp/.traces/string-equal-common-lengths-but-distinct b/cpp/.traces/string-equal-common-lengths-but-distinct index c74e78bf..82244da9 100644 --- a/cpp/.traces/string-equal-common-lengths-but-distinct +++ b/cpp/.traces/string-equal-common-lengths-but-distinct @@ -30,48 +30,48 @@ mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction test-string-equal-common-lengths-but-distinct/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"]} -mem/0: storing 1030 in location 1002 +mem/0: storing 1031 in location 1002 run/0: instruction test-string-equal-common-lengths-but-distinct/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"]} -mem/0: storing 1034 in location 1003 +mem/0: storing 1035 in location 1003 run/0: instruction test-string-equal-common-lengths-but-distinct/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"]} -mem/0: location 1002 is 1030 -mem/0: location 1003 is 1034 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1038 +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: product 0 is 1030 -mem/0: storing 1030 in location 1040 +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": ]} -mem/0: location 1040 is 1030 -mem/0: storing 3 in location 1041 +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: product 0 is 1034 -mem/0: storing 1034 in location 1042 +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": ]} -mem/0: location 1042 is 1034 -mem/0: storing 3 in location 1043 +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"]} 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: ingredient 0 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: ingredient 1 is b-len -mem/0: location 1043 is 3 +mem/0: location 1044 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1044 +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: ["": ]} -mem/0: location 1044 is 1 +mem/0: location 1045 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 10 @@ -81,63 +81,63 @@ 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: ingredient 0 is 0 -mem/0: storing 0 in location 1045 +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: ingredient 0 is i -mem/0: location 1045 is 0 +mem/0: location 1046 is 0 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1046 +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: ["": ]} -mem/0: location 1046 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1040 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 0 -run/0: address to copy is 1031 +mem/0: location 1046 is 0 +run/0: address to copy is 1032 run/0: its type is 4 -mem/0: location 1031 is 97 +mem/0: location 1032 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1047 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1034 +mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 0 -run/0: address to copy is 1035 +mem/0: location 1046 is 0 +run/0: address to copy is 1036 run/0: its type is 4 -mem/0: location 1035 is 97 +mem/0: location 1036 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1048 +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: ingredient 0 is a2 -mem/0: location 1047 is 97 -run/0: ingredient 1 is b2 mem/0: location 1048 is 97 +run/0: ingredient 1 is b2 +mem/0: location 1049 is 97 run/0: product 0 is 1 -mem/0: storing 1 in location 1049 +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: ["": ]} -mem/0: location 1049 is 1 +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: ingredient 0 is i -mem/0: location 1045 is 0 +mem/0: location 1046 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1045 +mem/0: storing 1 in location 1046 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -145,59 +145,59 @@ 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: ingredient 0 is i -mem/0: location 1045 is 1 +mem/0: location 1046 is 1 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1046 +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: ["": ]} -mem/0: location 1046 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1040 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 1 -run/0: address to copy is 1032 +mem/0: location 1046 is 1 +run/0: address to copy is 1033 run/0: its type is 4 -mem/0: location 1032 is 98 +mem/0: location 1033 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1047 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1034 +mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 1 -run/0: address to copy is 1036 +mem/0: location 1046 is 1 +run/0: address to copy is 1037 run/0: its type is 4 -mem/0: location 1036 is 98 +mem/0: location 1037 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1048 +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: ingredient 0 is a2 -mem/0: location 1047 is 98 -run/0: ingredient 1 is b2 mem/0: location 1048 is 98 +run/0: ingredient 1 is b2 +mem/0: location 1049 is 98 run/0: product 0 is 1 -mem/0: storing 1 in location 1049 +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: ["": ]} -mem/0: location 1049 is 1 +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: ingredient 0 is i -mem/0: location 1045 is 1 +mem/0: location 1046 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1045 +mem/0: storing 2 in location 1046 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -205,49 +205,49 @@ 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: ingredient 0 is i -mem/0: location 1045 is 2 +mem/0: location 1046 is 2 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1046 +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: ["": ]} -mem/0: location 1046 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1040 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 2 -run/0: address to copy is 1033 +mem/0: location 1046 is 2 +run/0: address to copy is 1034 run/0: its type is 4 -mem/0: location 1033 is 99 +mem/0: location 1034 is 99 run/0: product 0 is 99 -mem/0: storing 99 in location 1047 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1034 +mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 2 -run/0: address to copy is 1037 +mem/0: location 1046 is 2 +run/0: address to copy is 1038 run/0: its type is 4 -mem/0: location 1037 is 100 +mem/0: location 1038 is 100 run/0: product 0 is 100 -mem/0: storing 100 in location 1048 +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: ingredient 0 is a2 -mem/0: location 1047 is 99 +mem/0: location 1048 is 99 run/0: ingredient 1 is b2 -mem/0: location 1048 is 100 +mem/0: location 1049 is 100 run/0: product 0 is 0 -mem/0: storing 0 in location 1049 +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: ["": ]} -mem/0: location 1049 is 0 +mem/0: location 1050 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/21 diff --git a/cpp/.traces/string-equal-distinct-lengths b/cpp/.traces/string-equal-distinct-lengths index 22c4c754..72ff3a0c 100644 --- a/cpp/.traces/string-equal-distinct-lengths +++ b/cpp/.traces/string-equal-distinct-lengths @@ -30,48 +30,48 @@ mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction test-string-equal-distinct-lengths/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"]} -mem/0: storing 1030 in location 1002 +mem/0: storing 1031 in location 1002 run/0: instruction test-string-equal-distinct-lengths/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"]} -mem/0: storing 1034 in location 1003 +mem/0: storing 1035 in location 1003 run/0: instruction test-string-equal-distinct-lengths/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"]} -mem/0: location 1002 is 1030 -mem/0: location 1003 is 1034 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1039 +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: product 0 is 1030 -mem/0: storing 1030 in location 1041 +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": ]} -mem/0: location 1041 is 1030 -mem/0: storing 3 in location 1042 +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: product 0 is 1034 -mem/0: storing 1034 in location 1043 +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": ]} -mem/0: location 1043 is 1034 -mem/0: storing 4 in location 1044 +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"]} 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: ingredient 0 is a-len -mem/0: location 1042 is 3 +mem/0: location 1043 is 3 run/0: ingredient 1 is b-len -mem/0: location 1044 is 4 +mem/0: location 1045 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1045 +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: ["": ]} -mem/0: location 1045 is 0 +mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/9 diff --git a/cpp/.traces/string-equal-identical b/cpp/.traces/string-equal-identical index db4b3558..57f3afa8 100644 --- a/cpp/.traces/string-equal-identical +++ b/cpp/.traces/string-equal-identical @@ -30,48 +30,48 @@ mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction test-string-equal-identical/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"]} -mem/0: storing 1030 in location 1002 +mem/0: storing 1031 in location 1002 run/0: instruction test-string-equal-identical/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"]} -mem/0: storing 1034 in location 1003 +mem/0: storing 1035 in location 1003 run/0: instruction test-string-equal-identical/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"]} -mem/0: location 1002 is 1030 -mem/0: location 1003 is 1034 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1038 +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: product 0 is 1030 -mem/0: storing 1030 in location 1040 +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": ]} -mem/0: location 1040 is 1030 -mem/0: storing 3 in location 1041 +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: product 0 is 1034 -mem/0: storing 1034 in location 1042 +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": ]} -mem/0: location 1042 is 1034 -mem/0: storing 3 in location 1043 +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"]} 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: ingredient 0 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: ingredient 1 is b-len -mem/0: location 1043 is 3 +mem/0: location 1044 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1044 +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: ["": ]} -mem/0: location 1044 is 1 +mem/0: location 1045 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 10 @@ -81,63 +81,63 @@ 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: ingredient 0 is 0 -mem/0: storing 0 in location 1045 +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: ingredient 0 is i -mem/0: location 1045 is 0 +mem/0: location 1046 is 0 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1046 +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: ["": ]} -mem/0: location 1046 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1040 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 0 -run/0: address to copy is 1031 +mem/0: location 1046 is 0 +run/0: address to copy is 1032 run/0: its type is 4 -mem/0: location 1031 is 97 +mem/0: location 1032 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1047 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1034 +mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 0 -run/0: address to copy is 1035 +mem/0: location 1046 is 0 +run/0: address to copy is 1036 run/0: its type is 4 -mem/0: location 1035 is 97 +mem/0: location 1036 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1048 +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: ingredient 0 is a2 -mem/0: location 1047 is 97 -run/0: ingredient 1 is b2 mem/0: location 1048 is 97 +run/0: ingredient 1 is b2 +mem/0: location 1049 is 97 run/0: product 0 is 1 -mem/0: storing 1 in location 1049 +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: ["": ]} -mem/0: location 1049 is 1 +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: ingredient 0 is i -mem/0: location 1045 is 0 +mem/0: location 1046 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1045 +mem/0: storing 1 in location 1046 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -145,59 +145,59 @@ 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: ingredient 0 is i -mem/0: location 1045 is 1 +mem/0: location 1046 is 1 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1046 +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: ["": ]} -mem/0: location 1046 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1040 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 1 -run/0: address to copy is 1032 +mem/0: location 1046 is 1 +run/0: address to copy is 1033 run/0: its type is 4 -mem/0: location 1032 is 98 +mem/0: location 1033 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1047 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1034 +mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 1 -run/0: address to copy is 1036 +mem/0: location 1046 is 1 +run/0: address to copy is 1037 run/0: its type is 4 -mem/0: location 1036 is 98 +mem/0: location 1037 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1048 +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: ingredient 0 is a2 -mem/0: location 1047 is 98 -run/0: ingredient 1 is b2 mem/0: location 1048 is 98 +run/0: ingredient 1 is b2 +mem/0: location 1049 is 98 run/0: product 0 is 1 -mem/0: storing 1 in location 1049 +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: ["": ]} -mem/0: location 1049 is 1 +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: ingredient 0 is i -mem/0: location 1045 is 1 +mem/0: location 1046 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1045 +mem/0: storing 2 in location 1046 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -205,59 +205,59 @@ 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: ingredient 0 is i -mem/0: location 1045 is 2 +mem/0: location 1046 is 2 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1046 +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: ["": ]} -mem/0: location 1046 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1040 is 1030 +mem/0: location 1041 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 2 -run/0: address to copy is 1033 +mem/0: location 1046 is 2 +run/0: address to copy is 1034 run/0: its type is 4 -mem/0: location 1033 is 99 +mem/0: location 1034 is 99 run/0: product 0 is 99 -mem/0: storing 99 in location 1047 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1034 +mem/0: location 1043 is 1035 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1045 is 2 -run/0: address to copy is 1037 +mem/0: location 1046 is 2 +run/0: address to copy is 1038 run/0: its type is 4 -mem/0: location 1037 is 99 +mem/0: location 1038 is 99 run/0: product 0 is 99 -mem/0: storing 99 in location 1048 +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: ingredient 0 is a2 -mem/0: location 1047 is 99 -run/0: ingredient 1 is b2 mem/0: location 1048 is 99 +run/0: ingredient 1 is b2 +mem/0: location 1049 is 99 run/0: product 0 is 1 -mem/0: storing 1 in location 1049 +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: ["": ]} -mem/0: location 1049 is 1 +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: ingredient 0 is i -mem/0: location 1045 is 2 +mem/0: location 1046 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 -mem/0: storing 3 in location 1045 +mem/0: storing 3 in location 1046 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -265,14 +265,14 @@ 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: ingredient 0 is i -mem/0: location 1045 is 3 +mem/0: location 1046 is 3 run/0: ingredient 1 is a-len -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1046 +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: ["": ]} -mem/0: location 1046 is 1 +mem/0: location 1047 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 25 diff --git a/cpp/.traces/string-equal-reflexive b/cpp/.traces/string-equal-reflexive index 9384569d..b13664f2 100644 --- a/cpp/.traces/string-equal-reflexive +++ b/cpp/.traces/string-equal-reflexive @@ -24,45 +24,45 @@ mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction test-string-equal-reflexive/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"]} -mem/0: storing 1030 in location 1002 +mem/0: storing 1031 in location 1002 run/0: instruction test-string-equal-reflexive/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"]} -mem/0: location 1002 is 1030 -mem/0: location 1002 is 1030 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1034 +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: product 0 is 1030 -mem/0: storing 1030 in location 1036 +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": ]} -mem/0: location 1036 is 1030 -mem/0: storing 3 in location 1037 +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: product 0 is 1030 -mem/0: storing 1030 in location 1038 +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": ]} -mem/0: location 1038 is 1030 -mem/0: storing 3 in location 1039 +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"]} 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: ingredient 0 is a-len -mem/0: location 1037 is 3 +mem/0: location 1038 is 3 run/0: ingredient 1 is b-len -mem/0: location 1039 is 3 +mem/0: location 1040 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1040 +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: ["": ]} -mem/0: location 1040 is 1 +mem/0: location 1041 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 10 @@ -72,63 +72,63 @@ 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: ingredient 0 is 0 -mem/0: storing 0 in location 1041 +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: ingredient 0 is i -mem/0: location 1041 is 0 +mem/0: location 1042 is 0 run/0: ingredient 1 is a-len -mem/0: location 1037 is 3 +mem/0: location 1038 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1042 +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: ["": ]} -mem/0: location 1042 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1036 is 1030 +mem/0: location 1037 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1041 is 0 -run/0: address to copy is 1031 +mem/0: location 1042 is 0 +run/0: address to copy is 1032 run/0: its type is 4 -mem/0: location 1031 is 97 +mem/0: location 1032 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1043 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1038 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1041 is 0 -run/0: address to copy is 1031 +mem/0: location 1042 is 0 +run/0: address to copy is 1032 run/0: its type is 4 -mem/0: location 1031 is 97 +mem/0: location 1032 is 97 run/0: product 0 is 97 -mem/0: storing 97 in location 1044 +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: ingredient 0 is a2 -mem/0: location 1043 is 97 -run/0: ingredient 1 is b2 mem/0: location 1044 is 97 +run/0: ingredient 1 is b2 +mem/0: location 1045 is 97 run/0: product 0 is 1 -mem/0: storing 1 in location 1045 +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: ["": ]} -mem/0: location 1045 is 1 +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: ingredient 0 is i -mem/0: location 1041 is 0 +mem/0: location 1042 is 0 run/0: ingredient 1 is 1 run/0: product 0 is 1 -mem/0: storing 1 in location 1041 +mem/0: storing 1 in location 1042 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -136,59 +136,59 @@ 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: ingredient 0 is i -mem/0: location 1041 is 1 +mem/0: location 1042 is 1 run/0: ingredient 1 is a-len -mem/0: location 1037 is 3 +mem/0: location 1038 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1042 +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: ["": ]} -mem/0: location 1042 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1036 is 1030 +mem/0: location 1037 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1041 is 1 -run/0: address to copy is 1032 +mem/0: location 1042 is 1 +run/0: address to copy is 1033 run/0: its type is 4 -mem/0: location 1032 is 98 +mem/0: location 1033 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1043 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1038 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1041 is 1 -run/0: address to copy is 1032 +mem/0: location 1042 is 1 +run/0: address to copy is 1033 run/0: its type is 4 -mem/0: location 1032 is 98 +mem/0: location 1033 is 98 run/0: product 0 is 98 -mem/0: storing 98 in location 1044 +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: ingredient 0 is a2 -mem/0: location 1043 is 98 -run/0: ingredient 1 is b2 mem/0: location 1044 is 98 +run/0: ingredient 1 is b2 +mem/0: location 1045 is 98 run/0: product 0 is 1 -mem/0: storing 1 in location 1045 +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: ["": ]} -mem/0: location 1045 is 1 +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: ingredient 0 is i -mem/0: location 1041 is 1 +mem/0: location 1042 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 2 -mem/0: storing 2 in location 1041 +mem/0: storing 2 in location 1042 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -196,59 +196,59 @@ 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: ingredient 0 is i -mem/0: location 1041 is 2 +mem/0: location 1042 is 2 run/0: ingredient 1 is a-len -mem/0: location 1037 is 3 +mem/0: location 1038 is 3 run/0: product 0 is 0 -mem/0: storing 0 in location 1042 +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: ["": ]} -mem/0: location 1042 is 0 +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: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1036 is 1030 +mem/0: location 1037 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1041 is 2 -run/0: address to copy is 1033 +mem/0: location 1042 is 2 +run/0: address to copy is 1034 run/0: its type is 4 -mem/0: location 1033 is 99 +mem/0: location 1034 is 99 run/0: product 0 is 99 -mem/0: storing 99 in location 1043 +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: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1038 is 1030 +mem/0: location 1039 is 1031 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1041 is 2 -run/0: address to copy is 1033 +mem/0: location 1042 is 2 +run/0: address to copy is 1034 run/0: its type is 4 -mem/0: location 1033 is 99 +mem/0: location 1034 is 99 run/0: product 0 is 99 -mem/0: storing 99 in location 1044 +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: ingredient 0 is a2 -mem/0: location 1043 is 99 -run/0: ingredient 1 is b2 mem/0: location 1044 is 99 +run/0: ingredient 1 is b2 +mem/0: location 1045 is 99 run/0: product 0 is 1 -mem/0: storing 1 in location 1045 +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: ["": ]} -mem/0: location 1045 is 1 +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: ingredient 0 is i -mem/0: location 1041 is 2 +mem/0: location 1042 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 3 -mem/0: storing 3 in location 1041 +mem/0: storing 3 in location 1042 run/0: instruction string-equal/24 run/0: loop {name: "", value: -11, type: , properties: ["": ]} run/0: ingredient 0 is -11 @@ -256,14 +256,14 @@ 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: ingredient 0 is i -mem/0: location 1041 is 3 +mem/0: location 1042 is 3 run/0: ingredient 1 is a-len -mem/0: location 1037 is 3 +mem/0: location 1038 is 3 run/0: product 0 is 1 -mem/0: storing 1 in location 1042 +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: ["": ]} -mem/0: location 1042 is 1 +mem/0: location 1043 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 25 diff --git a/cpp/.traces/string-equal-with-empty b/cpp/.traces/string-equal-with-empty index b3e87b15..ff241a4c 100644 --- a/cpp/.traces/string-equal-with-empty +++ b/cpp/.traces/string-equal-with-empty @@ -30,48 +30,48 @@ mem/0: array size is 30 mem/0: new alloc: 1000 run/0: instruction test-string-equal-with-empty/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"]} -mem/0: storing 1030 in location 1002 +mem/0: storing 1031 in location 1002 run/0: instruction test-string-equal-with-empty/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"]} -mem/0: storing 1031 in location 1003 +mem/0: storing 1032 in location 1003 run/0: instruction test-string-equal-with-empty/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"]} -mem/0: location 1002 is 1030 -mem/0: location 1003 is 1031 +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"]} mem/0: array size is 30 -mem/0: new alloc: 1036 +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: product 0 is 1030 -mem/0: storing 1030 in location 1038 +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": ]} -mem/0: location 1038 is 1030 -mem/0: storing 0 in location 1039 +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: product 0 is 1031 -mem/0: storing 1031 in location 1040 +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": ]} -mem/0: location 1040 is 1031 -mem/0: storing 4 in location 1041 +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"]} 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: ingredient 0 is a-len -mem/0: location 1039 is 0 +mem/0: location 1040 is 0 run/0: ingredient 1 is b-len -mem/0: location 1041 is 4 +mem/0: location 1042 is 4 run/0: product 0 is 0 -mem/0: storing 0 in location 1042 +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: ["": ]} -mem/0: location 1042 is 0 +mem/0: location 1043 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/9 diff --git a/cpp/011load.cc b/cpp/011load.cc index 9afe370e..df64cae7 100644 --- a/cpp/011load.cc +++ b/cpp/011load.cc @@ -91,7 +91,7 @@ bool next_instruction(istream& in, instruction* curr) { return false; // end of recipe } - if (words.size() == 1 && !isalnum(words[0][0])) { + if (words.size() == 1 && !isalnum(words[0][0]) && words[0][0] != '$') { curr->is_label = true; curr->label = words[0]; trace("parse") << "label: " << curr->label; @@ -256,6 +256,12 @@ recipe main [ ] +parse: label: +foo +:(scenario parse_dollar_as_recipe_name) +recipe main [ + $foo +] ++parse: instruction: $foo + :(scenario parse_multiple_properties) recipe main [ 1:integer <- copy 23:literal/foo:bar:baz diff --git a/cpp/027debug.cc b/cpp/027debug.cc index d81071e9..90ef9e49 100644 --- a/cpp/027debug.cc +++ b/cpp/027debug.cc @@ -19,3 +19,24 @@ case _PRINT: { } break; } + +:(before "End Primitive Recipe Declarations") +_START_TRACING, +:(before "End Primitive Recipe Numbers") +Recipe_number["$start-tracing"] = _START_TRACING; +:(before "End Primitive Recipe Implementations") +case _START_TRACING: { + Trace_stream->dump_layer = "all"; +//? cout << Trace_stream << ": " << Trace_stream->dump_layer << '\n'; //? 1 + break; +} + +:(before "End Primitive Recipe Declarations") +_STOP_TRACING, +:(before "End Primitive Recipe Numbers") +Recipe_number["$stop-tracing"] = _STOP_TRACING; +:(before "End Primitive Recipe Implementations") +case _STOP_TRACING: { + Trace_stream->dump_layer = ""; + break; +} diff --git a/cpp/042new.cc b/cpp/042new.cc index e98800a6..4639beb5 100644 --- a/cpp/042new.cc +++ b/cpp/042new.cc @@ -60,7 +60,7 @@ case NEW: { vector<int> capacity = read_memory(current_instruction().ingredients[1]); array_length = capacity[0]; trace("mem") << "array size is " << array_length; - size = array_length*size_of(type); + size = array_length*size_of(type) + /*space for length*/1; } else { // scalar @@ -104,7 +104,7 @@ recipe main [ +mem: array size is 5 +run: instruction main/1 +run: instruction main/2 -+mem: storing 5 in location 3 ++mem: storing 6 in location 3 //: Make sure that each routine gets a different alloc to start. :(scenario new_concurrent) diff --git a/cpp/043space.cc b/cpp/043space.cc index 5d9c8555..e94cf023 100644 --- a/cpp/043space.cc +++ b/cpp/043space.cc @@ -99,7 +99,7 @@ int space_base(const reagent& x) { int address(int offset, int base) { if (base == 0) return offset; // raw -//? cout << base << '\n'; //? 1 +//? cout << base << '\n'; //? 2 if (offset >= Memory[base]) { // todo: test raise << "location " << offset << " is out of bounds " << Memory[base] << '\n'; diff --git a/cpp/071print.mu b/cpp/071print.mu index 32c4305c..bd7f2411 100644 --- a/cpp/071print.mu +++ b/cpp/071print.mu @@ -40,8 +40,8 @@ recipe clear-screen [ { done?:boolean <- greater-or-equal i:integer, max:integer break-if done?:boolean - x:address:character <- index-address buf:address:array:character/deref, i:integer - x:address:character/deref <- copy [ ] + c:address:character <- index-address buf:address:array:character/deref, i:integer + c:address:character/deref <- copy [ ] i:integer <- add i:integer, 1:literal loop } @@ -81,6 +81,21 @@ recipe print-character [ reply x:address:screen/same-as-ingredient:0 ] +scenario print-character-at-top-left [ + run [ +#? $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' + 2:address:array:character <- get 1:address:screen/deref, data:offset + 3:array:character <- copy 2:address:array:character/deref + ] + memory should contain [ + 3 <- 6 # width*height + 4 <- 97 # 'a' + 5 <- 0 + ] +] + recipe clear-line [ default-space:address:array:location <- new location:type, 30:literal x:address:screen <- next-ingredient |