diff options
Diffstat (limited to 'chapter10b')
| -rw-r--r-- | chapter10b/README.md | 7 | ||||
| -rw-r--r-- | chapter10b/docs/example1.gv | 23 | ||||
| -rw-r--r-- | chapter10b/docs/example1.svg | 60 | ||||
| -rw-r--r-- | chapter10b/docs/example2a.gv | 21 | ||||
| -rw-r--r-- | chapter10b/docs/example2a.svg | 58 | ||||
| -rw-r--r-- | chapter10b/docs/example2b.gv | 23 | ||||
| -rw-r--r-- | chapter10b/docs/example2b.svg | 72 | ||||
| -rw-r--r-- | chapter10b/docs/example2c.gv | 19 | ||||
| -rw-r--r-- | chapter10b/docs/example2c.svg | 38 | ||||
| -rw-r--r-- | chapter10b/docs/lattice.gv | 2 | ||||
| -rw-r--r-- | chapter10b/docs/lattice.svg | 154 |
11 files changed, 252 insertions, 225 deletions
diff --git a/chapter10b/README.md b/chapter10b/README.md index dfdf74d5..671d53c3 100644 --- a/chapter10b/README.md +++ b/chapter10b/README.md @@ -171,11 +171,10 @@ alias to become known later, using the same representation. Its private constructor memory, escape tracking, incomplete types, and module alias remapping are separate extensions and are not needed here. -Chapters 11-15 use this representation, including alias-specific load/store +Chapters 11-24 use this representation, including alias-specific load/store anti-dependencies. Chapter 15 adds allocation with partial memory and typed -alias contents. Chapters 16-24 currently retain their older parser-managed -memory chains; forwarding through those snapshots is tracked in the -[backport queue](../docs/chapter-backports.md). +alias contents. Chapter 16 extends initialization to constructor values, and +Chapter 18 carries whole memory across function calls. ## Build and test diff --git a/chapter10b/docs/example1.gv b/chapter10b/docs/example1.gv index 0b0a5feb..5e059d77 100644 --- a/chapter10b/docs/example1.gv +++ b/chapter10b/docs/example1.gv @@ -1,13 +1,20 @@ digraph Memory { + // IR styles match graph/web/render.js; arrows are use -> definition. + graph [bgcolor="#fafbfc" fontname="Helvetica" nodesep=0.35 ranksep=0.55 splines=ortho]; + node [fontname="Helvetica" fontsize=12 color="#758191" fontcolor="#152330" shape=box style="rounded,filled" fillcolor="#edf3f7"]; + edge [fontname="Helvetica" fontsize=9 color="#536477" fontcolor="#364352" arrowsize=0.7 penwidth=1.5]; + rankdir=BT; - node [shape=box]; - M [label="Initial memory"]; - X [label="Store x = 42"]; - Y [label="Loop: Store y"]; - L [label="Load x (42)"]; - L -> X -> M [color=blue]; Y -> M [color=green]; - MemMerge -> X [color=blue]; MemMerge -> Y [color=green]; - Return -> MemMerge; Return -> L; + + M [label="Initial memory" shape=octagon style="filled" fillcolor="#dcecff"]; + X [label="Store x = 42" shape=octagon style="filled" fillcolor="#dcecff"]; + Y [label="Loop: Store y" shape=octagon style="filled" fillcolor="#dcecff"]; + L [label="Load x (42)" shape=box style="rounded,filled" fillcolor="#edf3f7"]; + L -> X -> M [color="#2867b2"]; Y -> M [color="#2867b2"]; + MemMerge -> X [color="#2867b2"]; MemMerge -> Y [color="#2867b2"]; + Return -> MemMerge [color="#2867b2"]; Return -> L; { rank=same; MemMerge -> L [style=invis]; } Y -> X [style=invis]; // Layout only: keep the stores in code order. + Return [shape=box style="filled" fillcolor="#fff1c4"]; + MemMerge [shape=octagon style="filled" fillcolor="#dcecff"]; } diff --git a/chapter10b/docs/example1.svg b/chapter10b/docs/example1.svg index 384b6e12..f0b57612 100644 --- a/chapter10b/docs/example1.svg +++ b/chapter10b/docs/example1.svg @@ -4,90 +4,90 @@ <!-- Generated by graphviz version 12.2.0 (20241103.1931) --> <!-- Title: Memory Pages: 1 --> -<svg width="206pt" height="332pt" - viewBox="0.00 0.00 205.75 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)"> +<svg width="255pt" height="348pt" + viewBox="0.00 0.00 254.55 348.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 344)"> <title>Memory</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-328 201.75,-328 201.75,4 -4,4"/> +<polygon fill="#fafbfc" stroke="none" points="-4,4 -4,-344 250.55,-344 250.55,4 -4,4"/> <!-- M --> <g id="node1" class="node"> <title>M</title> -<polygon fill="none" stroke="black" points="131.75,-324 33.25,-324 33.25,-288 131.75,-288 131.75,-324"/> -<text text-anchor="middle" x="82.5" y="-300.95" font-family="Times New Roman,serif" font-size="14.00">Initial memory</text> +<polygon fill="#dcecff" stroke="#758191" points="169.68,-314.54 169.68,-329.46 133.28,-340 81.81,-340 45.42,-329.46 45.42,-314.54 81.81,-304 133.28,-304 169.68,-314.54"/> +<text text-anchor="middle" x="107.55" y="-317.73" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Initial memory</text> </g> <!-- X --> <g id="node2" class="node"> <title>X</title> -<polygon fill="none" stroke="black" points="160.62,-252 76.38,-252 76.38,-216 160.62,-216 160.62,-252"/> -<text text-anchor="middle" x="118.5" y="-228.95" font-family="Times New Roman,serif" font-size="14.00">Store x = 42</text> +<polygon fill="#dcecff" stroke="#758191" points="210.45,-238.54 210.45,-253.46 178.29,-264 132.81,-264 100.65,-253.46 100.65,-238.54 132.81,-228 178.29,-228 210.45,-238.54"/> +<text text-anchor="middle" x="155.55" y="-241.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Store x = 42</text> </g> <!-- X->M --> <g id="edge2" class="edge"> <title>X->M</title> -<path fill="none" stroke="blue" d="M109.6,-252.3C105.63,-260.02 100.87,-269.29 96.44,-277.89"/> -<polygon fill="blue" stroke="blue" points="93.45,-276.06 91.99,-286.55 99.67,-279.26 93.45,-276.06"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M135.16,-264.4C135.16,-264.4 135.16,-294.76 135.16,-294.76"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="132.71,-294.76 135.16,-301.76 137.61,-294.76 132.71,-294.76"/> </g> <!-- Y --> <g id="node3" class="node"> <title>Y</title> -<polygon fill="none" stroke="black" points="91,-180 0,-180 0,-144 91,-144 91,-180"/> -<text text-anchor="middle" x="45.5" y="-156.95" font-family="Times New Roman,serif" font-size="14.00">Loop: Store y</text> +<polygon fill="#dcecff" stroke="#758191" points="119.1,-162.54 119.1,-177.46 84.21,-188 34.88,-188 0,-177.46 0,-162.54 34.88,-152 84.21,-152 119.1,-162.54"/> +<text text-anchor="middle" x="59.55" y="-165.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Loop: Store y</text> </g> <!-- Y->M --> <g id="edge3" class="edge"> <title>Y->M</title> -<path fill="none" stroke="green" d="M49.63,-180.44C53.93,-198.41 60.94,-227.23 67.5,-252 69.64,-260.07 72.07,-268.81 74.33,-276.81"/> -<polygon fill="green" stroke="green" points="70.96,-277.75 77.07,-286.4 77.69,-275.82 70.96,-277.75"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M73.03,-188.33C73.03,-188.33 73.03,-297.09 73.03,-297.09"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="70.58,-297.09 73.03,-304.09 75.48,-297.09 70.58,-297.09"/> </g> <!-- Y->X --> <!-- L --> <g id="node4" class="node"> <title>L</title> -<polygon fill="none" stroke="black" points="197.75,-108 117.25,-108 117.25,-72 197.75,-72 197.75,-108"/> -<text text-anchor="middle" x="157.5" y="-84.95" font-family="Times New Roman,serif" font-size="14.00">Load x (42)</text> +<path fill="#edf3f7" stroke="#758191" d="M234.55,-112C234.55,-112 182.55,-112 182.55,-112 176.55,-112 170.55,-106 170.55,-100 170.55,-100 170.55,-88 170.55,-88 170.55,-82 176.55,-76 182.55,-76 182.55,-76 234.55,-76 234.55,-76 240.55,-76 246.55,-82 246.55,-88 246.55,-88 246.55,-100 246.55,-100 246.55,-106 240.55,-112 234.55,-112"/> +<text text-anchor="middle" x="208.55" y="-89.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Load x (42)</text> </g> <!-- L->X --> <g id="edge1" class="edge"> <title>L->X</title> -<path fill="none" stroke="blue" d="M152.87,-108.41C148.09,-126.37 140.36,-155.17 133.5,-180 131.28,-188.05 128.82,-196.78 126.56,-204.78"/> -<polygon fill="blue" stroke="blue" points="123.2,-203.8 123.83,-214.37 129.93,-205.71 123.2,-203.8"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M190.5,-112.33C190.5,-112.33 190.5,-222.4 190.5,-222.4"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="188.05,-222.4 190.5,-229.4 192.95,-222.4 188.05,-222.4"/> </g> <!-- MemMerge --> <g id="node5" class="node"> <title>MemMerge</title> -<polygon fill="none" stroke="black" points="99.5,-108 17.5,-108 17.5,-72 99.5,-72 99.5,-108"/> -<text text-anchor="middle" x="58.5" y="-84.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text> +<polygon fill="#dcecff" stroke="#758191" points="145.87,-86.54 145.87,-101.46 115.22,-112 71.88,-112 41.23,-101.46 41.23,-86.54 71.88,-76 115.22,-76 145.87,-86.54"/> +<text text-anchor="middle" x="93.55" y="-89.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">MemMerge</text> </g> <!-- MemMerge->X --> <g id="edge4" class="edge"> <title>MemMerge->X</title> -<path fill="none" stroke="blue" d="M75.59,-108.21C84.32,-117.95 94.37,-130.8 100.5,-144 109.34,-163.03 113.85,-186.32 116.15,-204.31"/> -<polygon fill="blue" stroke="blue" points="112.64,-204.46 117.22,-214.02 119.6,-203.7 112.64,-204.46"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M132.48,-106.44C132.48,-106.44 132.48,-218.56 132.48,-218.56"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="130.03,-218.56 132.48,-225.56 134.93,-218.56 130.03,-218.56"/> </g> <!-- MemMerge->Y --> <g id="edge5" class="edge"> <title>MemMerge->Y</title> -<path fill="none" stroke="green" d="M55.29,-108.3C53.92,-115.68 52.28,-124.48 50.75,-132.75"/> -<polygon fill="green" stroke="green" points="47.34,-131.94 48.95,-142.41 54.22,-133.21 47.34,-131.94"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M80.16,-112.4C80.16,-112.4 80.16,-142.24 80.16,-142.24"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="77.71,-142.24 80.16,-149.24 82.61,-142.24 77.71,-142.24"/> </g> <!-- MemMerge->L --> <!-- Return --> <g id="node6" class="node"> <title>Return</title> -<polygon fill="none" stroke="black" points="134.5,-36 80.5,-36 80.5,0 134.5,0 134.5,-36"/> -<text text-anchor="middle" x="107.5" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Return</text> +<polygon fill="#fff1c4" stroke="#758191" points="177.55,-36 123.55,-36 123.55,0 177.55,0 177.55,-36"/> +<text text-anchor="middle" x="150.55" y="-13.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Return</text> </g> <!-- Return->L --> <g id="edge7" class="edge"> <title>Return->L</title> -<path fill="none" stroke="black" d="M119.86,-36.3C125.55,-44.27 132.43,-53.9 138.74,-62.74"/> -<polygon fill="black" stroke="black" points="135.74,-64.56 144.4,-70.66 141.44,-60.49 135.74,-64.56"/> +<path fill="none" stroke="#536477" stroke-width="1.5" d="M174.05,-36.4C174.05,-36.4 174.05,-66.24 174.05,-66.24"/> +<polygon fill="#536477" stroke="#536477" stroke-width="1.5" points="171.6,-66.24 174.05,-73.24 176.5,-66.24 171.6,-66.24"/> </g> <!-- Return->MemMerge --> <g id="edge6" class="edge"> <title>Return->MemMerge</title> -<path fill="none" stroke="black" d="M95.39,-36.3C89.81,-44.27 83.07,-53.9 76.88,-62.74"/> -<polygon fill="black" stroke="black" points="74.21,-60.46 71.34,-70.66 79.94,-64.47 74.21,-60.46"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M134.71,-36.4C134.71,-36.4 134.71,-73.34 134.71,-73.34"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="132.26,-73.34 134.71,-80.34 137.16,-73.34 132.26,-73.34"/> </g> </g> </svg> diff --git a/chapter10b/docs/example2a.gv b/chapter10b/docs/example2a.gv index d92eea41..187e63b9 100644 --- a/chapter10b/docs/example2a.gv +++ b/chapter10b/docs/example2a.gv @@ -1,10 +1,17 @@ digraph Memory { + // IR styles match graph/web/render.js; arrows are use -> definition. + graph [bgcolor="#fafbfc" fontname="Helvetica" nodesep=0.35 ranksep=0.55 splines=ortho]; + node [fontname="Helvetica" fontsize=12 color="#758191" fontcolor="#152330" shape=box style="rounded,filled" fillcolor="#edf3f7"]; + edge [fontname="Helvetica" fontsize=9 color="#536477" fontcolor="#364352" arrowsize=0.7 penwidth=1.5]; + rankdir=RL; - node [shape=box]; - M [label="Default memory"]; - X [label="Store x"]; - Y [label="Store y"]; - X -> M [color=blue]; Y -> M [color=green]; - MemMerge -> M [label="default"]; MemMerge -> X [label="x",color=blue]; - MemMerge -> Y [label="y",color=green]; Return -> MemMerge; + + M [label="Default memory" shape=octagon style="filled" fillcolor="#dcecff"]; + X [label="Store x" shape=octagon style="filled" fillcolor="#dcecff"]; + Y [label="Store y" shape=octagon style="filled" fillcolor="#dcecff"]; + X -> M [color="#2867b2"]; Y -> M [color="#2867b2"]; + MemMerge -> M [xlabel="default",color="#2867b2"]; MemMerge -> X [xlabel="x",color="#2867b2"]; + MemMerge -> Y [xlabel="y",color="#2867b2"]; Return -> MemMerge [color="#2867b2"]; + Return [shape=box style="filled" fillcolor="#fff1c4"]; + MemMerge [shape=octagon style="filled" fillcolor="#dcecff"]; } diff --git a/chapter10b/docs/example2a.svg b/chapter10b/docs/example2a.svg index 97fb144e..47bc3a8f 100644 --- a/chapter10b/docs/example2a.svg +++ b/chapter10b/docs/example2a.svg @@ -4,79 +4,79 @@ <!-- Generated by graphviz version 12.2.0 (20241103.1931) --> <!-- Title: Memory Pages: 1 --> -<svg width="423pt" height="126pt" - viewBox="0.00 0.00 422.50 125.93" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 121.93)"> +<svg width="498pt" height="105pt" + viewBox="0.00 0.00 497.99 105.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 101)"> <title>Memory</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-121.93 418.5,-121.93 418.5,4 -4,4"/> +<polygon fill="#fafbfc" stroke="none" points="-4,4 -4,-101 493.99,-101 493.99,4 -4,4"/> <!-- M --> <g id="node1" class="node"> <title>M</title> -<polygon fill="none" stroke="black" points="106.75,-90 0,-90 0,-54 106.75,-54 106.75,-90"/> -<text text-anchor="middle" x="53.38" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Default memory</text> +<polygon fill="#dcecff" stroke="#758191" points="137.69,-71.54 137.69,-86.46 97.36,-97 40.33,-97 0,-86.46 0,-71.54 40.33,-61 97.36,-61 137.69,-71.54"/> +<text text-anchor="middle" x="68.84" y="-74.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Default memory</text> </g> <!-- X --> <g id="node2" class="node"> <title>X</title> -<polygon fill="none" stroke="black" points="198.75,-90 143.75,-90 143.75,-54 198.75,-54 198.75,-90"/> -<text text-anchor="middle" x="171.25" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Store x</text> +<polygon fill="#dcecff" stroke="#758191" points="251.35,-71.54 251.35,-86.46 229.77,-97 199.26,-97 177.69,-86.46 177.69,-71.54 199.26,-61 229.77,-61 251.35,-71.54"/> +<text text-anchor="middle" x="214.52" y="-74.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Store x</text> </g> <!-- X->M --> <g id="edge1" class="edge"> <title>X->M</title> -<path fill="none" stroke="blue" d="M143.37,-72C135.84,-72 127.32,-72 118.6,-72"/> -<polygon fill="blue" stroke="blue" points="118.61,-68.5 108.61,-72 118.61,-75.5 118.61,-68.5"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M177.38,-79C177.38,-79 147.2,-79 147.2,-79"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="147.2,-76.55 140.2,-79 147.2,-81.45 147.2,-76.55"/> </g> <!-- Y --> <g id="node3" class="node"> <title>Y</title> -<polygon fill="none" stroke="black" points="198.75,-36 143.75,-36 143.75,0 198.75,0 198.75,-36"/> -<text text-anchor="middle" x="171.25" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Store y</text> +<polygon fill="#dcecff" stroke="#758191" points="251.35,-10.54 251.35,-25.46 229.77,-36 199.26,-36 177.69,-25.46 177.69,-10.54 199.26,0 229.77,0 251.35,-10.54"/> +<text text-anchor="middle" x="214.52" y="-13.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Store y</text> </g> <!-- Y->M --> <g id="edge2" class="edge"> <title>Y->M</title> -<path fill="none" stroke="green" d="M143.37,-30.52C131.65,-35.99 117.53,-42.57 104.01,-48.87"/> -<polygon fill="green" stroke="green" points="102.81,-45.57 95.22,-52.97 105.76,-51.91 102.81,-45.57"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M177.51,-18C127.88,-18 45.9,-18 45.9,-18 45.9,-18 36.62,-18 36.62,-18"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="41.53,-52.16 45.41,-58.48 46.32,-51.12 41.53,-52.16"/> </g> <!-- MemMerge --> <g id="node4" class="node"> <title>MemMerge</title> -<polygon fill="none" stroke="black" points="323.5,-90 241.5,-90 241.5,-54 323.5,-54 323.5,-90"/> -<text text-anchor="middle" x="282.5" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text> +<polygon fill="#dcecff" stroke="#758191" points="395.99,-71.54 395.99,-86.46 365.34,-97 322,-97 291.35,-86.46 291.35,-71.54 322,-61 365.34,-61 395.99,-71.54"/> +<text text-anchor="middle" x="343.67" y="-74.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">MemMerge</text> </g> <!-- MemMerge->M --> <g id="edge3" class="edge"> <title>MemMerge->M</title> -<path fill="none" stroke="black" d="M241.39,-88.58C228.08,-93.14 213,-97.3 198.75,-99 174.48,-101.9 167.93,-102.57 143.75,-99 135.07,-97.72 126.06,-95.77 117.26,-93.5"/> -<polygon fill="black" stroke="black" points="118.28,-90.15 107.71,-90.87 116.42,-96.9 118.28,-90.15"/> -<text text-anchor="middle" x="171.25" y="-104.63" font-family="Times New Roman,serif" font-size="14.00">default</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M361.11,-60.55C361.11,-54.13 361.11,-48.5 361.11,-48.5 361.11,-48.5 91.79,-48.5 91.79,-48.5 91.79,-48.5 91.79,-51.28 91.79,-51.28"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="89.34,-51.28 91.79,-58.28 94.24,-51.28 89.34,-51.28"/> +<text text-anchor="middle" x="244.96" y="-39.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">default</text> </g> <!-- MemMerge->X --> <g id="edge4" class="edge"> <title>MemMerge->X</title> -<path fill="none" stroke="blue" d="M241.13,-72C231.08,-72 220.34,-72 210.4,-72"/> -<polygon fill="blue" stroke="blue" points="210.71,-68.5 200.71,-72 210.71,-75.5 210.71,-68.5"/> -<text text-anchor="middle" x="220.12" y="-75.2" font-family="Times New Roman,serif" font-size="14.00">x</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M291.14,-79C291.14,-79 260.84,-79 260.84,-79"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="260.84,-76.55 253.84,-79 260.84,-81.45 260.84,-76.55"/> +<text text-anchor="middle" x="278.24" y="-70.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">x</text> </g> <!-- MemMerge->Y --> <g id="edge5" class="edge"> <title>MemMerge->Y</title> -<path fill="none" stroke="green" d="M244.21,-53.57C232.85,-47.95 220.38,-41.79 209.05,-36.19"/> -<polygon fill="green" stroke="green" points="210.91,-33.2 200.39,-31.91 207.81,-39.48 210.91,-33.2"/> -<text text-anchor="middle" x="220.12" y="-44.97" font-family="Times New Roman,serif" font-size="14.00">y</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M326.23,-60.7C326.23,-42.73 326.23,-18 326.23,-18 326.23,-18 260.98,-18 260.98,-18"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="260.98,-15.55 253.98,-18 260.98,-20.45 260.98,-15.55"/> +<text text-anchor="middle" x="317.21" y="-9.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">y</text> </g> <!-- Return --> <g id="node5" class="node"> <title>Return</title> -<polygon fill="none" stroke="black" points="414.5,-90 360.5,-90 360.5,-54 414.5,-54 414.5,-90"/> -<text text-anchor="middle" x="387.5" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Return</text> +<polygon fill="#fff1c4" stroke="#758191" points="489.99,-97 435.99,-97 435.99,-61 489.99,-61 489.99,-97"/> +<text text-anchor="middle" x="462.99" y="-74.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Return</text> </g> <!-- Return->MemMerge --> <g id="edge6" class="edge"> <title>Return->MemMerge</title> -<path fill="none" stroke="black" d="M360.24,-72C352.53,-72 343.82,-72 335.11,-72"/> -<polygon fill="black" stroke="black" points="335.25,-68.5 325.25,-72 335.25,-75.5 335.25,-68.5"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M435.61,-79C435.61,-79 405.55,-79 405.55,-79"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="405.55,-76.55 398.55,-79 405.55,-81.45 405.55,-76.55"/> </g> </g> </svg> diff --git a/chapter10b/docs/example2b.gv b/chapter10b/docs/example2b.gv index 4ddd36b5..39b87a6a 100644 --- a/chapter10b/docs/example2b.gv +++ b/chapter10b/docs/example2b.gv @@ -1,10 +1,19 @@ digraph Memory { + // IR styles match graph/web/render.js; arrows are use -> definition. + graph [bgcolor="#fafbfc" fontname="Helvetica" nodesep=0.35 ranksep=0.55 splines=ortho]; + node [fontname="Helvetica" fontsize=12 color="#758191" fontcolor="#152330" shape=box style="rounded,filled" fillcolor="#edf3f7"]; + edge [fontname="Helvetica" fontsize=9 color="#536477" fontcolor="#364352" arrowsize=0.7 penwidth=1.5]; + rankdir=RL; - node [shape=box]; - P [label="MemPhi(x)"]; - B [label="BulkMemPhi(All except x)"]; - P -> Left [label="slice x",color=blue]; P -> Right [label="slice x",color=blue]; - B -> Left; B -> Right; - P -> Region [style=dashed]; B -> Region [style=dashed]; - MemMerge -> P [label="x",color=blue]; MemMerge -> B [label="default"]; + + P [label="MemPhi(x)" shape=hexagon style="filled" fillcolor="#f5e4fa"]; + B [label="BulkMemPhi(All except x)" shape=hexagon style="filled" fillcolor="#f5e4fa"]; + P -> Left [xlabel="slice x",color="#2867b2"]; P -> Right [xlabel="slice x",color="#2867b2"]; + B -> Left [color="#2867b2"]; B -> Right [color="#2867b2"]; + P -> Region [style=dashed,color="#9396a3"]; B -> Region [style=dashed,color="#9396a3"]; + MemMerge -> P [xlabel="x",color="#2867b2"]; MemMerge -> B [xlabel="default",color="#2867b2"]; + MemMerge [shape=octagon style="filled" fillcolor="#dcecff"]; + Left [shape=octagon style="filled" fillcolor="#dcecff"]; + Right [shape=octagon style="filled" fillcolor="#dcecff"]; + Region [shape=trapezium style="filled" fillcolor="#fff1c4"]; } diff --git a/chapter10b/docs/example2b.svg b/chapter10b/docs/example2b.svg index 4e0616f1..cb10b90b 100644 --- a/chapter10b/docs/example2b.svg +++ b/chapter10b/docs/example2b.svg @@ -4,98 +4,98 @@ <!-- Generated by graphviz version 12.2.0 (20241103.1931) --> <!-- Title: Memory Pages: 1 --> -<svg width="456pt" height="170pt" - viewBox="0.00 0.00 455.75 170.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 166)"> +<svg width="517pt" height="166pt" + viewBox="0.00 0.00 516.68 166.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 162)"> <title>Memory</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-166 451.75,-166 451.75,4 -4,4"/> +<polygon fill="#fafbfc" stroke="none" points="-4,4 -4,-162 512.68,-162 512.68,4 -4,4"/> <!-- P --> <g id="node1" class="node"> <title>P</title> -<polygon fill="none" stroke="black" points="249.12,-67 169.38,-67 169.38,-31 249.12,-31 249.12,-67"/> -<text text-anchor="middle" x="209.25" y="-43.95" font-family="Times New Roman,serif" font-size="14.00">MemPhi(x)</text> +<polygon fill="#f5e4fa" stroke="#758191" points="305.65,-109 278.57,-127 224.41,-127 197.33,-109 224.41,-91 278.57,-91 305.65,-109"/> +<text text-anchor="middle" x="251.49" y="-104.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">MemPhi(x)</text> </g> <!-- Left --> <g id="node3" class="node"> <title>Left</title> -<polygon fill="none" stroke="black" points="54.5,-102 0.5,-102 0.5,-66 54.5,-66 54.5,-102"/> -<text text-anchor="middle" x="27.5" y="-78.95" font-family="Times New Roman,serif" font-size="14.00">Left</text> +<polygon fill="#dcecff" stroke="#758191" points="76.47,-132.54 76.47,-147.46 60.65,-158 38.29,-158 22.47,-147.46 22.47,-132.54 38.29,-122 60.65,-122 76.47,-132.54"/> +<text text-anchor="middle" x="49.47" y="-135.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Left</text> </g> <!-- P->Left --> <g id="edge1" class="edge"> <title>P->Left</title> -<path fill="none" stroke="blue" d="M169.09,-45.11C141.55,-43.68 104.19,-44.4 73,-54.5 68.76,-55.87 64.54,-57.77 60.48,-59.95"/> -<polygon fill="blue" stroke="blue" points="58.85,-56.85 52.11,-65.02 62.48,-62.84 58.85,-56.85"/> -<text text-anchor="middle" x="90.62" y="-57.7" font-family="Times New Roman,serif" font-size="14.00">slice x</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M206.74,-115.75C144.8,-115.75 40.47,-115.75 40.47,-115.75 40.47,-115.75 35.19,-115.75 35.19,-115.75"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="32.45,-116.37 38.95,-119.93 36.09,-113.09 32.45,-116.37"/> +<text text-anchor="middle" x="108.21" y="-107.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">slice x</text> </g> <!-- Right --> <g id="node4" class="node"> <title>Right</title> -<polygon fill="none" stroke="black" points="54.5,-162 0.5,-162 0.5,-126 54.5,-126 54.5,-162"/> -<text text-anchor="middle" x="27.5" y="-138.95" font-family="Times New Roman,serif" font-size="14.00">Right</text> +<polygon fill="#dcecff" stroke="#758191" points="80.11,-71.54 80.11,-86.46 62.16,-97 36.78,-97 18.84,-86.46 18.84,-71.54 36.78,-61 62.16,-61 80.11,-71.54"/> +<text text-anchor="middle" x="49.47" y="-74.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Right</text> </g> <!-- P->Right --> <g id="edge2" class="edge"> <title>P->Right</title> -<path fill="none" stroke="blue" d="M168.93,-64.2C141.32,-75.51 103.94,-92.12 73,-110.5 68.67,-113.07 64.27,-115.98 59.99,-118.98"/> -<polygon fill="blue" stroke="blue" points="58.15,-115.99 52.15,-124.72 62.29,-121.64 58.15,-115.99"/> -<text text-anchor="middle" x="90.62" y="-113.7" font-family="Times New Roman,serif" font-size="14.00">slice x</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M197.21,-109.5C140.12,-109.5 58.47,-109.5 58.47,-109.5 58.47,-109.5 67.74,-109.5 67.74,-109.5"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="66.06,-103.3 59.86,-99.25 62.18,-106.29 66.06,-103.3"/> +<text text-anchor="middle" x="135.96" y="-100.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">slice x</text> </g> <!-- Region --> <g id="node5" class="node"> <title>Region</title> -<polygon fill="none" stroke="black" points="55,-36 0,-36 0,0 55,0 55,-36"/> -<text text-anchor="middle" x="27.5" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Region</text> +<polygon fill="#fff1c4" stroke="#758191" points="78.36,-36 20.58,-36 0,0 98.94,0 78.36,-36"/> +<text text-anchor="middle" x="49.47" y="-13.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Region</text> </g> <!-- P->Region --> <g id="edge5" class="edge"> <title>P->Region</title> -<path fill="none" stroke="black" stroke-dasharray="5,2" d="M171.76,-30.51C153.24,-22.15 130.1,-13.21 108.25,-9 94.7,-6.39 79.71,-7.15 66.41,-9.05"/> -<polygon fill="black" stroke="black" points="66,-5.57 56.73,-10.71 67.18,-12.47 66,-5.57"/> +<path fill="none" stroke="#9396a3" stroke-width="1.5" stroke-dasharray="5,2" d="M205.5,-103.25C156.65,-103.25 86.38,-103.25 86.38,-103.25 86.38,-103.25 95.66,-103.25 95.66,-103.25"/> +<polygon fill="#9396a3" stroke="#9396a3" stroke-width="1.5" points="89.88,-31.51 86.64,-24.84 85.01,-32.07 89.88,-31.51"/> </g> <!-- B --> <g id="node2" class="node"> <title>B</title> -<polygon fill="none" stroke="black" points="292.25,-132 126.25,-132 126.25,-96 292.25,-96 292.25,-132"/> -<text text-anchor="middle" x="209.25" y="-108.95" font-family="Times New Roman,serif" font-size="14.00">BulkMemPhi(All except x)</text> +<polygon fill="#f5e4fa" stroke="#758191" points="364.04,-48 307.77,-66 195.22,-66 138.94,-48 195.22,-30 307.77,-30 364.04,-48"/> +<text text-anchor="middle" x="251.49" y="-43.73" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">BulkMemPhi(All except x)</text> </g> <!-- B->Left --> <g id="edge3" class="edge"> <title>B->Left</title> -<path fill="none" stroke="black" d="M126.03,-119C108.27,-118.2 89.8,-115.9 73,-111 69.91,-110.1 66.82,-108.93 63.78,-107.57"/> -<polygon fill="black" stroke="black" points="65.62,-104.58 55.13,-103.12 62.42,-110.81 65.62,-104.58"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M177.87,-60.74C177.87,-86.54 177.87,-142.5 177.87,-142.5 177.87,-142.5 85.97,-142.5 85.97,-142.5"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="85.97,-140.05 78.97,-142.5 85.97,-144.95 85.97,-140.05"/> </g> <!-- B->Right --> <g id="edge4" class="edge"> <title>B->Right</title> -<path fill="none" stroke="black" d="M126,-127.73C104.92,-131.25 83.28,-134.86 65.75,-137.78"/> -<polygon fill="black" stroke="black" points="65.66,-134.25 56.37,-139.35 66.81,-141.15 65.66,-134.25"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M158.4,-54.74C158.4,-65.35 158.4,-84.75 158.4,-84.75 158.4,-84.75 89.67,-84.75 89.67,-84.75"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="89.67,-82.3 82.67,-84.75 89.67,-87.2 89.67,-82.3"/> </g> <!-- B->Region --> <g id="edge6" class="edge"> <title>B->Region</title> -<path fill="none" stroke="black" stroke-dasharray="5,2" d="M167.07,-95.69C153.92,-89.64 139.38,-82.73 126.25,-76 102.07,-63.61 96.34,-59.9 73,-46 70.37,-44.43 67.67,-42.8 64.95,-41.14"/> -<polygon fill="black" stroke="black" points="66.83,-38.18 56.48,-35.89 63.14,-44.13 66.83,-38.18"/> +<path fill="none" stroke="#9396a3" stroke-width="1.5" stroke-dasharray="5,2" d="M139.03,-48.5C112.95,-48.5 92.66,-48.5 92.66,-48.5 92.66,-48.5 101.93,-48.5 101.93,-48.5"/> +<polygon fill="#9396a3" stroke="#9396a3" stroke-width="1.5" points="97.71,-26.24 93.33,-20.26 93.02,-27.67 97.71,-26.24"/> </g> <!-- MemMerge --> <g id="node6" class="node"> <title>MemMerge</title> -<polygon fill="none" stroke="black" points="447.75,-94 365.75,-94 365.75,-58 447.75,-58 447.75,-94"/> -<text text-anchor="middle" x="406.75" y="-70.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text> +<polygon fill="#dcecff" stroke="#758191" points="508.68,-70.54 508.68,-85.46 478.03,-96 434.69,-96 404.04,-85.46 404.04,-70.54 434.69,-60 478.03,-60 508.68,-70.54"/> +<text text-anchor="middle" x="456.36" y="-73.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">MemMerge</text> </g> <!-- MemMerge->P --> <g id="edge7" class="edge"> <title>MemMerge->P</title> -<path fill="none" stroke="blue" d="M365.39,-64.23C359.51,-62.81 353.5,-61.5 347.75,-60.5 319.17,-55.53 286.87,-52.69 260.76,-51.07"/> -<polygon fill="blue" stroke="blue" points="261.3,-47.6 251.11,-50.52 260.9,-54.59 261.3,-47.6"/> -<text text-anchor="middle" x="329" y="-63.7" font-family="Times New Roman,serif" font-size="14.00">x</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M403.6,-78.5C342.9,-78.5 251.49,-78.5 251.49,-78.5 251.49,-78.5 251.49,-81.28 251.49,-81.28"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="249.04,-81.28 251.49,-88.28 253.94,-81.28 249.04,-81.28"/> +<text text-anchor="middle" x="328.4" y="-69.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">x</text> </g> <!-- MemMerge->B --> <g id="edge8" class="edge"> <title>MemMerge->B</title> -<path fill="none" stroke="black" d="M365.72,-83.78C347.65,-87.29 325.5,-91.6 303.63,-95.85"/> -<polygon fill="black" stroke="black" points="303.23,-92.36 294.08,-97.71 304.56,-99.23 303.23,-92.36"/> -<text text-anchor="middle" x="329" y="-97.06" font-family="Times New Roman,serif" font-size="14.00">default</text> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M403.77,-72.25C370.93,-72.25 334.85,-72.25 334.85,-72.25 334.85,-72.25 334.85,-66.85 334.85,-66.85"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="337.3,-66.85 334.85,-59.85 332.4,-66.85 337.3,-66.85"/> +<text text-anchor="middle" x="380.49" y="-63.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">default</text> </g> </g> </svg> diff --git a/chapter10b/docs/example2c.gv b/chapter10b/docs/example2c.gv index 4fae3bba..b32d186d 100644 --- a/chapter10b/docs/example2c.gv +++ b/chapter10b/docs/example2c.gv @@ -1,10 +1,15 @@ digraph Memory { + // IR styles match graph/web/render.js; arrows are use -> definition. + graph [bgcolor="#fafbfc" fontname="Helvetica" nodesep=0.35 ranksep=0.55 splines=ortho]; + node [fontname="Helvetica" fontsize=12 color="#758191" fontcolor="#152330" shape=box style="rounded,filled" fillcolor="#edf3f7"]; + edge [fontname="Helvetica" fontsize=9 color="#536477" fontcolor="#364352" arrowsize=0.7 penwidth=1.5]; + rankdir=RL; - node [shape=box]; - M [label="Prior x memory"]; - L [label="Load p.x"]; - S [label="Store p.x"]; - L -> M [color=blue]; S -> M [color=blue]; - S -> L [style=dashed,label="execute load first"]; - Y [label="Store p.y: independent"]; + + M [label="Prior x memory" shape=octagon style="filled" fillcolor="#dcecff"]; + L [label="Load p.x" shape=box style="rounded,filled" fillcolor="#edf3f7"]; + S [label="Store p.x" shape=octagon style="filled" fillcolor="#dcecff"]; + L -> M [color="#2867b2"]; S -> M [color="#2867b2"]; + S -> L [style=dashed,xlabel="execute load first"]; + Y [label="Store p.y: independent" shape=octagon style="filled" fillcolor="#dcecff"]; } diff --git a/chapter10b/docs/example2c.svg b/chapter10b/docs/example2c.svg index 8249d677..531fabfe 100644 --- a/chapter10b/docs/example2c.svg +++ b/chapter10b/docs/example2c.svg @@ -4,53 +4,53 @@ <!-- Generated by graphviz version 12.2.0 (20241103.1931) --> <!-- Title: Memory Pages: 1 --> -<svg width="482pt" height="121pt" - viewBox="0.00 0.00 482.25 121.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 117)"> +<svg width="470pt" height="133pt" + viewBox="0.00 0.00 469.52 133.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 129)"> <title>Memory</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-117 478.25,-117 478.25,4 -4,4"/> +<polygon fill="#fafbfc" stroke="none" points="-4,4 -4,-129 465.52,-129 465.52,4 -4,4"/> <!-- M --> <g id="node1" class="node"> <title>M</title> -<polygon fill="none" stroke="black" points="103.75,-59 0,-59 0,-23 103.75,-23 103.75,-59"/> -<text text-anchor="middle" x="51.88" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Prior x memory</text> +<polygon fill="#dcecff" stroke="#758191" points="132.52,-38.54 132.52,-53.46 93.71,-64 38.81,-64 0,-53.46 0,-38.54 38.81,-28 93.71,-28 132.52,-38.54"/> +<text text-anchor="middle" x="66.26" y="-41.73" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Prior x memory</text> </g> <!-- L --> <g id="node2" class="node"> <title>L</title> -<polygon fill="none" stroke="black" points="205.5,-36 140.75,-36 140.75,0 205.5,0 205.5,-36"/> -<text text-anchor="middle" x="173.12" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text> +<path fill="#edf3f7" stroke="#758191" d="M222.27,-36C222.27,-36 184.52,-36 184.52,-36 178.52,-36 172.52,-30 172.52,-24 172.52,-24 172.52,-12 172.52,-12 172.52,-6 178.52,0 184.52,0 184.52,0 222.27,0 222.27,0 228.27,0 234.27,-6 234.27,-12 234.27,-12 234.27,-24 234.27,-24 234.27,-30 228.27,-36 222.27,-36"/> +<text text-anchor="middle" x="203.4" y="-13.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Load p.x</text> </g> <!-- L->M --> <g id="edge1" class="edge"> <title>L->M</title> -<path fill="none" stroke="blue" d="M140.48,-24.1C132.62,-25.62 123.92,-27.3 115.15,-28.99"/> -<polygon fill="blue" stroke="blue" points="114.69,-25.51 105.54,-30.84 116.02,-32.39 114.69,-25.51"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M172.28,-32C172.28,-32 119.52,-32 119.52,-32"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="119.52,-29.55 112.52,-32 119.52,-34.45 119.52,-29.55"/> </g> <!-- S --> <g id="node3" class="node"> <title>S</title> -<polygon fill="none" stroke="black" points="437.5,-59 372,-59 372,-23 437.5,-23 437.5,-59"/> -<text text-anchor="middle" x="404.75" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x</text> +<polygon fill="#dcecff" stroke="#758191" points="411.44,-38.54 411.44,-53.46 385.93,-64 349.86,-64 324.36,-53.46 324.36,-38.54 349.86,-28 385.93,-28 411.44,-38.54"/> +<text text-anchor="middle" x="367.9" y="-41.73" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Store p.x</text> </g> <!-- S->M --> <g id="edge2" class="edge"> <title>S->M</title> -<path fill="none" stroke="blue" d="M371.77,-45.13C355.48,-47.03 335.34,-49.06 317.25,-50 248.24,-53.58 169.03,-49.84 115.44,-46.15"/> -<polygon fill="blue" stroke="blue" points="115.81,-42.67 105.58,-45.45 115.31,-49.65 115.81,-42.67"/> +<path fill="none" stroke="#2867b2" stroke-width="1.5" d="M324.04,-50C324.04,-50 142.29,-50 142.29,-50"/> +<polygon fill="#2867b2" stroke="#2867b2" stroke-width="1.5" points="142.29,-47.55 135.29,-50 142.29,-52.45 142.29,-47.55"/> </g> <!-- S->L --> <g id="edge3" class="edge"> <title>S->L</title> -<path fill="none" stroke="black" stroke-dasharray="5,2" d="M371.82,-37.8C331.55,-33.77 262.15,-26.82 217.21,-22.32"/> -<polygon fill="black" stroke="black" points="217.59,-18.84 207.29,-21.32 216.89,-25.8 217.59,-18.84"/> -<text text-anchor="middle" x="270.38" y="-35.44" font-family="Times New Roman,serif" font-size="14.00">execute load first</text> +<path fill="none" stroke="#536477" stroke-width="1.5" stroke-dasharray="5,2" d="M339.24,-32C339.24,-32 243.79,-32 243.79,-32"/> +<polygon fill="#536477" stroke="#536477" stroke-width="1.5" points="243.79,-29.55 236.79,-32 243.79,-34.45 243.79,-29.55"/> +<text text-anchor="middle" x="257.02" y="-33.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#364352">execute load first</text> </g> <!-- Y --> <g id="node4" class="node"> <title>Y</title> -<polygon fill="none" stroke="black" points="474.25,-113 335.25,-113 335.25,-77 474.25,-77 474.25,-113"/> -<text text-anchor="middle" x="404.75" y="-89.95" font-family="Times New Roman,serif" font-size="14.00">Store p.y: independent</text> +<polygon fill="#dcecff" stroke="#758191" points="461.52,-99.54 461.52,-114.46 406.68,-125 329.12,-125 274.27,-114.46 274.27,-99.54 329.12,-89 406.68,-89 461.52,-99.54"/> +<text text-anchor="middle" x="367.9" y="-102.72" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#152330">Store p.y: independent</text> </g> </g> </svg> diff --git a/chapter10b/docs/lattice.gv b/chapter10b/docs/lattice.gv index f9fb2b09..a37a1738 100644 --- a/chapter10b/docs/lattice.gv +++ b/chapter10b/docs/lattice.gv @@ -69,7 +69,7 @@ digraph Lattice { STRUCT_BOT [label="⊥:struct\n[struct bottom]"]; STRUCT_PERSON [label="Person\nage: int", shape=box]; STRUCT_S1 [label="s1\nx: int", shape=box]; - STRUCT_S2 [label="s2\nx: int, y: *s1", shape=box]; + STRUCT_S2 [label="s2\nx: int, y: int", shape=box]; STRUCT_MORE [label="…", shape=box]; {rank=same; STRUCT_PERSON; STRUCT_S1; STRUCT_S2; STRUCT_MORE;} STRUCT_PERSON -> STRUCT_S1 -> STRUCT_S2 -> STRUCT_MORE [style=invis]; diff --git a/chapter10b/docs/lattice.svg b/chapter10b/docs/lattice.svg index a11452b9..ff554601 100644 --- a/chapter10b/docs/lattice.svg +++ b/chapter10b/docs/lattice.svg @@ -4,11 +4,11 @@ <!-- Generated by graphviz version 12.2.0 (20241103.1931) --> <!-- Title: Lattice Pages: 1 --> -<svg width="1827pt" height="533pt" - viewBox="0.00 0.00 1827.00 533.45" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<svg width="1823pt" height="533pt" + viewBox="0.00 0.00 1823.00 533.45" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 529.45)"> <title>Lattice</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-529.45 1823,-529.45 1823,4 -4,4"/> +<polygon fill="white" stroke="none" points="-4,4 -4,-529.45 1819,-529.45 1819,4 -4,4"/> <g id="clust1" class="cluster"> <title>cluster_control</title> <polygon fill="none" stroke="#cccccc" points="8,-85.99 8,-454.71 98,-454.71 98,-85.99 8,-85.99"/> @@ -26,21 +26,21 @@ </g> <g id="clust13" class="cluster"> <title>cluster_struct</title> -<polygon fill="none" stroke="#cccccc" points="901,-75 901,-481.45 1237,-481.45 1237,-75 901,-75"/> -<text text-anchor="middle" x="1069" y="-464.15" font-family="Arial" font-size="14.00">Struct</text> -<text text-anchor="middle" x="1069" y="-448.4" font-family="Arial" font-size="14.00">named collection of named scalar types</text> +<polygon fill="none" stroke="#cccccc" points="901,-75 901,-481.45 1233,-481.45 1233,-75 901,-75"/> +<text text-anchor="middle" x="1067" y="-464.15" font-family="Arial" font-size="14.00">Struct</text> +<text text-anchor="middle" x="1067" y="-448.4" font-family="Arial" font-size="14.00">named collection of named scalar types</text> </g> <g id="clust17" class="cluster"> <title>cluster_memory</title> -<polygon fill="none" stroke="#cccccc" points="1245,-85.99 1245,-470.46 1527,-470.46 1527,-85.99 1245,-85.99"/> -<text text-anchor="middle" x="1386" y="-453.16" font-family="Arial" font-size="14.00">Memory</text> -<text text-anchor="middle" x="1386" y="-437.41" font-family="Arial" font-size="14.00">precise alias slices</text> +<polygon fill="none" stroke="#cccccc" points="1241,-85.99 1241,-470.46 1523,-470.46 1523,-85.99 1241,-85.99"/> +<text text-anchor="middle" x="1382" y="-453.16" font-family="Arial" font-size="14.00">Memory</text> +<text text-anchor="middle" x="1382" y="-437.41" font-family="Arial" font-size="14.00">precise alias slices</text> </g> <g id="clust21" class="cluster"> <title>cluster_tuple</title> -<polygon fill="none" stroke="#cccccc" points="1535,-85.99 1535,-470.46 1811,-470.46 1811,-85.99 1535,-85.99"/> -<text text-anchor="middle" x="1673" y="-453.16" font-family="Arial" font-size="14.00">Tuple</text> -<text text-anchor="middle" x="1673" y="-437.41" font-family="Arial" font-size="14.00">collection of types</text> +<polygon fill="none" stroke="#cccccc" points="1531,-85.99 1531,-470.46 1807,-470.46 1807,-85.99 1531,-85.99"/> +<text text-anchor="middle" x="1669" y="-453.16" font-family="Arial" font-size="14.00">Tuple</text> +<text text-anchor="middle" x="1669" y="-437.41" font-family="Arial" font-size="14.00">collection of types</text> </g> <!-- TOP --> <g id="node1" class="node"> @@ -101,26 +101,26 @@ <!-- MEM_TOP --> <g id="node26" class="node"> <title>MEM_TOP</title> -<ellipse fill="#00008b" stroke="black" cx="1351" cy="-404.96" rx="44.7" ry="18"/> -<text text-anchor="middle" x="1351" y="-400.86" font-family="DejaVu Sans" font-size="13.00" fill="white">⊤:mem</text> +<ellipse fill="#00008b" stroke="black" cx="1347" cy="-404.96" rx="44.7" ry="18"/> +<text text-anchor="middle" x="1347" y="-400.86" font-family="DejaVu Sans" font-size="13.00" fill="white">⊤:mem</text> </g> <!-- TOP->MEM_TOP --> <g id="edge64" class="edge"> <title>TOP->MEM_TOP</title> -<path fill="none" stroke="#555555" d="M914.33,-506.36C986.5,-505.84 1180.8,-502.47 1241,-481.45 1274.58,-469.72 1307.45,-444.9 1328.39,-426.91"/> -<polygon fill="#555555" stroke="#555555" points="1329.69,-428.56 1332.83,-423.03 1326.93,-425.4 1329.69,-428.56"/> +<path fill="none" stroke="#555555" d="M914.28,-506.34C985.84,-505.75 1177.55,-502.23 1237,-481.45 1270.57,-469.71 1303.45,-444.89 1324.38,-426.91"/> +<polygon fill="#555555" stroke="#555555" points="1325.69,-428.56 1328.82,-423.03 1322.92,-425.39 1325.69,-428.56"/> </g> <!-- TUPLE_TOP --> <g id="node31" class="node"> <title>TUPLE_TOP</title> -<ellipse fill="#ffc0cb" stroke="black" cx="1588" cy="-404.96" rx="44.7" ry="18"/> -<text text-anchor="middle" x="1588" y="-400.86" font-family="DejaVu Sans" font-size="13.00">⊤:tuple</text> +<ellipse fill="#ffc0cb" stroke="black" cx="1584" cy="-404.96" rx="44.7" ry="18"/> +<text text-anchor="middle" x="1584" y="-400.86" font-family="DejaVu Sans" font-size="13.00">⊤:tuple</text> </g> <!-- TOP->TUPLE_TOP --> <g id="edge65" class="edge"> <title>TOP->TUPLE_TOP</title> -<path fill="none" stroke="#555555" d="M914.36,-506.76C1030.08,-507.88 1475.84,-510.27 1531,-481.45 1552.39,-470.27 1568.01,-447.05 1577.43,-429.3"/> -<polygon fill="#555555" stroke="#555555" points="1579.08,-430.68 1579.93,-424.38 1575.34,-428.78 1579.08,-430.68"/> +<path fill="none" stroke="#555555" d="M914.19,-506.75C1029.19,-507.83 1472.18,-510.1 1527,-481.45 1548.39,-470.27 1564,-447.05 1573.43,-429.3"/> +<polygon fill="#555555" stroke="#555555" points="1575.08,-430.68 1575.93,-424.38 1571.33,-428.78 1575.08,-430.68"/> </g> <!-- BOT --> <g id="node2" class="node"> @@ -416,27 +416,27 @@ <!-- STRUCT_S2 --> <g id="node24" class="node"> <title>STRUCT_S2</title> -<polygon fill="#90ee90" stroke="black" points="1159.12,-237.47 1062.88,-237.47 1062.88,-196.47 1159.12,-196.47 1159.12,-237.47"/> -<text text-anchor="middle" x="1111" y="-221.12" font-family="DejaVu Sans" font-size="13.00">s2</text> -<text text-anchor="middle" x="1111" y="-204.62" font-family="DejaVu Sans" font-size="13.00">x: int, y: *s1</text> +<polygon fill="#90ee90" stroke="black" points="1154.88,-237.47 1063.12,-237.47 1063.12,-196.47 1154.88,-196.47 1154.88,-237.47"/> +<text text-anchor="middle" x="1109" y="-221.12" font-family="DejaVu Sans" font-size="13.00">s2</text> +<text text-anchor="middle" x="1109" y="-204.62" font-family="DejaVu Sans" font-size="13.00">x: int, y: int</text> </g> <!-- STRUCT_TOP->STRUCT_S2 --> <g id="edge38" class="edge"> <title>STRUCT_TOP->STRUCT_S2</title> -<path fill="none" stroke="#555555" d="M1033.43,-376.51C1050.81,-340.99 1080.89,-279.5 1098.04,-244.46"/> -<polygon fill="#555555" stroke="#555555" points="1099.88,-245.49 1100.63,-239.17 1096.1,-243.64 1099.88,-245.49"/> +<path fill="none" stroke="#555555" d="M1033.32,-376.11C1050.37,-340.49 1079.69,-279.23 1096.39,-244.33"/> +<polygon fill="#555555" stroke="#555555" points="1098.2,-245.4 1098.9,-239.09 1094.41,-243.59 1098.2,-245.4"/> </g> <!-- STRUCT_MORE --> <g id="node25" class="node"> <title>STRUCT_MORE</title> -<polygon fill="#90ee90" stroke="black" points="1229,-234.97 1175,-234.97 1175,-198.97 1229,-198.97 1229,-234.97"/> -<text text-anchor="middle" x="1202" y="-212.87" font-family="DejaVu Sans" font-size="13.00">…</text> +<polygon fill="#90ee90" stroke="black" points="1225,-234.97 1171,-234.97 1171,-198.97 1225,-198.97 1225,-234.97"/> +<text text-anchor="middle" x="1198" y="-212.87" font-family="DejaVu Sans" font-size="13.00">…</text> </g> <!-- STRUCT_TOP->STRUCT_MORE --> <g id="edge39" class="edge"> <title>STRUCT_TOP->STRUCT_MORE</title> -<path fill="none" stroke="#555555" d="M1045.31,-378.1C1081.09,-341.53 1145.91,-275.3 1179.87,-240.58"/> -<polygon fill="#555555" stroke="#555555" points="1181.3,-242.13 1183.99,-236.38 1178.3,-239.19 1181.3,-242.13"/> +<path fill="none" stroke="#555555" d="M1044.75,-378.1C1079.75,-341.53 1143.14,-275.3 1176.36,-240.58"/> +<polygon fill="#555555" stroke="#555555" points="1177.75,-242.17 1180.38,-236.39 1174.71,-239.27 1177.75,-242.17"/> </g> <!-- STRUCT_TOP->MEM_TOP --> <!-- STRUCT_BOT --> @@ -469,152 +469,152 @@ <!-- STRUCT_S2->STRUCT_BOT --> <g id="edge42" class="edge"> <title>STRUCT_S2->STRUCT_BOT</title> -<path fill="none" stroke="#555555" d="M1093.45,-196.12C1080.83,-181.83 1063.53,-162.25 1048.88,-145.68"/> -<polygon fill="#555555" stroke="#555555" points="1050.58,-144.42 1045.03,-141.32 1047.43,-147.2 1050.58,-144.42"/> +<path fill="none" stroke="#555555" d="M1091.84,-196.12C1079.5,-181.83 1062.57,-162.25 1048.25,-145.68"/> +<polygon fill="#555555" stroke="#555555" points="1050,-144.5 1044.49,-141.33 1046.82,-147.24 1050,-144.5"/> </g> <!-- STRUCT_S2->STRUCT_MORE --> <!-- STRUCT_MORE->STRUCT_BOT --> <g id="edge43" class="edge"> <title>STRUCT_MORE->STRUCT_BOT</title> -<path fill="none" stroke="#555555" d="M1181.79,-198.68C1177.07,-194.96 1171.97,-191.19 1167,-187.98 1138.36,-169.5 1104.6,-152 1076.65,-138.56"/> -<polygon fill="#555555" stroke="#555555" points="1077.74,-136.75 1071.42,-136.06 1075.93,-140.54 1077.74,-136.75"/> +<path fill="none" stroke="#555555" d="M1177.76,-198.72C1173.05,-195 1167.95,-191.22 1163,-187.98 1135.19,-169.81 1102.49,-152.39 1075.38,-138.93"/> +<polygon fill="#555555" stroke="#555555" points="1076.64,-137.21 1070.33,-136.44 1074.78,-140.97 1076.64,-137.21"/> </g> <!-- MEM_ALIAS2 --> <g id="node28" class="node"> <title>MEM_ALIAS2</title> -<ellipse fill="#00008b" stroke="black" cx="1298" cy="-216.97" rx="45.21" ry="18"/> -<text text-anchor="middle" x="1298" y="-212.87" font-family="DejaVu Sans" font-size="13.00" fill="white">MEM#2</text> +<ellipse fill="#00008b" stroke="black" cx="1294" cy="-216.97" rx="45.21" ry="18"/> +<text text-anchor="middle" x="1294" y="-212.87" font-family="DejaVu Sans" font-size="13.00" fill="white">MEM#2</text> </g> <!-- MEM_TOP->MEM_ALIAS2 --> <g id="edge46" class="edge"> <title>MEM_TOP->MEM_ALIAS2</title> -<path fill="none" stroke="#555555" d="M1346.11,-386.79C1336.64,-353.58 1315.8,-280.42 1304.92,-242.24"/> -<polygon fill="#555555" stroke="#555555" points="1306.96,-241.75 1303.29,-236.55 1302.92,-242.9 1306.96,-241.75"/> +<path fill="none" stroke="#555555" d="M1342.11,-386.79C1332.64,-353.58 1311.8,-280.42 1300.92,-242.24"/> +<polygon fill="#555555" stroke="#555555" points="1302.96,-241.75 1299.29,-236.55 1298.92,-242.9 1302.96,-241.75"/> </g> <!-- MEM_ALIAS3 --> <g id="node29" class="node"> <title>MEM_ALIAS3</title> -<ellipse fill="#00008b" stroke="black" cx="1404" cy="-216.97" rx="45.21" ry="18"/> -<text text-anchor="middle" x="1404" y="-212.87" font-family="DejaVu Sans" font-size="13.00" fill="white">MEM#3</text> +<ellipse fill="#00008b" stroke="black" cx="1400" cy="-216.97" rx="45.21" ry="18"/> +<text text-anchor="middle" x="1400" y="-212.87" font-family="DejaVu Sans" font-size="13.00" fill="white">MEM#3</text> </g> <!-- MEM_TOP->MEM_ALIAS3 --> <g id="edge47" class="edge"> <title>MEM_TOP->MEM_ALIAS3</title> -<path fill="none" stroke="#555555" d="M1355.89,-386.79C1365.36,-353.58 1386.2,-280.42 1397.08,-242.24"/> -<polygon fill="#555555" stroke="#555555" points="1399.08,-242.9 1398.71,-236.55 1395.04,-241.75 1399.08,-242.9"/> +<path fill="none" stroke="#555555" d="M1351.89,-386.79C1361.36,-353.58 1382.2,-280.42 1393.08,-242.24"/> +<polygon fill="#555555" stroke="#555555" points="1395.08,-242.9 1394.71,-236.55 1391.04,-241.75 1395.08,-242.9"/> </g> <!-- MEM_MORE --> <g id="node30" class="node"> <title>MEM_MORE</title> -<ellipse fill="#00008b" stroke="black" cx="1492" cy="-216.97" rx="27" ry="18"/> -<text text-anchor="middle" x="1492" y="-212.87" font-family="DejaVu Sans" font-size="13.00" fill="white">…</text> +<ellipse fill="#00008b" stroke="black" cx="1488" cy="-216.97" rx="27" ry="18"/> +<text text-anchor="middle" x="1488" y="-212.87" font-family="DejaVu Sans" font-size="13.00" fill="white">…</text> </g> <!-- MEM_TOP->MEM_MORE --> <g id="edge48" class="edge"> <title>MEM_TOP->MEM_MORE</title> -<path fill="none" stroke="#555555" d="M1363.51,-387.45C1389.1,-353.7 1447.4,-276.8 1475.82,-239.32"/> -<polygon fill="#555555" stroke="#555555" points="1477.25,-240.91 1479.2,-234.86 1473.9,-238.37 1477.25,-240.91"/> +<path fill="none" stroke="#555555" d="M1359.51,-387.45C1385.1,-353.7 1443.4,-276.8 1471.82,-239.32"/> +<polygon fill="#555555" stroke="#555555" points="1473.25,-240.91 1475.2,-234.86 1469.9,-238.37 1473.25,-240.91"/> </g> <!-- MEM_TOP->TUPLE_TOP --> <!-- MEM_BOT --> <g id="node27" class="node"> <title>MEM_BOT</title> -<ellipse fill="#00008b" stroke="black" cx="1351" cy="-111.99" rx="44.7" ry="18"/> -<text text-anchor="middle" x="1351" y="-107.89" font-family="DejaVu Sans" font-size="13.00" fill="white">⊥:mem</text> +<ellipse fill="#00008b" stroke="black" cx="1347" cy="-111.99" rx="44.7" ry="18"/> +<text text-anchor="middle" x="1347" y="-107.89" font-family="DejaVu Sans" font-size="13.00" fill="white">⊥:mem</text> </g> <!-- MEM_BOT->BOT --> <g id="edge70" class="edge"> <title>MEM_BOT->BOT</title> -<path fill="none" stroke="#555555" d="M1319.14,-99.06C1297.39,-91.29 1267.77,-81.43 1241,-75 1124.06,-46.89 982.06,-29.48 918.11,-22.5"/> -<polygon fill="#555555" stroke="#555555" points="918.4,-20.42 912.21,-21.87 917.95,-24.6 918.4,-20.42"/> +<path fill="none" stroke="#555555" d="M1315.14,-99.08C1293.38,-91.31 1263.76,-81.46 1237,-75 1121.65,-47.17 981.66,-29.67 918.21,-22.6"/> +<polygon fill="#555555" stroke="#555555" points="918.55,-20.52 912.36,-21.95 918.09,-24.7 918.55,-20.52"/> </g> <!-- MEM_ALIAS2->MEM_BOT --> <g id="edge49" class="edge"> <title>MEM_ALIAS2->MEM_BOT</title> -<path fill="none" stroke="#555555" d="M1306.75,-198.97C1315.5,-181.97 1329.02,-155.71 1338.81,-136.68"/> -<polygon fill="#555555" stroke="#555555" points="1340.66,-137.66 1341.54,-131.37 1336.93,-135.74 1340.66,-137.66"/> +<path fill="none" stroke="#555555" d="M1302.75,-198.97C1311.5,-181.97 1325.02,-155.71 1334.81,-136.68"/> +<polygon fill="#555555" stroke="#555555" points="1336.66,-137.66 1337.54,-131.37 1332.93,-135.74 1336.66,-137.66"/> </g> <!-- MEM_ALIAS2->MEM_ALIAS3 --> <!-- MEM_ALIAS3->MEM_BOT --> <g id="edge50" class="edge"> <title>MEM_ALIAS3->MEM_BOT</title> -<path fill="none" stroke="#555555" d="M1395.25,-198.97C1386.5,-181.97 1372.98,-155.71 1363.19,-136.68"/> -<polygon fill="#555555" stroke="#555555" points="1365.07,-135.74 1360.46,-131.37 1361.34,-137.66 1365.07,-135.74"/> +<path fill="none" stroke="#555555" d="M1391.25,-198.97C1382.5,-181.97 1368.98,-155.71 1359.19,-136.68"/> +<polygon fill="#555555" stroke="#555555" points="1361.07,-135.74 1356.46,-131.37 1357.34,-137.66 1361.07,-135.74"/> </g> <!-- MEM_ALIAS3->MEM_MORE --> <!-- MEM_MORE->MEM_BOT --> <g id="edge51" class="edge"> <title>MEM_MORE->MEM_BOT</title> -<path fill="none" stroke="#555555" d="M1475.42,-202.39C1469.65,-197.74 1463.09,-192.57 1457,-187.98 1430.93,-168.37 1400.47,-146.96 1378.9,-132.06"/> -<polygon fill="#555555" stroke="#555555" points="1380.17,-130.38 1374.03,-128.71 1377.78,-133.84 1380.17,-130.38"/> +<path fill="none" stroke="#555555" d="M1471.42,-202.39C1465.65,-197.74 1459.09,-192.57 1453,-187.98 1426.93,-168.37 1396.47,-146.96 1374.9,-132.06"/> +<polygon fill="#555555" stroke="#555555" points="1376.17,-130.38 1370.03,-128.71 1373.78,-133.84 1376.17,-130.38"/> </g> <!-- TUPLE1 --> <g id="node33" class="node"> <title>TUPLE1</title> -<polygon fill="#ffc0cb" stroke="black" points="1598.88,-328.97 1543.12,-328.97 1543.12,-292.97 1598.88,-292.97 1598.88,-328.97"/> -<text text-anchor="middle" x="1571" y="-306.87" font-family="DejaVu Sans" font-size="13.00">(type)</text> +<polygon fill="#ffc0cb" stroke="black" points="1594.88,-328.97 1539.12,-328.97 1539.12,-292.97 1594.88,-292.97 1594.88,-328.97"/> +<text text-anchor="middle" x="1567" y="-306.87" font-family="DejaVu Sans" font-size="13.00">(type)</text> </g> <!-- TUPLE_TOP->TUPLE1 --> <g id="edge54" class="edge"> <title>TUPLE_TOP->TUPLE1</title> -<path fill="none" stroke="#555555" d="M1584.8,-386.65C1582.19,-372.52 1578.47,-352.37 1575.54,-336.56"/> -<polygon fill="#555555" stroke="#555555" points="1577.61,-336.2 1574.46,-330.68 1573.48,-336.96 1577.61,-336.2"/> +<path fill="none" stroke="#555555" d="M1580.8,-386.65C1578.19,-372.52 1574.47,-352.37 1571.54,-336.56"/> +<polygon fill="#555555" stroke="#555555" points="1573.61,-336.2 1570.46,-330.68 1569.48,-336.96 1573.61,-336.2"/> </g> <!-- TUPLE2 --> <g id="node34" class="node"> <title>TUPLE2</title> -<polygon fill="#ffc0cb" stroke="black" points="1709,-328.97 1615,-328.97 1615,-292.97 1709,-292.97 1709,-328.97"/> -<text text-anchor="middle" x="1662" y="-306.87" font-family="DejaVu Sans" font-size="13.00">(type, type)</text> +<polygon fill="#ffc0cb" stroke="black" points="1705,-328.97 1611,-328.97 1611,-292.97 1705,-292.97 1705,-328.97"/> +<text text-anchor="middle" x="1658" y="-306.87" font-family="DejaVu Sans" font-size="13.00">(type, type)</text> </g> <!-- TUPLE_TOP->TUPLE2 --> <g id="edge55" class="edge"> <title>TUPLE_TOP->TUPLE2</title> -<path fill="none" stroke="#555555" d="M1601.23,-387.51C1613,-372.87 1630.35,-351.31 1643.5,-334.97"/> -<polygon fill="#555555" stroke="#555555" points="1645.06,-336.38 1647.18,-330.39 1641.79,-333.74 1645.06,-336.38"/> +<path fill="none" stroke="#555555" d="M1597.23,-387.51C1609,-372.87 1626.35,-351.31 1639.5,-334.97"/> +<polygon fill="#555555" stroke="#555555" points="1641.06,-336.38 1643.18,-330.39 1637.79,-333.74 1641.06,-336.38"/> </g> <!-- TUPLEN --> <g id="node35" class="node"> <title>TUPLEN</title> -<polygon fill="#ffc0cb" stroke="black" points="1802.75,-328.97 1725.25,-328.97 1725.25,-292.97 1802.75,-292.97 1802.75,-328.97"/> -<text text-anchor="middle" x="1764" y="-306.87" font-family="DejaVu Sans" font-size="13.00">(type, …)</text> +<polygon fill="#ffc0cb" stroke="black" points="1798.75,-328.97 1721.25,-328.97 1721.25,-292.97 1798.75,-292.97 1798.75,-328.97"/> +<text text-anchor="middle" x="1760" y="-306.87" font-family="DejaVu Sans" font-size="13.00">(type, …)</text> </g> <!-- TUPLE_TOP->TUPLEN --> <g id="edge56" class="edge"> <title>TUPLE_TOP->TUPLEN</title> -<path fill="none" stroke="#555555" d="M1614.35,-390.18C1643.39,-375.01 1690.42,-350.42 1724.01,-332.87"/> -<polygon fill="#555555" stroke="#555555" points="1724.85,-334.8 1729.2,-330.16 1722.91,-331.07 1724.85,-334.8"/> +<path fill="none" stroke="#555555" d="M1610.35,-390.18C1639.39,-375.01 1686.42,-350.42 1720.01,-332.87"/> +<polygon fill="#555555" stroke="#555555" points="1720.85,-334.8 1725.2,-330.16 1718.91,-331.07 1720.85,-334.8"/> </g> <!-- TUPLE_BOT --> <g id="node32" class="node"> <title>TUPLE_BOT</title> -<ellipse fill="#ffc0cb" stroke="black" cx="1625" cy="-111.99" rx="44.7" ry="18"/> -<text text-anchor="middle" x="1625" y="-107.89" font-family="DejaVu Sans" font-size="13.00">⊥:tuple</text> +<ellipse fill="#ffc0cb" stroke="black" cx="1621" cy="-111.99" rx="44.7" ry="18"/> +<text text-anchor="middle" x="1621" y="-107.89" font-family="DejaVu Sans" font-size="13.00">⊥:tuple</text> </g> <!-- TUPLE_BOT->BOT --> <g id="edge71" class="edge"> <title>TUPLE_BOT->BOT</title> -<path fill="none" stroke="#555555" d="M1596.44,-97.66C1578.14,-89.72 1553.65,-80.21 1531,-75 1301.56,-22.24 1015.96,-18.29 918.46,-18.63"/> -<polygon fill="#555555" stroke="#555555" points="918.73,-16.53 912.74,-18.66 918.75,-20.73 918.73,-16.53"/> +<path fill="none" stroke="#555555" d="M1592.44,-97.66C1574.14,-89.72 1549.65,-80.21 1527,-75 1299.48,-22.62 1016.37,-18.41 918.88,-18.65"/> +<polygon fill="#555555" stroke="#555555" points="918.88,-16.55 912.89,-18.68 918.89,-20.75 918.88,-16.55"/> </g> <!-- TUPLE1->TUPLE_BOT --> <g id="edge57" class="edge"> <title>TUPLE1->TUPLE_BOT</title> -<path fill="none" stroke="#555555" d="M1575.79,-292.49C1585.46,-257.21 1607.33,-177.44 1618.37,-137.19"/> -<polygon fill="#555555" stroke="#555555" points="1620.33,-137.95 1619.9,-131.61 1616.28,-136.84 1620.33,-137.95"/> +<path fill="none" stroke="#555555" d="M1571.79,-292.49C1581.46,-257.21 1603.33,-177.44 1614.37,-137.19"/> +<polygon fill="#555555" stroke="#555555" points="1616.33,-137.95 1615.9,-131.61 1612.28,-136.84 1616.33,-137.95"/> </g> <!-- TUPLE1->TUPLE2 --> <!-- TUPLE2->TUPLE_BOT --> <g id="edge58" class="edge"> <title>TUPLE2->TUPLE_BOT</title> -<path fill="none" stroke="#555555" d="M1658.72,-292.49C1652.12,-257.37 1637.24,-178.17 1629.65,-137.74"/> -<polygon fill="#555555" stroke="#555555" points="1631.73,-137.43 1628.56,-131.92 1627.6,-138.2 1631.73,-137.43"/> +<path fill="none" stroke="#555555" d="M1654.72,-292.49C1648.12,-257.37 1633.24,-178.17 1625.65,-137.74"/> +<polygon fill="#555555" stroke="#555555" points="1627.73,-137.43 1624.56,-131.92 1623.6,-138.2 1627.73,-137.43"/> </g> <!-- TUPLE2->TUPLEN --> <!-- TUPLEN->TUPLE_BOT --> <g id="edge59" class="edge"> <title>TUPLEN->TUPLE_BOT</title> -<path fill="none" stroke="#555555" d="M1751.66,-292.49C1726.44,-256.74 1668.97,-175.3 1640.95,-135.59"/> -<polygon fill="#555555" stroke="#555555" points="1642.76,-134.52 1637.59,-130.83 1639.33,-136.94 1642.76,-134.52"/> +<path fill="none" stroke="#555555" d="M1747.66,-292.49C1722.44,-256.74 1664.97,-175.3 1636.95,-135.59"/> +<polygon fill="#555555" stroke="#555555" points="1638.76,-134.52 1633.59,-130.83 1635.33,-136.94 1638.76,-134.52"/> </g> </g> </svg> |
