about summary refs log tree commit diff stats
path: root/html/apps/calls.subx.html
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-12-09 01:26:58 -0800
committerKartik Agaram <vc@akkartik.com>2019-12-09 01:26:58 -0800
commit8aeb85f04ee68b960a6d326aca1a17dec2f6d019 (patch)
tree26f861361c28ca77fb8298b21a905dc6e06c91ef /html/apps/calls.subx.html
parent2249e605c19f0dbe0c34c1c4f635b802f56dc535 (diff)
downloadmu-8aeb85f04ee68b960a6d326aca1a17dec2f6d019.tar.gz
5806
Diffstat (limited to 'html/apps/calls.subx.html')
-rw-r--r--html/apps/calls.subx.html194
1 files changed, 97 insertions, 97 deletions
diff --git a/html/apps/calls.subx.html b/html/apps/calls.subx.html
index d29b8385..f6e99787 100644
--- a/html/apps/calls.subx.html
+++ b/html/apps/calls.subx.html
@@ -109,11 +109,11 @@ if ('onhashchange' in window) {
 <span id="L48" class="LineNr">  48 </span>    68/push <span class="Constant">&quot;test&quot;</span>/imm32
 <span id="L49" class="LineNr">  49 </span>    ff 6/subop/push *(ebp+8)
 <span id="L50" class="LineNr">  50 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L51" class="LineNr">  51 </span>    e8/call <a href='../052kernel-string-equal.subx.html#L31'>kernel-string-equal?</a>/disp32
+<span id="L51" class="LineNr">  51 </span>    e8/call <a href='../052kernel-string-equal.subx.html#L33'>kernel-string-equal?</a>/disp32
 <span id="L52" class="LineNr">  52 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L53" class="LineNr">  53 </span>    81 0/subop/add %esp 8/imm32
-<span id="L54" class="LineNr">  54 </span>    <span class="subxS1Comment"># . if (eax == 0) goto run-main</span>
-<span id="L55" class="LineNr">  55 </span>    3d/compare-eax-and 0/imm32
+<span id="L54" class="LineNr">  54 </span>    <span class="subxS1Comment"># . if (eax == false) goto run-main</span>
+<span id="L55" class="LineNr">  55 </span>    3d/compare-eax-and 0/imm32/false
 <span id="L56" class="LineNr">  56 </span>    74/jump-if-equal $subx-calls-main:interactive/disp8
 <span id="L57" class="LineNr">  57 </span>    <span class="subxComment"># run-tests()</span>
 <span id="L58" class="LineNr">  58 </span>    e8/call run-tests/disp32
@@ -138,8 +138,8 @@ if ('onhashchange' in window) {
 <span id="L77" class="LineNr">  77 </span>
 <span id="L78" class="LineNr">  78 </span><span class="subxFunction">subx-calls</span>:  <span class="subxComment"># in : (address buffered-file), out : (address buffered-file)</span>
 <span id="L79" class="LineNr">  79 </span>    <span class="subxComment"># pseudocode:</span>
-<span id="L80" class="LineNr">  80 </span>    <span class="subxComment">#   var line : (stream byte 512)</span>
-<span id="L81" class="LineNr">  81 </span>    <span class="subxComment">#   var words : (stream slice 16)  # at most function name and 15 args</span>
+<span id="L80" class="LineNr">  80 </span>    <span class="subxComment">#   var line : (ref stream byte 512)</span>
+<span id="L81" class="LineNr">  81 </span>    <span class="subxComment">#   var words : (ref stream slice 16)  # at most function name and 15 args</span>
 <span id="L82" class="LineNr">  82 </span>    <span class="subxComment">#   while true</span>
 <span id="L83" class="LineNr">  83 </span>    <span class="subxComment">#     clear-stream(line)</span>
 <span id="L84" class="LineNr">  84 </span>    <span class="subxComment">#     read-line-buffered(in, line)</span>
@@ -166,13 +166,13 @@ if ('onhashchange' in window) {
 <span id="L105" class="LineNr"> 105 </span>    51/push-ecx
 <span id="L106" class="LineNr"> 106 </span>    52/push-edx
 <span id="L107" class="LineNr"> 107 </span>    56/push-esi
-<span id="L108" class="LineNr"> 108 </span>    <span class="subxComment"># var line/esi : (address stream byte) = stream(512)</span>
+<span id="L108" class="LineNr"> 108 </span>    <span class="subxComment"># var line/esi : (ref stream byte 512)</span>
 <span id="L109" class="LineNr"> 109 </span>    81 5/subop/subtract %esp 0x200/imm32
 <span id="L110" class="LineNr"> 110 </span>    68/push 0x200/imm32/length
 <span id="L111" class="LineNr"> 111 </span>    68/push 0/imm32/read
 <span id="L112" class="LineNr"> 112 </span>    68/push 0/imm32/write
 <span id="L113" class="LineNr"> 113 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L114" class="LineNr"> 114 </span>    <span class="subxComment"># var words/edx : (address stream slice) = stream(16, 8)</span>
+<span id="L114" class="LineNr"> 114 </span>    <span class="subxComment"># var words/edx : (ref stream slice 128)  # 16 rows * 8 bytes/row</span>
 <span id="L115" class="LineNr"> 115 </span>    81 5/subop/subtract %esp 0x80/imm32
 <span id="L116" class="LineNr"> 116 </span>    68/push 0x80/imm32/length
 <span id="L117" class="LineNr"> 117 </span>    68/push 0/imm32/read
@@ -294,7 +294,7 @@ if ('onhashchange' in window) {
 <span id="L233" class="LineNr"> 233 </span>
 <span id="L234" class="LineNr"> 234 </span><span class="subxFunction">parse-line</span>:  <span class="subxComment"># line : (address stream byte), words : (address stream slice)</span>
 <span id="L235" class="LineNr"> 235 </span>    <span class="subxComment"># pseudocode:</span>
-<span id="L236" class="LineNr"> 236 </span>    <span class="subxComment">#   var word-slice : (address slice)</span>
+<span id="L236" class="LineNr"> 236 </span>    <span class="subxComment">#   var word-slice : (ref slice)</span>
 <span id="L237" class="LineNr"> 237 </span>    <span class="subxComment">#   while true</span>
 <span id="L238" class="LineNr"> 238 </span>    <span class="subxComment">#     word-slice = next-word-string-or-expression-without-metadata(line)</span>
 <span id="L239" class="LineNr"> 239 </span>    <span class="subxComment">#     if slice-empty?(word-slice)</span>
@@ -307,7 +307,7 @@ if ('onhashchange' in window) {
 <span id="L246" class="LineNr"> 246 </span>    89/&lt;- %ebp 4/r32/esp
 <span id="L247" class="LineNr"> 247 </span>    <span class="subxS1Comment"># . save registers</span>
 <span id="L248" class="LineNr"> 248 </span>    51/push-ecx
-<span id="L249" class="LineNr"> 249 </span>    <span class="subxComment"># var word-slice/ecx : (address slice) = {0, 0}</span>
+<span id="L249" class="LineNr"> 249 </span>    <span class="subxComment"># var word-slice/ecx : (ref slice)</span>
 <span id="L250" class="LineNr"> 250 </span>    68/push 0/imm32/end
 <span id="L251" class="LineNr"> 251 </span>    68/push 0/imm32/start
 <span id="L252" class="LineNr"> 252 </span>    89/&lt;- %ecx 4/r32/esp
@@ -329,8 +329,8 @@ if ('onhashchange' in window) {
 <span id="L268" class="LineNr"> 268 </span>    e8/call <a href='../072slice.subx.html#L9'>slice-empty?</a>/disp32
 <span id="L269" class="LineNr"> 269 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L270" class="LineNr"> 270 </span>    81 0/subop/add %esp 4/imm32
-<span id="L271" class="LineNr"> 271 </span>    <span class="subxS1Comment"># . if (eax != 0) break</span>
-<span id="L272" class="LineNr"> 272 </span>    3d/compare-eax-and 0/imm32
+<span id="L271" class="LineNr"> 271 </span>    <span class="subxS1Comment"># . if (eax != false) break</span>
+<span id="L272" class="LineNr"> 272 </span>    3d/compare-eax-and 0/imm32/false
 <span id="L273" class="LineNr"> 273 </span>    0f 85/jump-if-not-equal $parse-line:end/disp32
 <span id="L274" class="Folded"> 274 </span><span class="Folded">+-- 40 lines: #?     # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span>
 <span id="L314" class="LineNr"> 314 </span><span class="Constant">$parse-line:write-word</span>:
@@ -403,9 +403,9 @@ if ('onhashchange' in window) {
 <span id="L381" class="LineNr"> 381 </span>    8b/-&gt; *esi 1/r32/ecx
 <span id="L382" class="LineNr"> 382 </span>    81 5/subop/subtract %ecx 8/imm32
 <span id="L383" class="LineNr"> 383 </span>    0f 8c/jump-if-lesser $emit-call:error1/disp32
-<span id="L384" class="LineNr"> 384 </span>    <span class="subxComment"># curr/ecx = &amp;words-&gt;data[words-&gt;write-8]</span>
+<span id="L384" class="LineNr"> 384 </span>    <span class="subxComment"># var curr/ecx : (address slice) = &amp;words-&gt;data[words-&gt;write-8]</span>
 <span id="L385" class="LineNr"> 385 </span>    8d/copy-address *(esi+ecx+0xc) 1/r32/ecx
-<span id="L386" class="LineNr"> 386 </span>    <span class="subxComment"># min/edx = words-&gt;data</span>
+<span id="L386" class="LineNr"> 386 </span>    <span class="subxComment"># var min/edx : (address byte) = words-&gt;data</span>
 <span id="L387" class="LineNr"> 387 </span>    8d/copy-address *(esi+0xc) 2/r32/edx
 <span id="L388" class="LineNr"> 388 </span>    <span class="subxH1Comment"># - emit pushes</span>
 <span id="L389" class="LineNr"> 389 </span><span class="Constant">$emit-call:push-loop</span>:
@@ -413,15 +413,15 @@ if ('onhashchange' in window) {
 <span id="L391" class="LineNr"> 391 </span>    39/compare %ecx 2/r32/edx
 <span id="L392" class="LineNr"> 392 </span>    0f 8e/jump-if-lesser-or-equal $emit-call:call-instruction/disp32
 <span id="L393" class="LineNr"> 393 </span>    <span class="subxComment"># if (*curr-&gt;start in '%' '*') goto push-rm32</span>
-<span id="L394" class="LineNr"> 394 </span>    <span class="subxS1Comment"># . eax = curr-&gt;start</span>
+<span id="L394" class="LineNr"> 394 </span>    <span class="subxS1Comment"># . var start/eax : (address byte) = curr-&gt;start</span>
 <span id="L395" class="LineNr"> 395 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L396" class="LineNr"> 396 </span>    <span class="subxS1Comment"># . eax = (byte)*eax</span>
+<span id="L396" class="LineNr"> 396 </span>    <span class="subxS1Comment"># . var c/eax : byte = *eax</span>
 <span id="L397" class="LineNr"> 397 </span>    8b/-&gt; *eax 0/r32/eax
 <span id="L398" class="LineNr"> 398 </span>    81 4/subop/and %eax 0xff/imm32
-<span id="L399" class="LineNr"> 399 </span>    <span class="subxS1Comment"># . if (eax == '%') goto push-rm32</span>
+<span id="L399" class="LineNr"> 399 </span>    <span class="subxS1Comment"># . if (c == '%') goto push-rm32</span>
 <span id="L400" class="LineNr"> 400 </span>    3d/compare-eax-and 0x25/imm32/percent
 <span id="L401" class="LineNr"> 401 </span>    74/jump-if-equal $emit-call:push-rm32/disp8
-<span id="L402" class="LineNr"> 402 </span>    <span class="subxS1Comment"># . if (eax == '*') goto push-rm32</span>
+<span id="L402" class="LineNr"> 402 </span>    <span class="subxS1Comment"># . if (c == '*') goto push-rm32</span>
 <span id="L403" class="LineNr"> 403 </span>    3d/compare-eax-and 0x2a/imm32/asterisk
 <span id="L404" class="LineNr"> 404 </span>    74/jump-if-equal $emit-call:push-rm32/disp8
 <span id="L405" class="LineNr"> 405 </span><span class="Constant">$emit-call:push-imm32</span>:
@@ -437,7 +437,7 @@ if ('onhashchange' in window) {
 <span id="L415" class="LineNr"> 415 </span>    51/push-ecx
 <span id="L416" class="LineNr"> 416 </span>    ff 6/subop/push *(ebp+8)
 <span id="L417" class="LineNr"> 417 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L418" class="LineNr"> 418 </span>    e8/call <a href='../072slice.subx.html#L878'>write-slice-buffered</a>/disp32
+<span id="L418" class="LineNr"> 418 </span>    e8/call <a href='../072slice.subx.html#L880'>write-slice-buffered</a>/disp32
 <span id="L419" class="LineNr"> 419 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L420" class="LineNr"> 420 </span>    81 0/subop/add %esp 8/imm32
 <span id="L421" class="LineNr"> 421 </span>    <span class="subxComment"># write-buffered(out, &quot;/imm32\n&quot;)</span>
@@ -463,7 +463,7 @@ if ('onhashchange' in window) {
 <span id="L441" class="LineNr"> 441 </span>    51/push-ecx
 <span id="L442" class="LineNr"> 442 </span>    ff 6/subop/push *(ebp+8)
 <span id="L443" class="LineNr"> 443 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L444" class="LineNr"> 444 </span>    e8/call <a href='../072slice.subx.html#L878'>write-slice-buffered</a>/disp32
+<span id="L444" class="LineNr"> 444 </span>    e8/call <a href='../072slice.subx.html#L880'>write-slice-buffered</a>/disp32
 <span id="L445" class="LineNr"> 445 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L446" class="LineNr"> 446 </span>    81 0/subop/add %esp 8/imm32
 <span id="L447" class="LineNr"> 447 </span>    <span class="subxComment"># write-buffered(out, &quot;\n&quot;)</span>
@@ -491,7 +491,7 @@ if ('onhashchange' in window) {
 <span id="L469" class="LineNr"> 469 </span>    51/push-ecx
 <span id="L470" class="LineNr"> 470 </span>    ff 6/subop/push *(ebp+8)
 <span id="L471" class="LineNr"> 471 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L472" class="LineNr"> 472 </span>    e8/call <a href='../072slice.subx.html#L878'>write-slice-buffered</a>/disp32
+<span id="L472" class="LineNr"> 472 </span>    e8/call <a href='../072slice.subx.html#L880'>write-slice-buffered</a>/disp32
 <span id="L473" class="LineNr"> 473 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L474" class="LineNr"> 474 </span>    81 0/subop/add %esp 8/imm32
 <span id="L475" class="LineNr"> 475 </span>    <span class="subxComment"># write-buffered(out, &quot;/disp32\n&quot;)</span>
@@ -517,7 +517,7 @@ if ('onhashchange' in window) {
 <span id="L495" class="LineNr"> 495 </span>    50/push-eax
 <span id="L496" class="LineNr"> 496 </span>    ff 6/subop/push *(ebp+8)
 <span id="L497" class="LineNr"> 497 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L498" class="LineNr"> 498 </span>    e8/call <a href='../066print-int.subx.html#L265'>print-int32-buffered</a>/disp32
+<span id="L498" class="LineNr"> 498 </span>    e8/call <a href='../066print-int.subx.html#L266'>print-int32-buffered</a>/disp32
 <span id="L499" class="LineNr"> 499 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L500" class="LineNr"> 500 </span>    81 0/subop/add %esp 8/imm32
 <span id="L501" class="LineNr"> 501 </span>    <span class="subxComment"># write-buffered(out, &quot;/imm32\n&quot;)</span>
@@ -568,14 +568,14 @@ if ('onhashchange' in window) {
 <span id="L546" class="LineNr"> 546 </span>    <span class="subxComment"># setup</span>
 <span id="L547" class="LineNr"> 547 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L548" class="LineNr"> 548 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L549" class="LineNr"> 549 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L549" class="LineNr"> 549 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L550" class="LineNr"> 550 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L551" class="LineNr"> 551 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L552" class="LineNr"> 552 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L553" class="LineNr"> 553 </span>    81 0/subop/add %esp 4/imm32
-<span id="L554" class="LineNr"> 554 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-buffered-file-&gt;buffer)</span>
+<span id="L554" class="LineNr"> 554 </span>    <span class="subxS1Comment"># . clear-stream($_test-input-buffered-file-&gt;buffer)</span>
 <span id="L555" class="LineNr"> 555 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L556" class="LineNr"> 556 </span>    68/push  <a href='../061read-byte.subx.html#L317'>_test-input-buffered-file-&gt;buffer</a>/imm32
+<span id="L556" class="LineNr"> 556 </span>    68/push  $_test-input-buffered-file-&gt;buffer/imm32
 <span id="L557" class="LineNr"> 557 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L558" class="LineNr"> 558 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L559" class="LineNr"> 559 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -587,9 +587,9 @@ if ('onhashchange' in window) {
 <span id="L565" class="LineNr"> 565 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L566" class="LineNr"> 566 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L567" class="LineNr"> 567 </span>    81 0/subop/add %esp 4/imm32
-<span id="L568" class="LineNr"> 568 </span>    <span class="subxS1Comment"># . clear-stream(_test-output-buffered-file-&gt;buffer)</span>
+<span id="L568" class="LineNr"> 568 </span>    <span class="subxS1Comment"># . clear-stream($_test-output-buffered-file-&gt;buffer)</span>
 <span id="L569" class="LineNr"> 569 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L570" class="LineNr"> 570 </span>    68/push  <a href='../064write-byte.subx.html#L331'>_test-output-buffered-file-&gt;buffer</a>/imm32
+<span id="L570" class="LineNr"> 570 </span>    68/push  $_test-output-buffered-file-&gt;buffer/imm32
 <span id="L571" class="LineNr"> 571 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L572" class="LineNr"> 572 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L573" class="LineNr"> 573 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -597,7 +597,7 @@ if ('onhashchange' in window) {
 <span id="L575" class="LineNr"> 575 </span>    <span class="subxS1Comment"># . write(_test-input-stream, &quot;== abcd 0x1\n&quot;)</span>
 <span id="L576" class="LineNr"> 576 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L577" class="LineNr"> 577 </span>    68/push <span class="Constant">&quot;== abcd 0x1\n&quot;</span>/imm32
-<span id="L578" class="LineNr"> 578 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L578" class="LineNr"> 578 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L579" class="LineNr"> 579 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L580" class="LineNr"> 580 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L581" class="LineNr"> 581 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -605,7 +605,7 @@ if ('onhashchange' in window) {
 <span id="L583" class="LineNr"> 583 </span>    <span class="subxComment"># subx-calls(_test-input-buffered-file, _test-output-buffered-file)</span>
 <span id="L584" class="LineNr"> 584 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L585" class="LineNr"> 585 </span>    68/push <a href='../064write-byte.subx.html#L328'>_test-output-buffered-file</a>/imm32
-<span id="L586" class="LineNr"> 586 </span>    68/push <a href='../061read-byte.subx.html#L314'>_test-input-buffered-file</a>/imm32
+<span id="L586" class="LineNr"> 586 </span>    68/push <a href='../061read-byte.subx.html#L313'>_test-input-buffered-file</a>/imm32
 <span id="L587" class="LineNr"> 587 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L588" class="LineNr"> 588 </span>    e8/call <a href='calls.subx.html#L78'>subx-calls</a>/disp32
 <span id="L589" class="LineNr"> 589 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -624,7 +624,7 @@ if ('onhashchange' in window) {
 <span id="L602" class="LineNr"> 602 </span>    68/push <span class="Constant">&quot;== abcd 0x1\n&quot;</span>/imm32
 <span id="L603" class="LineNr"> 603 </span>    68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32
 <span id="L604" class="LineNr"> 604 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L605" class="LineNr"> 605 </span>    e8/call <a href='../058stream-equal.subx.html#L193'>check-stream-equal</a>/disp32
+<span id="L605" class="LineNr"> 605 </span>    e8/call <a href='../058stream-equal.subx.html#L194'>check-stream-equal</a>/disp32
 <span id="L606" class="LineNr"> 606 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L607" class="LineNr"> 607 </span>    81 0/subop/add %esp 0xc/imm32
 <span id="L608" class="LineNr"> 608 </span>    <span class="subxS1Comment"># . epilogue</span>
@@ -639,14 +639,14 @@ if ('onhashchange' in window) {
 <span id="L617" class="LineNr"> 617 </span>    <span class="subxComment"># setup</span>
 <span id="L618" class="LineNr"> 618 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L619" class="LineNr"> 619 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L620" class="LineNr"> 620 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L620" class="LineNr"> 620 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L621" class="LineNr"> 621 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L622" class="LineNr"> 622 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L623" class="LineNr"> 623 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L624" class="LineNr"> 624 </span>    81 0/subop/add %esp 4/imm32
-<span id="L625" class="LineNr"> 625 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-buffered-file-&gt;buffer)</span>
+<span id="L625" class="LineNr"> 625 </span>    <span class="subxS1Comment"># . clear-stream($_test-input-buffered-file-&gt;buffer)</span>
 <span id="L626" class="LineNr"> 626 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L627" class="LineNr"> 627 </span>    68/push  <a href='../061read-byte.subx.html#L317'>_test-input-buffered-file-&gt;buffer</a>/imm32
+<span id="L627" class="LineNr"> 627 </span>    68/push  $_test-input-buffered-file-&gt;buffer/imm32
 <span id="L628" class="LineNr"> 628 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L629" class="LineNr"> 629 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L630" class="LineNr"> 630 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -658,9 +658,9 @@ if ('onhashchange' in window) {
 <span id="L636" class="LineNr"> 636 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L637" class="LineNr"> 637 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L638" class="LineNr"> 638 </span>    81 0/subop/add %esp 4/imm32
-<span id="L639" class="LineNr"> 639 </span>    <span class="subxS1Comment"># . clear-stream(_test-output-buffered-file-&gt;buffer)</span>
+<span id="L639" class="LineNr"> 639 </span>    <span class="subxS1Comment"># . clear-stream($_test-output-buffered-file-&gt;buffer)</span>
 <span id="L640" class="LineNr"> 640 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L641" class="LineNr"> 641 </span>    68/push  <a href='../064write-byte.subx.html#L331'>_test-output-buffered-file-&gt;buffer</a>/imm32
+<span id="L641" class="LineNr"> 641 </span>    68/push  $_test-output-buffered-file-&gt;buffer/imm32
 <span id="L642" class="LineNr"> 642 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L643" class="LineNr"> 643 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L644" class="LineNr"> 644 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -668,7 +668,7 @@ if ('onhashchange' in window) {
 <span id="L646" class="LineNr"> 646 </span>    <span class="subxS1Comment"># . write(_test-input-stream, &quot;(foo %eax)\n&quot;)</span>
 <span id="L647" class="LineNr"> 647 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L648" class="LineNr"> 648 </span>    68/push <span class="Constant">&quot;(foo %eax)\n&quot;</span>/imm32
-<span id="L649" class="LineNr"> 649 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L649" class="LineNr"> 649 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L650" class="LineNr"> 650 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L651" class="LineNr"> 651 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L652" class="LineNr"> 652 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -676,7 +676,7 @@ if ('onhashchange' in window) {
 <span id="L654" class="LineNr"> 654 </span>    <span class="subxComment"># subx-calls(_test-input-buffered-file, _test-output-buffered-file)</span>
 <span id="L655" class="LineNr"> 655 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L656" class="LineNr"> 656 </span>    68/push <a href='../064write-byte.subx.html#L328'>_test-output-buffered-file</a>/imm32
-<span id="L657" class="LineNr"> 657 </span>    68/push <a href='../061read-byte.subx.html#L314'>_test-input-buffered-file</a>/imm32
+<span id="L657" class="LineNr"> 657 </span>    68/push <a href='../061read-byte.subx.html#L313'>_test-input-buffered-file</a>/imm32
 <span id="L658" class="LineNr"> 658 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L659" class="LineNr"> 659 </span>    e8/call <a href='calls.subx.html#L78'>subx-calls</a>/disp32
 <span id="L660" class="LineNr"> 660 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -696,7 +696,7 @@ if ('onhashchange' in window) {
 <span id="L706" class="LineNr"> 706 </span>    68/push <span class="Constant">&quot;# . (foo %eax)&quot;</span>/imm32
 <span id="L707" class="LineNr"> 707 </span>    68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32
 <span id="L708" class="LineNr"> 708 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L709" class="LineNr"> 709 </span>    e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32
+<span id="L709" class="LineNr"> 709 </span>    e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32
 <span id="L710" class="LineNr"> 710 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L711" class="LineNr"> 711 </span>    81 0/subop/add %esp 0xc/imm32
 <span id="L712" class="LineNr"> 712 </span>    <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, &quot;ff 6/subop/push %eax&quot;, msg)</span>
@@ -705,7 +705,7 @@ if ('onhashchange' in window) {
 <span id="L715" class="LineNr"> 715 </span>    68/push <span class="Constant">&quot;ff 6/subop/push %eax&quot;</span>/imm32
 <span id="L716" class="LineNr"> 716 </span>    68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32
 <span id="L717" class="LineNr"> 717 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L718" class="LineNr"> 718 </span>    e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32
+<span id="L718" class="LineNr"> 718 </span>    e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32
 <span id="L719" class="LineNr"> 719 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L720" class="LineNr"> 720 </span>    81 0/subop/add %esp 0xc/imm32
 <span id="L721" class="LineNr"> 721 </span>    <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, &quot;e8/call foo/disp32&quot;, msg)</span>
@@ -714,7 +714,7 @@ if ('onhashchange' in window) {
 <span id="L724" class="LineNr"> 724 </span>    68/push <span class="Constant">&quot;e8/call foo/disp32&quot;</span>/imm32
 <span id="L725" class="LineNr"> 725 </span>    68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32
 <span id="L726" class="LineNr"> 726 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L727" class="LineNr"> 727 </span>    e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32
+<span id="L727" class="LineNr"> 727 </span>    e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32
 <span id="L728" class="LineNr"> 728 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L729" class="LineNr"> 729 </span>    81 0/subop/add %esp 0xc/imm32
 <span id="L730" class="LineNr"> 730 </span>    <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, &quot;81 0/subop/add %esp 4/imm32&quot;, msg)</span>
@@ -723,7 +723,7 @@ if ('onhashchange' in window) {
 <span id="L733" class="LineNr"> 733 </span>    68/push <span class="Constant">&quot;81 0/subop/add %esp 0x00000004/imm32&quot;</span>/imm32
 <span id="L734" class="LineNr"> 734 </span>    68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32
 <span id="L735" class="LineNr"> 735 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L736" class="LineNr"> 736 </span>    e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32
+<span id="L736" class="LineNr"> 736 </span>    e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32
 <span id="L737" class="LineNr"> 737 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L738" class="LineNr"> 738 </span>    81 0/subop/add %esp 0xc/imm32
 <span id="L739" class="LineNr"> 739 </span>    <span class="subxS1Comment"># . epilogue</span>
@@ -731,7 +731,7 @@ if ('onhashchange' in window) {
 <span id="L741" class="LineNr"> 741 </span>    5d/pop-to-ebp
 <span id="L742" class="LineNr"> 742 </span>    c3/return
 <span id="L743" class="LineNr"> 743 </span>
-<span id="L744" class="LineNr"> 744 </span><span class="subxFunction">next-word-string-or-expression-without-metadata</span>:  <span class="subxComment"># line : (address stream), out : (address slice)</span>
+<span id="L744" class="LineNr"> 744 </span><span class="subxFunction">next-word-string-or-expression-without-metadata</span>:  <span class="subxComment"># line : (address stream byte), out : (address slice)</span>
 <span id="L745" class="LineNr"> 745 </span>    <span class="subxComment"># pseudocode:</span>
 <span id="L746" class="LineNr"> 746 </span>    <span class="subxComment">#   skip-chars-matching(line, ' ')</span>
 <span id="L747" class="LineNr"> 747 </span>    <span class="subxComment">#   if line-&gt;read &gt;= line-&gt;write              # end of line</span>
@@ -820,7 +820,7 @@ if ('onhashchange' in window) {
 <span id="L830" class="LineNr"> 830 </span>    8d/copy-address *(esi+ecx+0xc) 0/r32/eax
 <span id="L831" class="LineNr"> 831 </span>    89/&lt;- *edi 0/r32/eax
 <span id="L832" class="LineNr"> 832 </span>    <span class="subxComment"># if (line-&gt;data[line-&gt;read] != '#') goto next check</span>
-<span id="L833" class="LineNr"> 833 </span>    <span class="subxS1Comment"># . eax = line-&gt;data[line-&gt;read]</span>
+<span id="L833" class="LineNr"> 833 </span>    <span class="subxS1Comment"># . var eax : byte = line-&gt;data[line-&gt;read]</span>
 <span id="L834" class="LineNr"> 834 </span>    31/xor %eax 0/r32/eax
 <span id="L835" class="LineNr"> 835 </span>    8a/copy-byte *(esi+ecx+0xc) 0/r32/AL
 <span id="L836" class="LineNr"> 836 </span>    <span class="subxS1Comment"># . if (eax != '#') goto next check</span>
@@ -845,7 +845,7 @@ if ('onhashchange' in window) {
 <span id="L855" class="LineNr"> 855 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L856" class="LineNr"> 856 </span>    56/push-esi
 <span id="L857" class="LineNr"> 857 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L858" class="LineNr"> 858 </span>    e8/call <a href='../073next-token.subx.html#L1169'>skip-string</a>/disp32
+<span id="L858" class="LineNr"> 858 </span>    e8/call <a href='../073next-token.subx.html#L1171'>skip-string</a>/disp32
 <span id="L859" class="LineNr"> 859 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L860" class="LineNr"> 860 </span>    81 0/subop/add %esp 4/imm32
 <span id="L861" class="LineNr"> 861 </span>    <span class="subxComment"># out-&gt;end = &amp;line-&gt;data[line-&gt;read]</span>
@@ -870,7 +870,7 @@ if ('onhashchange' in window) {
 <span id="L880" class="LineNr"> 880 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L881" class="LineNr"> 881 </span>    56/push-esi
 <span id="L882" class="LineNr"> 882 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L883" class="LineNr"> 883 </span>    e8/call <a href='../073next-token.subx.html#L1597'>skip-until-close-paren</a>/disp32
+<span id="L883" class="LineNr"> 883 </span>    e8/call <a href='../073next-token.subx.html#L1599'>skip-until-close-paren</a>/disp32
 <span id="L884" class="LineNr"> 884 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L885" class="LineNr"> 885 </span>    81 0/subop/add %esp 4/imm32
 <span id="L886" class="LineNr"> 886 </span>    <span class="subxComment"># if (line-&gt;data[line-&gt;read] != ')') goto error2</span>
@@ -1176,19 +1176,19 @@ if ('onhashchange' in window) {
 <span id="L1186" class="LineNr">1186 </span>    <span class="subxComment"># setup</span>
 <span id="L1187" class="LineNr">1187 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1188" class="LineNr">1188 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1189" class="LineNr">1189 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1189" class="LineNr">1189 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1190" class="LineNr">1190 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1191" class="LineNr">1191 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1192" class="LineNr">1192 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1193" class="LineNr">1193 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1194" class="LineNr">1194 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1194" class="LineNr">1194 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1195" class="LineNr">1195 </span>    68/push 0/imm32/end
 <span id="L1196" class="LineNr">1196 </span>    68/push 0/imm32/start
 <span id="L1197" class="LineNr">1197 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1198" class="LineNr">1198 </span>    <span class="subxComment"># write(_test-input-stream, &quot;  ab&quot;)</span>
 <span id="L1199" class="LineNr">1199 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1200" class="LineNr">1200 </span>    68/push <span class="Constant">&quot;  ab&quot;</span>/imm32
-<span id="L1201" class="LineNr">1201 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1201" class="LineNr">1201 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1202" class="LineNr">1202 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1203" class="LineNr">1203 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1204" class="LineNr">1204 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1196,7 +1196,7 @@ if ('onhashchange' in window) {
 <span id="L1206" class="LineNr">1206 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1207" class="LineNr">1207 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1208" class="LineNr">1208 </span>    51/push-ecx
-<span id="L1209" class="LineNr">1209 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1209" class="LineNr">1209 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1210" class="LineNr">1210 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1211" class="LineNr">1211 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1212" class="LineNr">1212 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1205,7 +1205,7 @@ if ('onhashchange' in window) {
 <span id="L1215" class="LineNr">1215 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1216" class="LineNr">1216 </span>    68/push <span class="Constant">&quot;F - <a href='calls.subx.html#L1182'>test-next-word-string-or-expression-without-metadata</a>/updates-stream-read-correctly&quot;</span>/imm32
 <span id="L1217" class="LineNr">1217 </span>    68/push 4/imm32
-<span id="L1218" class="LineNr">1218 </span>    b8/copy-to-eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1218" class="LineNr">1218 </span>    b8/copy-to-eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1219" class="LineNr">1219 </span>    ff 6/subop/push *(eax+4)
 <span id="L1220" class="LineNr">1220 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1221" class="LineNr">1221 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1218,7 +1218,7 @@ if ('onhashchange' in window) {
 <span id="L1228" class="LineNr">1228 </span>    68/push 0xe/imm32
 <span id="L1229" class="LineNr">1229 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L1230" class="LineNr">1230 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L1231" class="LineNr">1231 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1231" class="LineNr">1231 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1232" class="LineNr">1232 </span>    50/push-eax
 <span id="L1233" class="LineNr">1233 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1234" class="LineNr">1234 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1231,7 +1231,7 @@ if ('onhashchange' in window) {
 <span id="L1241" class="LineNr">1241 </span>    68/push 0x10/imm32
 <span id="L1242" class="LineNr">1242 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L1243" class="LineNr">1243 </span>    8b/-&gt; *(ecx+4) 0/r32/eax
-<span id="L1244" class="LineNr">1244 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1244" class="LineNr">1244 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1245" class="LineNr">1245 </span>    50/push-eax
 <span id="L1246" class="LineNr">1246 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1247" class="LineNr">1247 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1249,19 +1249,19 @@ if ('onhashchange' in window) {
 <span id="L1259" class="LineNr">1259 </span>    <span class="subxComment"># setup</span>
 <span id="L1260" class="LineNr">1260 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1261" class="LineNr">1261 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1262" class="LineNr">1262 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1262" class="LineNr">1262 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1263" class="LineNr">1263 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1264" class="LineNr">1264 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1265" class="LineNr">1265 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1266" class="LineNr">1266 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1267" class="LineNr">1267 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1267" class="LineNr">1267 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1268" class="LineNr">1268 </span>    68/push 0/imm32/end
 <span id="L1269" class="LineNr">1269 </span>    68/push 0/imm32/start
 <span id="L1270" class="LineNr">1270 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1271" class="LineNr">1271 </span>    <span class="subxComment"># write(_test-input-stream, &quot;  # a&quot;)</span>
 <span id="L1272" class="LineNr">1272 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1273" class="LineNr">1273 </span>    68/push <span class="Constant">&quot;  # a&quot;</span>/imm32
-<span id="L1274" class="LineNr">1274 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1274" class="LineNr">1274 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1275" class="LineNr">1275 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1276" class="LineNr">1276 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1277" class="LineNr">1277 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1269,7 +1269,7 @@ if ('onhashchange' in window) {
 <span id="L1279" class="LineNr">1279 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1280" class="LineNr">1280 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1281" class="LineNr">1281 </span>    51/push-ecx
-<span id="L1282" class="LineNr">1282 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1282" class="LineNr">1282 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1283" class="LineNr">1283 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1284" class="LineNr">1284 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1285" class="LineNr">1285 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1278,7 +1278,7 @@ if ('onhashchange' in window) {
 <span id="L1288" class="LineNr">1288 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1289" class="LineNr">1289 </span>    68/push <span class="Constant">&quot;F - <a href='calls.subx.html#L1255'>test-next-word-string-or-expression-without-metadata-returns-whole-comment</a>/updates-stream-read-correctly&quot;</span>/imm32
 <span id="L1290" class="LineNr">1290 </span>    68/push 5/imm32
-<span id="L1291" class="LineNr">1291 </span>    b8/copy-to-eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1291" class="LineNr">1291 </span>    b8/copy-to-eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1292" class="LineNr">1292 </span>    ff 6/subop/push *(eax+4)
 <span id="L1293" class="LineNr">1293 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1294" class="LineNr">1294 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1291,7 +1291,7 @@ if ('onhashchange' in window) {
 <span id="L1301" class="LineNr">1301 </span>    68/push 0xe/imm32
 <span id="L1302" class="LineNr">1302 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L1303" class="LineNr">1303 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L1304" class="LineNr">1304 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1304" class="LineNr">1304 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1305" class="LineNr">1305 </span>    50/push-eax
 <span id="L1306" class="LineNr">1306 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1307" class="LineNr">1307 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1304,7 +1304,7 @@ if ('onhashchange' in window) {
 <span id="L1314" class="LineNr">1314 </span>    68/push 0x11/imm32
 <span id="L1315" class="LineNr">1315 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L1316" class="LineNr">1316 </span>    8b/-&gt; *(ecx+4) 0/r32/eax
-<span id="L1317" class="LineNr">1317 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1317" class="LineNr">1317 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1318" class="LineNr">1318 </span>    50/push-eax
 <span id="L1319" class="LineNr">1319 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1320" class="LineNr">1320 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1322,12 +1322,12 @@ if ('onhashchange' in window) {
 <span id="L1332" class="LineNr">1332 </span>    <span class="subxComment"># setup</span>
 <span id="L1333" class="LineNr">1333 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1334" class="LineNr">1334 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1335" class="LineNr">1335 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1335" class="LineNr">1335 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1336" class="LineNr">1336 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1337" class="LineNr">1337 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1338" class="LineNr">1338 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1339" class="LineNr">1339 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1340" class="LineNr">1340 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1340" class="LineNr">1340 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1341" class="LineNr">1341 </span>    68/push 0/imm32/end
 <span id="L1342" class="LineNr">1342 </span>    68/push 0/imm32/start
 <span id="L1343" class="LineNr">1343 </span>    89/&lt;- %ecx 4/r32/esp
@@ -1335,7 +1335,7 @@ if ('onhashchange' in window) {
 <span id="L1345" class="LineNr">1345 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1346" class="LineNr">1346 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1347" class="LineNr">1347 </span>    51/push-ecx
-<span id="L1348" class="LineNr">1348 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1348" class="LineNr">1348 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1349" class="LineNr">1349 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1350" class="LineNr">1350 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1351" class="LineNr">1351 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1364,19 +1364,19 @@ if ('onhashchange' in window) {
 <span id="L1374" class="LineNr">1374 </span>    <span class="subxComment"># setup</span>
 <span id="L1375" class="LineNr">1375 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1376" class="LineNr">1376 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1377" class="LineNr">1377 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1377" class="LineNr">1377 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1378" class="LineNr">1378 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1379" class="LineNr">1379 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1380" class="LineNr">1380 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1381" class="LineNr">1381 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1382" class="LineNr">1382 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1382" class="LineNr">1382 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1383" class="LineNr">1383 </span>    68/push 0/imm32/end
 <span id="L1384" class="LineNr">1384 </span>    68/push 0/imm32/start
 <span id="L1385" class="LineNr">1385 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1386" class="LineNr">1386 </span>    <span class="subxComment"># write(_test-input-stream, &quot; \&quot;a b\&quot; &quot;)</span>
 <span id="L1387" class="LineNr">1387 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1388" class="LineNr">1388 </span>    68/push <span class="Constant">&quot; \&quot;</span>a b\<span class="Constant">&quot; &quot;</span>/imm32
-<span id="L1389" class="LineNr">1389 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1389" class="LineNr">1389 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1390" class="LineNr">1390 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1391" class="LineNr">1391 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1392" class="LineNr">1392 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1384,7 +1384,7 @@ if ('onhashchange' in window) {
 <span id="L1394" class="LineNr">1394 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1395" class="LineNr">1395 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1396" class="LineNr">1396 </span>    51/push-ecx
-<span id="L1397" class="LineNr">1397 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1397" class="LineNr">1397 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1398" class="LineNr">1398 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1399" class="LineNr">1399 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1400" class="LineNr">1400 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1396,7 +1396,7 @@ if ('onhashchange' in window) {
 <span id="L1406" class="LineNr">1406 </span>    68/push 0xd/imm32
 <span id="L1407" class="LineNr">1407 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L1408" class="LineNr">1408 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L1409" class="LineNr">1409 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1409" class="LineNr">1409 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1410" class="LineNr">1410 </span>    50/push-eax
 <span id="L1411" class="LineNr">1411 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1412" class="LineNr">1412 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1409,7 +1409,7 @@ if ('onhashchange' in window) {
 <span id="L1419" class="LineNr">1419 </span>    68/push 0x12/imm32
 <span id="L1420" class="LineNr">1420 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L1421" class="LineNr">1421 </span>    8b/-&gt; *(ecx+4) 0/r32/eax
-<span id="L1422" class="LineNr">1422 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1422" class="LineNr">1422 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1423" class="LineNr">1423 </span>    50/push-eax
 <span id="L1424" class="LineNr">1424 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1425" class="LineNr">1425 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1427,19 +1427,19 @@ if ('onhashchange' in window) {
 <span id="L1437" class="LineNr">1437 </span>    <span class="subxComment"># setup</span>
 <span id="L1438" class="LineNr">1438 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1439" class="LineNr">1439 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1440" class="LineNr">1440 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1440" class="LineNr">1440 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1441" class="LineNr">1441 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1442" class="LineNr">1442 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1443" class="LineNr">1443 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1444" class="LineNr">1444 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1445" class="LineNr">1445 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1445" class="LineNr">1445 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1446" class="LineNr">1446 </span>    68/push 0/imm32/end
 <span id="L1447" class="LineNr">1447 </span>    68/push 0/imm32/start
 <span id="L1448" class="LineNr">1448 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1449" class="LineNr">1449 </span>    <span class="subxComment"># write(_test-input-stream, &quot; \&quot;a\\\&quot;b\&quot;&quot;)</span>
 <span id="L1450" class="LineNr">1450 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1451" class="LineNr">1451 </span>    68/push <span class="Constant">&quot; \&quot;</span>a\\\<span class="Constant">&quot;b\&quot;</span>&quot;/imm32
-<span id="L1452" class="LineNr">1452 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1452" class="LineNr">1452 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1453" class="LineNr">1453 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1454" class="LineNr">1454 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1455" class="LineNr">1455 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1447,7 +1447,7 @@ if ('onhashchange' in window) {
 <span id="L1457" class="LineNr">1457 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1458" class="LineNr">1458 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1459" class="LineNr">1459 </span>    51/push-ecx
-<span id="L1460" class="LineNr">1460 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1460" class="LineNr">1460 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1461" class="LineNr">1461 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1462" class="LineNr">1462 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1463" class="LineNr">1463 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1459,7 +1459,7 @@ if ('onhashchange' in window) {
 <span id="L1469" class="LineNr">1469 </span>    68/push 0xd/imm32
 <span id="L1470" class="LineNr">1470 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L1471" class="LineNr">1471 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L1472" class="LineNr">1472 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1472" class="LineNr">1472 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1473" class="LineNr">1473 </span>    50/push-eax
 <span id="L1474" class="LineNr">1474 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1475" class="LineNr">1475 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1472,7 +1472,7 @@ if ('onhashchange' in window) {
 <span id="L1482" class="LineNr">1482 </span>    68/push 0x13/imm32
 <span id="L1483" class="LineNr">1483 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L1484" class="LineNr">1484 </span>    8b/-&gt; *(ecx+4) 0/r32/eax
-<span id="L1485" class="LineNr">1485 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1485" class="LineNr">1485 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1486" class="LineNr">1486 </span>    50/push-eax
 <span id="L1487" class="LineNr">1487 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1488" class="LineNr">1488 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1490,19 +1490,19 @@ if ('onhashchange' in window) {
 <span id="L1500" class="LineNr">1500 </span>    <span class="subxComment"># setup</span>
 <span id="L1501" class="LineNr">1501 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1502" class="LineNr">1502 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1503" class="LineNr">1503 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1503" class="LineNr">1503 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1504" class="LineNr">1504 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1505" class="LineNr">1505 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1506" class="LineNr">1506 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1507" class="LineNr">1507 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1508" class="LineNr">1508 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1508" class="LineNr">1508 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1509" class="LineNr">1509 </span>    68/push 0/imm32/end
 <span id="L1510" class="LineNr">1510 </span>    68/push 0/imm32/start
 <span id="L1511" class="LineNr">1511 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1512" class="LineNr">1512 </span>    <span class="subxComment"># write(_test-input-stream, &quot; *(a b) &quot;)</span>
 <span id="L1513" class="LineNr">1513 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1514" class="LineNr">1514 </span>    68/push <span class="Constant">&quot; *(a b) &quot;</span>/imm32
-<span id="L1515" class="LineNr">1515 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1515" class="LineNr">1515 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1516" class="LineNr">1516 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1517" class="LineNr">1517 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1518" class="LineNr">1518 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1510,7 +1510,7 @@ if ('onhashchange' in window) {
 <span id="L1520" class="LineNr">1520 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1521" class="LineNr">1521 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1522" class="LineNr">1522 </span>    51/push-ecx
-<span id="L1523" class="LineNr">1523 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1523" class="LineNr">1523 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1524" class="LineNr">1524 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1525" class="LineNr">1525 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1526" class="LineNr">1526 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1522,7 +1522,7 @@ if ('onhashchange' in window) {
 <span id="L1532" class="LineNr">1532 </span>    68/push 0xd/imm32
 <span id="L1533" class="LineNr">1533 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L1534" class="LineNr">1534 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L1535" class="LineNr">1535 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1535" class="LineNr">1535 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1536" class="LineNr">1536 </span>    50/push-eax
 <span id="L1537" class="LineNr">1537 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1538" class="LineNr">1538 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1535,7 +1535,7 @@ if ('onhashchange' in window) {
 <span id="L1545" class="LineNr">1545 </span>    68/push 0x13/imm32
 <span id="L1546" class="LineNr">1546 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L1547" class="LineNr">1547 </span>    8b/-&gt; *(ecx+4) 0/r32/eax
-<span id="L1548" class="LineNr">1548 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1548" class="LineNr">1548 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1549" class="LineNr">1549 </span>    50/push-eax
 <span id="L1550" class="LineNr">1550 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1551" class="LineNr">1551 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1553,19 +1553,19 @@ if ('onhashchange' in window) {
 <span id="L1563" class="LineNr">1563 </span>    <span class="subxComment"># setup</span>
 <span id="L1564" class="LineNr">1564 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1565" class="LineNr">1565 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1566" class="LineNr">1566 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1566" class="LineNr">1566 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1567" class="LineNr">1567 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1568" class="LineNr">1568 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1569" class="LineNr">1569 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1570" class="LineNr">1570 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1571" class="LineNr">1571 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1571" class="LineNr">1571 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1572" class="LineNr">1572 </span>    68/push 0/imm32/end
 <span id="L1573" class="LineNr">1573 </span>    68/push 0/imm32/start
 <span id="L1574" class="LineNr">1574 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1575" class="LineNr">1575 </span>    <span class="subxComment"># write(_test-input-stream, &quot; ) &quot;)</span>
 <span id="L1576" class="LineNr">1576 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1577" class="LineNr">1577 </span>    68/push <span class="Constant">&quot; ) &quot;</span>/imm32
-<span id="L1578" class="LineNr">1578 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1578" class="LineNr">1578 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1579" class="LineNr">1579 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1580" class="LineNr">1580 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1581" class="LineNr">1581 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1573,7 +1573,7 @@ if ('onhashchange' in window) {
 <span id="L1583" class="LineNr">1583 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1584" class="LineNr">1584 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1585" class="LineNr">1585 </span>    51/push-ecx
-<span id="L1586" class="LineNr">1586 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1586" class="LineNr">1586 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1587" class="LineNr">1587 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1588" class="LineNr">1588 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1589" class="LineNr">1589 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1608,19 +1608,19 @@ if ('onhashchange' in window) {
 <span id="L1618" class="LineNr">1618 </span>    <span class="subxComment"># setup</span>
 <span id="L1619" class="LineNr">1619 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1620" class="LineNr">1620 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1621" class="LineNr">1621 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1621" class="LineNr">1621 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1622" class="LineNr">1622 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1623" class="LineNr">1623 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1624" class="LineNr">1624 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1625" class="LineNr">1625 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1626" class="LineNr">1626 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1626" class="LineNr">1626 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1627" class="LineNr">1627 </span>    68/push 0/imm32/end
 <span id="L1628" class="LineNr">1628 </span>    68/push 0/imm32/start
 <span id="L1629" class="LineNr">1629 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1630" class="LineNr">1630 </span>    <span class="subxComment"># write(_test-input-stream, &quot; ) # abc &quot;)</span>
 <span id="L1631" class="LineNr">1631 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1632" class="LineNr">1632 </span>    68/push <span class="Constant">&quot; ) # abc &quot;</span>/imm32
-<span id="L1633" class="LineNr">1633 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1633" class="LineNr">1633 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1634" class="LineNr">1634 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1635" class="LineNr">1635 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1636" class="LineNr">1636 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1628,7 +1628,7 @@ if ('onhashchange' in window) {
 <span id="L1638" class="LineNr">1638 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1639" class="LineNr">1639 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1640" class="LineNr">1640 </span>    51/push-ecx
-<span id="L1641" class="LineNr">1641 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1641" class="LineNr">1641 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1642" class="LineNr">1642 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1643" class="LineNr">1643 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1644" class="LineNr">1644 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1663,19 +1663,19 @@ if ('onhashchange' in window) {
 <span id="L1673" class="LineNr">1673 </span>    <span class="subxComment"># setup</span>
 <span id="L1674" class="LineNr">1674 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1675" class="LineNr">1675 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1676" class="LineNr">1676 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1676" class="LineNr">1676 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1677" class="LineNr">1677 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1678" class="LineNr">1678 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1679" class="LineNr">1679 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1680" class="LineNr">1680 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1681" class="LineNr">1681 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1681" class="LineNr">1681 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1682" class="LineNr">1682 </span>    68/push 0/imm32/end
 <span id="L1683" class="LineNr">1683 </span>    68/push 0/imm32/start
 <span id="L1684" class="LineNr">1684 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1685" class="LineNr">1685 </span>    <span class="subxComment"># write(_test-input-stream, &quot; )\n&quot;)</span>
 <span id="L1686" class="LineNr">1686 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1687" class="LineNr">1687 </span>    68/push <span class="Constant">&quot; )\n&quot;</span>/imm32
-<span id="L1688" class="LineNr">1688 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1688" class="LineNr">1688 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1689" class="LineNr">1689 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1690" class="LineNr">1690 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1691" class="LineNr">1691 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1683,7 +1683,7 @@ if ('onhashchange' in window) {
 <span id="L1693" class="LineNr">1693 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1694" class="LineNr">1694 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1695" class="LineNr">1695 </span>    51/push-ecx
-<span id="L1696" class="LineNr">1696 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1696" class="LineNr">1696 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1697" class="LineNr">1697 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1698" class="LineNr">1698 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1699" class="LineNr">1699 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1718,19 +1718,19 @@ if ('onhashchange' in window) {
 <span id="L1728" class="LineNr">1728 </span>    <span class="subxComment"># setup</span>
 <span id="L1729" class="LineNr">1729 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
 <span id="L1730" class="LineNr">1730 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1731" class="LineNr">1731 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1731" class="LineNr">1731 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1732" class="LineNr">1732 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1733" class="LineNr">1733 </span>    e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
 <span id="L1734" class="LineNr">1734 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1735" class="LineNr">1735 </span>    81 0/subop/add %esp 4/imm32
-<span id="L1736" class="LineNr">1736 </span>    <span class="subxComment"># var slice/ecx = {0, 0}</span>
+<span id="L1736" class="LineNr">1736 </span>    <span class="subxComment"># var slice/ecx : (ref slice)</span>
 <span id="L1737" class="LineNr">1737 </span>    68/push 0/imm32/end
 <span id="L1738" class="LineNr">1738 </span>    68/push 0/imm32/start
 <span id="L1739" class="LineNr">1739 </span>    89/&lt;- %ecx 4/r32/esp
 <span id="L1740" class="LineNr">1740 </span>    <span class="subxComment"># write(_test-input-stream, &quot; abc) # def&quot;)</span>
 <span id="L1741" class="LineNr">1741 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1742" class="LineNr">1742 </span>    68/push <span class="Constant">&quot; abc) # def&quot;</span>/imm32
-<span id="L1743" class="LineNr">1743 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1743" class="LineNr">1743 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1744" class="LineNr">1744 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1745" class="LineNr">1745 </span>    e8/call <a href='../057write.subx.html#L24'>write</a>/disp32
 <span id="L1746" class="LineNr">1746 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1738,7 +1738,7 @@ if ('onhashchange' in window) {
 <span id="L1748" class="LineNr">1748 </span>    <span class="subxComment"># next-word-string-or-expression-without-metadata(_test-input-stream, slice)</span>
 <span id="L1749" class="LineNr">1749 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1750" class="LineNr">1750 </span>    51/push-ecx
-<span id="L1751" class="LineNr">1751 </span>    68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1751" class="LineNr">1751 </span>    68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1752" class="LineNr">1752 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1753" class="LineNr">1753 </span>    e8/call <a href='calls.subx.html#L744'>next-word-string-or-expression-without-metadata</a>/disp32
 <span id="L1754" class="LineNr">1754 </span>    <span class="subxS2Comment"># . . discard args</span>
@@ -1750,7 +1750,7 @@ if ('onhashchange' in window) {
 <span id="L1760" class="LineNr">1760 </span>    68/push 0xd/imm32
 <span id="L1761" class="LineNr">1761 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L1762" class="LineNr">1762 </span>    8b/-&gt; *ecx 0/r32/eax
-<span id="L1763" class="LineNr">1763 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1763" class="LineNr">1763 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1764" class="LineNr">1764 </span>    50/push-eax
 <span id="L1765" class="LineNr">1765 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1766" class="LineNr">1766 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
@@ -1763,7 +1763,7 @@ if ('onhashchange' in window) {
 <span id="L1773" class="LineNr">1773 </span>    68/push 0x10/imm32
 <span id="L1774" class="LineNr">1774 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L1775" class="LineNr">1775 </span>    8b/-&gt; *(ecx+4) 0/r32/eax
-<span id="L1776" class="LineNr">1776 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32
+<span id="L1776" class="LineNr">1776 </span>    81 5/subop/subtract %eax <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32
 <span id="L1777" class="LineNr">1777 </span>    50/push-eax
 <span id="L1778" class="LineNr">1778 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L1779" class="LineNr">1779 </span>    e8/call <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32