c{0: 0 (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) -- nil c{0: 1 (((chan channel-address)) <- ((init-channel)) ((3 literal))) -- nil c{0: 2 (((fork)) ((producer fn)) ((nil literal) (globals)) ((nil literal) (limit)) ((chan channel-address))) -- nil c{0: 3 (((1 tagged-value) (raw)) <- ((read)) ((chan channel-address))) -- nil c{1: 0 ✓ (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) c{1: 1 ✓ (((chan channel-address)) <- ((init-channel)) ((3 literal))) c{1: 2 ✓ (((fork)) ((producer fn)) ((nil literal) (globals)) ((nil literal) (limit)) ((chan channel-address))) c{1: 3 ✓ (((1 tagged-value) (raw)) <- ((read)) ((chan channel-address))) c{0: 0 (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) -- nil c{0: 1 (((n integer)) <- ((copy)) ((24 literal))) -- nil c{0: 2 (((ochan channel-address)) <- ((next-input))) -- nil c{0: 3 (((x tagged-value)) <- ((save-type)) ((n integer))) -- nil c{0: 4 (((ochan channel-address) (deref)) <- ((write)) ((ochan channel-address)) ((x tagged-value))) -- nil c{1: 0 ✓ (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) c{1: 1 ✓ (((n integer)) <- ((copy)) ((24 literal))) c{1: 2 ✓ (((ochan channel-address)) <- ((next-input))) c{1: 3 ✓ (((x tagged-value)) <- ((save-type)) ((n integer))) c{1: 4 ✓ (((ochan channel-address) (deref)) <- ((write)) ((ochan channel-address)) ((x tagged-value))) cn0: convert-names in consumer cn0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) nil nil cn0: checking arg ((space literal)) cn0: checking arg ((30 literal)) cn0: checking oarg ((default-space space-address)) maybe-add: ((default-space space-address)) cn0: (((chan channel-address)) <- ((init-channel)) ((3 literal))) nil nil cn0: checking arg ((3 literal)) cn0: checking oarg ((chan channel-address)) maybe-add: ((chan channel-address)) cn0: location for oarg ((chan channel-address)): 1 cn0: (((fork)) ((producer fn)) ((nil literal) (globals)) ((nil literal) (limit)) ((chan channel-address))) ((chan 1)) nil cn0: checking arg ((producer fn)) cn0: checking arg ((nil literal) (globals)) cn0: checking arg ((nil literal) (limit)) cn0: checking arg ((chan channel-address)) maybe-add: ((chan channel-address)) cn0: (((1 tagged-value) (raw)) <- ((read)) ((chan channel-address))) ((chan 1)) nil cn0: checking arg ((chan channel-address)) maybe-add: ((chan channel-address)) cn0: checking oarg ((1 tagged-value) (raw)) maybe-add: ((1 tagged-value) (raw)) cn0: convert-names in producer cn0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) nil nil cn0: checking arg ((space literal)) cn0: checking arg ((30 literal)) cn0: checking oarg ((default-space space-address)) maybe-add: ((default-space space-address)) cn0: (((n integer)) <- ((copy)) ((24 literal))) nil nil cn0: checking arg ((24 literal)) cn0: checking oarg ((n integer)) maybe-add: ((n integer)) cn0: location for oarg ((n integer)): 1 cn0: (((ochan channel-address)) <- ((next-input))) ((n 1)) nil cn0: checking oarg ((ochan channel-address)) maybe-add: ((ochan channel-address)) cn0: location for oarg ((ochan channel-address)): 2 cn0: (((x tagged-value)) <- ((save-type)) ((n integer))) ((n 1) (ochan 2)) nil cn0: checking arg ((n integer)) maybe-add: ((n integer)) cn0: checking oarg ((x tagged-value)) maybe-add: ((x tagged-value)) cn0: location for oarg ((x tagged-value)): 3 cn0: (((ochan channel-address) (deref)) <- ((write)) ((ochan channel-address)) ((x tagged-value))) ((n 1) (ochan 2) (x 3)) nil cn0: checking arg ((ochan channel-address)) maybe-add: ((ochan channel-address)) cn0: checking arg ((x tagged-value)) maybe-add: ((x tagged-value)) cn0: checking oarg ((ochan channel-address) (deref)) maybe-add: ((ochan channel-address) (deref)) cn1: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) cn1: (((1 channel-address)) <- ((init-channel)) ((3 literal))) cn1: (((fork)) ((producer fn)) ((nil literal) (globals)) ((nil literal) (limit)) ((1 channel-address))) cn1: (((1 tagged-value) (raw)) <- ((read)) ((1 channel-address))) cn1: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) cn1: (((1 integer)) <- ((copy)) ((24 literal))) cn1: (((2 channel-address)) <- ((next-input))) cn1: (((3 tagged-value)) <- ((save-type)) ((1 integer))) cn1: (((2 channel-address) (deref)) <- ((write)) ((2 channel-address)) ((3 tagged-value))) schedule: consumer run: consumer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: consumer 0: 1000 => ((default-space space-address)) run: consumer 1: (((1 channel-address)) <- ((init-channel)) ((3 literal))) run: init-channel/consumer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: init-channel/consumer 0: 1031 => ((default-space space-address)) run: init-channel/consumer 1: (((1 channel-address)) <- ((new)) ((channel literal))) run: init-channel/consumer 1: 1062 => ((1 channel-address)) mem: ((1 channel-address)): 1033 <= 1062 run: init-channel/consumer 2: (((2 integer-address)) <- ((get-address)) ((1 channel-address) (deref)) ((0 offset))) run: init-channel/consumer 2: 1062 => ((2 integer-address)) mem: ((2 integer-address)): 1034 <= 1062 run: init-channel/consumer 3: (((2 integer-address) (deref)) <- ((copy)) ((0 literal))) run: init-channel/consumer 3: 0 => ((2 integer-address) (deref)) mem: ((2 integer-address) (deref)): 1062 <= 0 run: init-channel/consumer 4: (((3 integer-address)) <- ((get-address)) ((1 channel-address) (deref)) ((1 offset))) run: init-channel/consumer 4: 1063 => ((3 integer-address)) mem: ((3 integer-address)): 1035 <= 1063 run: init-channel/consumer 5: (((3 integer-address) (deref)) <- ((copy)) ((0 literal))) run: init-channel/consumer 5: 0 => ((3 integer-address) (deref)) mem: ((3 integer-address) (deref)): 1063 <= 0 run: init-channel/consumer 6: (((4 integer)) <- ((next-input))) arg: nil 0 (3) run: init-channel/consumer 6: 3 => ((4 integer)) mem: ((4 integer)): 1036 <= 3 run: init-channel/consumer 7: (((4 integer)) <- ((add)) ((4 integer)) ((1 literal))) mem: ((4 integer)) => 3 run: init-channel/consumer 7: 4 => ((4 integer)) mem: ((4 integer)): 1036 <= 4 run: init-channel/consumer 8: (((5 tagged-value-array-address-address)) <- ((get-address)) ((1 channel-address) (deref)) ((2 offset))) run: init-channel/consumer 8: 1064 => ((5 tagged-value-array-address-address)) mem: ((5 tagged-value-array-address-address)): 1037 <= 1064 run: init-channel/consumer 9: (((5 tagged-value-array-address-address) (deref)) <- ((new)) ((tagged-value-array literal)) ((4 integer))) mem: ((4 integer)) => 4 run: init-channel/consumer 9: 1065 => ((5 tagged-value-array-address-address) (deref)) mem: ((5 tagged-value-array-address-address) (deref)): 1064 <= 1065 run: init-channel/consumer 10: (((reply)) ((1 channel-address))) mem: ((1 channel-address)) => 1062 run: consumer 1: 1062 => ((1 channel-address)) mem: ((1 channel-address)): 1002 <= 1062 run: consumer 2: (((fork)) ((producer fn)) ((nil literal) (globals)) ((nil literal) (limit)) ((1 channel-address))) mem: ((1 channel-address)) => 1062 run: consumer 3: (((1 tagged-value) (raw)) <- ((read)) ((1 channel-address))) mem: ((1 channel-address)) => 1062 run: read/consumer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: read/consumer 0: 1074 => ((default-space space-address)) run: read/consumer 1: (((1 channel-address)) <- ((next-input))) arg: nil 0 (1062) run: read/consumer 1: 1062 => ((1 channel-address)) mem: ((1 channel-address)): 1076 <= 1062 run: read/consumer 2: (((2 boolean)) <- ((empty?)) ((1 channel-address) (deref))) mem: ((1 channel-address) (deref)) => #(tagged record (0 0 1065 . nil)) run: empty?/read/consumer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: empty?/read/consumer 0: 1105 => ((default-space space-address)) run: empty?/read/consumer 1: (((1 channel)) <- ((next-input))) arg: nil 0 (#(tagged record (0 0 1065 . nil))) run: empty?/read/consumer 1: #(tagged record (0 0 1065 . nil)) => ((1 channel)) mem: ((1 channel)): 1107 <= 0 mem: ((1 channel)): 1108 <= 0 mem: ((1 channel)): 1109 <= 1065 run: empty?/read/consumer 2: (((4 integer)) <- ((get)) ((1 channel)) ((0 offset))) mem: ((1107 integer) (raw)) => 0 run: empty?/read/consumer 2: 0 => ((4 integer)) mem: ((4 integer)): 1110 <= 0 run: empty?/read/consumer 3: (((5 integer)) <- ((get)) ((1 channel)) ((1 offset))) mem: ((1108 integer) (raw)) => 0 run: empty?/read/consumer 3: 0 => ((5 integer)) mem: ((5 integer)): 1111 <= 0 run: empty?/read/consumer 4: (((6 boolean)) <- ((equal)) ((4 integer)) ((5 integer))) mem: ((4 integer)) => 0 mem: ((5 integer)) => 0 run: empty?/read/consumer 4: t => ((6 boolean)) mem: ((6 boolean)): 1112 <= t run: empty?/read/consumer 5: (((reply)) ((6 boolean))) mem: ((6 boolean)) => t run: read/consumer 2: t => ((2 boolean)) mem: ((2 boolean)): 1077 <= t run: read/consumer 3: (((jump-unless)) ((2 boolean)) ((2 offset))) mem: ((2 boolean)) => t run: read/consumer 4: (((3 integer-address)) <- ((get-address)) ((1 channel-address) (deref)) ((1 offset))) run: read/consumer 4: 1063 => ((3 integer-address)) mem: ((3 integer-address)): 1078 <= 1063 run: read/consumer 5: (((sleep)) ((until-location-changes literal)) ((3 integer-address) (deref))) mem: ((3 integer-address) (deref)) => 0 schedule: pushing read/consumer to sleep queue schedule: producer run: producer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: producer 0: 101000 => ((default-space space-address)) run: producer 1: (((1 integer)) <- ((copy)) ((24 literal))) run: producer 1: 24 => ((1 integer)) mem: ((1 integer)): 101002 <= 24 run: producer 2: (((2 channel-address)) <- ((next-input))) arg: nil 0 (1062) run: producer 2: 1062 => ((2 channel-address)) mem: ((2 channel-address)): 101003 <= 1062 run: producer 3: (((3 tagged-value)) <- ((save-type)) ((1 integer))) mem: ((1 integer)) => 24 run: producer 3: #(tagged record (integer 24)) => ((3 tagged-value)) mem: ((3 tagged-value)): 101004 <= integer mem: ((3 tagged-value)): 101005 <= 24 run: producer 4: (((2 channel-address) (deref)) <- ((write)) ((2 channel-address)) ((3 tagged-value))) mem: ((2 channel-address)) => 1062 mem: ((3 tagged-value)) => #(tagged record (integer 24 . nil)) run: write/producer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: write/producer 0: 101031 => ((default-space space-address)) run: write/producer 1: (((1 channel-address)) <- ((next-input))) arg: nil 0 (1062 #(tagged record (integer 24 . nil))) run: write/producer 1: 1062 => ((1 channel-address)) mem: ((1 channel-address)): 101033 <= 1062 run: write/producer 2: (((2 tagged-value)) <- ((next-input))) arg: nil 1 (1062 #(tagged record (integer 24 . nil))) run: write/producer 2: #(tagged record (integer 24 . nil)) => ((2 tagged-value)) mem: ((2 tagged-value)): 101034 <= integer mem: ((2 tagged-value)): 101035 <= 24 run: write/producer 3: (((4 boolean)) <- ((full?)) ((1 channel-address) (deref))) mem: ((1 channel-address) (deref)) => #(tagged record (0 0 1065 . nil)) run: full?/write/producer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: full?/write/producer 0: 101062 => ((default-space space-address)) run: full?/write/producer 1: (((1 channel)) <- ((next-input))) arg: nil 0 (#(tagged record (0 0 1065 . nil))) run: full?/write/producer 1: #(tagged record (0 0 1065 . nil)) => ((1 channel)) mem: ((1 channel)): 101064 <= 0 mem: ((1 channel)): 101065 <= 0 mem: ((1 channel)): 101066 <= 1065 run: full?/write/producer 2: (((4 integer)) <- ((get)) ((1 channel)) ((1 offset))) mem: ((101065 integer) (raw)) => 0 run: full?/write/producer 2: 0 => ((4 integer)) mem: ((4 integer)): 101067 <= 0 run: full?/write/producer 3: (((4 integer)) <- ((add)) ((4 integer)) ((1 literal))) mem: ((4 integer)) => 0 run: full?/write/producer 3: 1 => ((4 integer)) mem: ((4 integer)): 101067 <= 1 run: full?/write/producer 4: (((5 integer)) <- ((capacity)) ((1 channel))) mem: ((1 channel)) => #(tagged record (0 0 1065 . nil)) run: capacity/full?/write/producer 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal))) run: capacity/full?/write/producer 0: 101093 => ((default-space space-address)) run: capacity/full?/write/producer 1: (((1 channel)) <- ((next-input))) arg: nil 0 (#(tagged record (0 0 1065 . nil))) run: capacity/full?/write/producer 1: #(tagged record (0 0 1065 . nil)) => ((1 channel)) mem: ((1 channel)): 101095 <= 0 mem: ((1 channel)): 101096 <= 0 mem: ((1 channel)): 101097 <= 1065 run: capacity/full?/write/producer 2: (((4 tagged-value-array-address)) <- ((get)) ((1 channel)) ((2 offset))) mem: ((101097 tagged-value-array-address) (raw)) => 1065 run: capacity/full?/write/producer 2: 1065 => ((4 tagged-value-array-address)) mem: ((4 tagged-value-array-address)): 101098 <= 1065 run: capacity/full?/write/producer 3: (((5 integer)) <- ((length)) ((4 tagged-value-array-address) (deref))) array-len: ((4 tagged-value-array-address) (deref)) mem: ((1065 integer) (raw)) => 4 run: capacity/full?/write/producer 3: 4 => ((5 integer)) mem: ((5 integer)): 101099 <= 4 run: capacity/full?/write/producer 4: (((reply)) ((5 integer))) mem: ((5 integer)) => 4 run: full?/write/producer 4: 4 => ((5 integer)) mem: ((5 integer)): 101068 <= 4 run: full?/write/producer 5: (((6 boolean)) <- ((less-than)) ((4 integer)) ((5 integer))) mem: ((4 integer)) => 1 mem: ((5 integer)) => 4 run: full?/write/producer 5: t => ((6 boolean)) mem: ((6 boolean)): 101069 <= t run: full?/write/producer 6: (((jump-if)) ((6 boolean)) ((1 offset))) mem: ((6 boolean)) => t run: full?/write/producer 8: (((7 integer)) <- ((get)) ((1 channel)) ((0 offset))) mem: ((101064 integer) (raw)) => 0 run: full?/write/producer 8: 0 => ((7 integer)) mem: ((7 integer)): 101070 <= 0 run: full?/write/producer 9: (((8 boolean)) <- ((equal)) ((7 integer)) ((4 integer))) mem: ((7 integer)) => 0 mem: ((4 integer)) => 1 run: full?/write/producer 9: nil => ((8 boolean)) mem: ((8 boolean)): 101071 <= nil run: full?/write/producer 10: (((reply)) ((8 boolean))) mem: ((8 boolean)) => nil run: write/producer 3: nil => ((4 boolean)) mem: ((4 boolean)): 101036 <= nil run: write/producer 4: (((jump-unless)) ((4 boolean)) ((2 offset))) mem: ((4 boolean)) => nil run: write/producer 7: (((6 tagged-value-array-address)) <- ((get)) ((1 channel-address) (deref)) ((2 offset))) mem: ((1064 tagged-value-array-address) (raw)) => 1065 run: write/producer 7: 1065 => ((6 tagged-value-array-address)) mem: ((6 tagged-value-array-address)): 101038 <= 1065 run: write/producer 8: (((7 integer-address)) <- ((get-address)) ((1 channel-address) (deref)) ((1 offset))) run: write/producer 8: 1063 => ((7 integer-address)) mem: ((7 integer-address)): 101039 <= 1063 run: write/producer 9: (((8 tagged-value-address)) <- ((index-address)) ((6 tagged-value-array-address) (deref)) ((7 integer-address) (deref))) mem: ((7 integer-address) (deref)) => 0 array-len: ((1065 tagged-value-array) (raw)) mem: ((1065 integer) (raw)) => 4 run: write/producer 9: 1066 => ((8 tagged-value-address)) mem: ((8 tagged-value-address)): 101040 <= 1066 run: write/producer 10: (((8 tagged-value-address) (deref)) <- ((copy)) ((2 tagged-value))) mem: ((2 tagged-value)) => #(tagged record (integer 24 . nil)) run: write/producer 10: #(tagged record (integer 24 . nil)) => ((8 tagged-value-address) (deref)) mem: ((8 tagged-value-address) (deref)): 1066 <= integer mem: ((8 tagged-value-address) (deref)): 1067 <= 24 run: write/producer 11: (((7 integer-address) (deref)) <- ((add)) ((7 integer-address) (deref)) ((1 literal))) mem: ((7 integer-address) (deref)) => 0 run: write/producer 11: 1 => ((7 integer-address) (deref)) mem: ((7 integer-address) (deref)): 1063 <= 1 run: write/producer 12: (((9 integer)) <- ((length)) ((6 tagged-value-array-address) (deref))) array-len: ((6 tagged-value-array-address) (deref)) mem: ((1065 integer) (raw)) => 4 run: write/producer 12: 4 => ((9 integer)) mem: ((9 integer)): 101041 <= 4 run: write/producer 13: (((10 boolean)) <- ((less-than)) ((7 integer-address) (deref)) ((9 integer))) mem: ((7 integer-address) (deref)) => 1 mem: ((9 integer)) => 4 run: write/producer 13: t => ((10 boolean)) mem: ((10 boolean)): 101042 <= t run: write/producer 14: (((jump-if)) ((10 boolean)) ((1 offset))) mem: ((10 boolean)) => t run: write/producer 16: (((reply)) ((1 channel-address) (deref) (same-as-arg 0))) mem: ((1 channel-address) (deref) (same-as-arg 0)) => #(tagged record (0 1 1065 . nil)) run: producer 4: #(tagged record (0 1 1065 . nil)) => ((2 channel-address) (deref)) mem: ((2 channel-address) (deref)): 1062 <= 0 mem: ((2 channel-address) (deref)): 1063 <= 1 mem: ((2 channel-address) (deref)): 1064 <= 1065 schedule: done with routine nil schedule: waking up read/consumer schedule: read/consumer run: read/consumer 6: (((4 integer-address)) <- ((get-address)) ((1 channel-address) (deref)) ((0 offset))) run: read/consumer 6: 1062 => ((4 integer-address)) mem: ((4 integer-address)): 1079 <= 1062 run: read/consumer 7: (((5 tagged-value-array-address)) <- ((get)) ((1 channel-address) (deref)) ((2 offset))) mem: ((1064 tagged-value-array-address) (raw)) => 1065 run: read/consumer 7: 1065 => ((5 tagged-value-array-address)) mem: ((5 tagged-value-array-address)): 1080 <= 1065 run: read/consumer 8: (((6 tagged-value)) <- ((index)) ((5 tagged-value-array-address) (deref)) ((4 integer-address) (deref))) mem: ((4 integer-address) (deref)) => 0 array-len: ((1065 tagged-value-array) (raw)) mem: ((1065 integer) (raw)) => 4 mem: ((1066 tagged-value) (raw)) => #(tagged record (integer 24 . nil)) run: read/consumer 8: #(tagged record (integer 24 . nil)) => ((6 tagged-value)) mem: ((6 tagged-value)): 1081 <= integer mem: ((6 tagged-value)): 1082 <= 24 run: read/consumer 9: (((4 integer-address) (deref)) <- ((add)) ((4 integer-address) (deref)) ((1 literal))) mem: ((4 integer-address) (deref)) => 0 run: read/consumer 9: 1 => ((4 integer-address) (deref)) mem: ((4 integer-address) (deref)): 1062 <= 1 run: read/consumer 10: (((8 integer)) <- ((length)) ((5 tagged-value-array-address) (deref))) array-len: ((5 tagged-value-array-address) (deref)) mem: ((1065 integer) (raw)) => 4 run: read/consumer 10: 4 => ((8 integer)) mem: ((8 integer)): 1083 <= 4 run: read/consumer 11: (((9 boolean)) <- ((less-than)) ((4 integer-address) (deref)) ((8 integer))) mem: ((4 integer-address) (deref)) => 1 mem: ((8 integer)) => 4 run: read/consumer 11: t => ((9 boolean)) mem: ((9 boolean)): 1084 <= t run: read/consumer 12: (((jump-if)) ((9 boolean)) ((1 offset))) mem: ((9 boolean)) => t run: read/consumer 14: (((reply)) ((6 tagged-value)) ((1 channel-address) (deref) (same-as-arg 0))) mem: ((6 tagged-value)) => #(tagged record (integer 24 . nil)) mem: ((1 channel-address) (deref) (same-as-arg 0)) => #(tagged record (1 1 1065 . nil)) run: consumer 3: #(tagged record (integer 24 . nil)) => ((1 tagged-value) (raw)) mem: ((1 tagged-value) (raw)): 1 <= integer mem: ((1 tagged-value) (raw)): 2 <= 24 schedule: done with routine nil