summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-29 10:10:53 -0700
committerCliff Click <cliffc@acm.org>2026-09-29 10:10:53 -0700
commitfa7d56f72455828826d0ab7e1c142ca814e6e2aa (patch)
tree28f0c310fdccc0df67678213d87c856e072d53f8
parente1bba17ff54400a34ede0eaacad863420d021119 (diff)
downloadSimple-fa7d56f72455828826d0ab7e1c142ca814e6e2aa.tar.gz
Simple-fa7d56f72455828826d0ab7e1c142ca814e6e2aa.zip
Reverse edges
-rw-r--r--chapter10a/README.md4
-rw-r--r--chapter10a/docs/example1.gv4
-rw-r--r--chapter10a/docs/example1.svg64
-rw-r--r--chapter10a/docs/example2a.gv4
-rw-r--r--chapter10a/docs/example2a.svg92
-rw-r--r--chapter10a/docs/example2b.gv4
-rw-r--r--chapter10a/docs/example2b.svg80
-rw-r--r--chapter10a/docs/example2c.gv4
-rw-r--r--chapter10a/docs/example2c.svg46
-rw-r--r--chapter10b/README.md2
-rw-r--r--chapter10b/docs/example1.gv6
-rw-r--r--chapter10b/docs/example1.svg84
-rw-r--r--chapter10b/docs/example2a.gv6
-rw-r--r--chapter10b/docs/example2a.svg82
-rw-r--r--chapter10b/docs/example2b.gv8
-rw-r--r--chapter10b/docs/example2b.svg136
-rw-r--r--chapter10b/docs/example2c.gv4
-rw-r--r--chapter10b/docs/example2c.svg50
18 files changed, 340 insertions, 340 deletions
diff --git a/chapter10a/README.md b/chapter10a/README.md
index 30db40d3..64600fa0 100644
--- a/chapter10a/README.md
+++ b/chapter10a/README.md
@@ -30,8 +30,8 @@ different fields are independent. Chapter 10b will remove it.
![One chain orders stores and loads](docs/example1.svg)
-These diagrams are schematic dependency graphs: arrows run from definitions to
-uses. Pointer and value inputs are omitted where they do not explain ordering.
+These diagrams are schematic dependency graphs: arrows run from uses to their
+definitions. Pointer and value inputs are omitted where they do not explain ordering.
| Node | Inputs | Result |
|---|---|---|
diff --git a/chapter10a/docs/example1.gv b/chapter10a/docs/example1.gv
index 38214174..e34c73ed 100644
--- a/chapter10a/docs/example1.gv
+++ b/chapter10a/docs/example1.gv
@@ -5,6 +5,6 @@ digraph Memory {
X [label="Store p.x = 3"];
Y [label="Store p.y = arg"];
L [label="Load p.x"];
- M0 -> X -> Y -> L [color=blue];
- Y -> Return [color=blue]; L -> Return;
+ L -> Y -> X -> M0 [color=blue];
+ Return -> Y [color=blue]; Return -> L;
}
diff --git a/chapter10a/docs/example1.svg b/chapter10a/docs/example1.svg
index 7ae4b560..c0668ce3 100644
--- a/chapter10a/docs/example1.svg
+++ b/chapter10a/docs/example1.svg
@@ -12,62 +12,62 @@
<!-- M0 -->
<g id="node1" class="node">
<title>M0</title>
-<polygon fill="none" stroke="black" points="98.5,-36 0,-36 0,0 98.5,0 98.5,-36"/>
-<text text-anchor="middle" x="49.25" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Initial memory</text>
+<polygon fill="none" stroke="black" points="547.75,-59 449.25,-59 449.25,-23 547.75,-23 547.75,-59"/>
+<text text-anchor="middle" x="498.5" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Initial memory</text>
</g>
<!-- X -->
<g id="node2" class="node">
<title>X</title>
-<polygon fill="none" stroke="black" points="222.5,-36 134.5,-36 134.5,0 222.5,0 222.5,-36"/>
-<text text-anchor="middle" x="178.5" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x = 3</text>
+<polygon fill="none" stroke="black" points="413.25,-59 325.25,-59 325.25,-23 413.25,-23 413.25,-59"/>
+<text text-anchor="middle" x="369.25" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x = 3</text>
</g>
-<!-- M0&#45;&gt;X -->
-<g id="edge1" class="edge">
-<title>M0&#45;&gt;X</title>
-<path fill="none" stroke="blue" d="M98.72,-18C106.55,-18 114.71,-18 122.68,-18"/>
-<polygon fill="blue" stroke="blue" points="122.65,-21.5 132.65,-18 122.65,-14.5 122.65,-21.5"/>
+<!-- X&#45;&gt;M0 -->
+<g id="edge3" class="edge">
+<title>X&#45;&gt;M0</title>
+<path fill="none" stroke="blue" d="M413.69,-41C421.42,-41 429.59,-41 437.69,-41"/>
+<polygon fill="blue" stroke="blue" points="437.51,-44.5 447.51,-41 437.51,-37.5 437.51,-44.5"/>
</g>
<!-- Y -->
<g id="node3" class="node">
<title>Y</title>
-<polygon fill="none" stroke="black" points="357,-36 258.5,-36 258.5,0 357,0 357,-36"/>
-<text text-anchor="middle" x="307.75" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Store p.y = arg</text>
+<polygon fill="none" stroke="black" points="289.25,-59 190.75,-59 190.75,-23 289.25,-23 289.25,-59"/>
+<text text-anchor="middle" x="240" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Store p.y = arg</text>
</g>
-<!-- X&#45;&gt;Y -->
+<!-- Y&#45;&gt;X -->
<g id="edge2" class="edge">
-<title>X&#45;&gt;Y</title>
-<path fill="none" stroke="blue" d="M222.94,-18C230.67,-18 238.84,-18 246.94,-18"/>
-<polygon fill="blue" stroke="blue" points="246.76,-21.5 256.76,-18 246.76,-14.5 246.76,-21.5"/>
+<title>Y&#45;&gt;X</title>
+<path fill="none" stroke="blue" d="M289.47,-41C297.3,-41 305.46,-41 313.43,-41"/>
+<polygon fill="blue" stroke="blue" points="313.4,-44.5 323.4,-41 313.4,-37.5 313.4,-44.5"/>
</g>
<!-- L -->
<g id="node4" class="node">
<title>L</title>
-<polygon fill="none" stroke="black" points="457.75,-59 393,-59 393,-23 457.75,-23 457.75,-59"/>
-<text text-anchor="middle" x="425.38" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text>
+<polygon fill="none" stroke="black" points="154.75,-36 90,-36 90,0 154.75,0 154.75,-36"/>
+<text text-anchor="middle" x="122.38" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text>
</g>
-<!-- Y&#45;&gt;L -->
-<g id="edge3" class="edge">
-<title>Y&#45;&gt;L</title>
-<path fill="none" stroke="blue" d="M357.45,-27.69C365.41,-29.27 373.61,-30.9 381.42,-32.46"/>
-<polygon fill="blue" stroke="blue" points="380.54,-35.85 391.03,-34.37 381.9,-28.98 380.54,-35.85"/>
+<!-- L&#45;&gt;Y -->
+<g id="edge1" class="edge">
+<title>L&#45;&gt;Y</title>
+<path fill="none" stroke="blue" d="M154.97,-24.28C162.59,-25.8 170.99,-27.47 179.44,-29.15"/>
+<polygon fill="blue" stroke="blue" points="178.53,-32.54 189.02,-31.06 179.9,-25.68 178.53,-32.54"/>
</g>
<!-- Return -->
<g id="node5" class="node">
<title>Return</title>
-<polygon fill="none" stroke="black" points="547.75,-36 493.75,-36 493.75,0 547.75,0 547.75,-36"/>
-<text text-anchor="middle" x="520.75" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
+<polygon fill="none" stroke="black" points="54,-59 0,-59 0,-23 54,-23 54,-59"/>
+<text text-anchor="middle" x="27" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
</g>
-<!-- Y&#45;&gt;Return -->
+<!-- Return&#45;&gt;Y -->
<g id="edge4" class="edge">
-<title>Y&#45;&gt;Return</title>
-<path fill="none" stroke="blue" d="M357.3,-15.3C368.98,-14.76 381.44,-14.27 393,-14 421.77,-13.32 428.99,-13.07 457.75,-14 465.65,-14.25 474.1,-14.69 482.14,-15.18"/>
-<polygon fill="blue" stroke="blue" points="481.8,-18.67 492.01,-15.83 482.26,-11.68 481.8,-18.67"/>
+<title>Return&#45;&gt;Y</title>
+<path fill="none" stroke="blue" d="M54.23,-43.07C65.26,-43.84 78.25,-44.62 90,-45 118.76,-45.93 125.98,-45.68 154.75,-45 162.61,-44.81 170.88,-44.53 179.04,-44.2"/>
+<polygon fill="blue" stroke="blue" points="179.1,-47.7 188.94,-43.76 178.8,-40.7 179.1,-47.7"/>
</g>
-<!-- L&#45;&gt;Return -->
+<!-- Return&#45;&gt;L -->
<g id="edge5" class="edge">
-<title>L&#45;&gt;Return</title>
-<path fill="none" stroke="black" d="M458.25,-33.15C466,-31.24 474.37,-29.18 482.36,-27.21"/>
-<polygon fill="black" stroke="black" points="482.95,-30.67 491.82,-24.88 481.28,-23.87 482.95,-30.67"/>
+<title>Return&#45;&gt;L</title>
+<path fill="none" stroke="black" d="M54.01,-34.59C61.58,-32.73 70.06,-30.64 78.37,-28.59"/>
+<polygon fill="black" stroke="black" points="79.18,-32 88.05,-26.21 77.51,-25.2 79.18,-32"/>
</g>
</g>
</svg>
diff --git a/chapter10a/docs/example2a.gv b/chapter10a/docs/example2a.gv
index 13fd75e0..64e774fc 100644
--- a/chapter10a/docs/example2a.gv
+++ b/chapter10a/docs/example2a.gv
@@ -5,6 +5,6 @@ digraph Memory {
A [label="True: Store x"];
B [label="False: Store y"];
P [label="Phi(memory)"];
- M -> A -> P [color=blue]; M -> B -> P [color=blue];
- Region -> P [style=dashed]; P -> Return [color=blue];
+ P -> A -> M [color=blue]; P -> B -> M [color=blue];
+ P -> Region [style=dashed]; Return -> P [color=blue];
}
diff --git a/chapter10a/docs/example2a.svg b/chapter10a/docs/example2a.svg
index 1752659e..c6801f59 100644
--- a/chapter10a/docs/example2a.svg
+++ b/chapter10a/docs/example2a.svg
@@ -12,74 +12,74 @@
<!-- M -->
<g id="node1" class="node">
<title>M</title>
-<polygon fill="none" stroke="black" points="118.75,-117 0,-117 0,-81 118.75,-81 118.75,-117"/>
-<text text-anchor="middle" x="59.38" y="-93.95" font-family="Times New Roman,serif" font-size="14.00">Incoming memory</text>
+<polygon fill="none" stroke="black" points="461.25,-117 342.5,-117 342.5,-81 461.25,-81 461.25,-117"/>
+<text text-anchor="middle" x="401.88" y="-93.95" font-family="Times New Roman,serif" font-size="14.00">Incoming memory</text>
</g>
<!-- A -->
<g id="node2" class="node">
<title>A</title>
-<polygon fill="none" stroke="black" points="244.25,-144 156.25,-144 156.25,-108 244.25,-108 244.25,-144"/>
-<text text-anchor="middle" x="200.25" y="-120.95" font-family="Times New Roman,serif" font-size="14.00">True: Store x</text>
+<polygon fill="none" stroke="black" points="305,-144 217,-144 217,-108 305,-108 305,-144"/>
+<text text-anchor="middle" x="261" y="-120.95" font-family="Times New Roman,serif" font-size="14.00">True: Store x</text>
</g>
-<!-- M&#45;&gt;A -->
-<g id="edge1" class="edge">
-<title>M&#45;&gt;A</title>
-<path fill="none" stroke="blue" d="M118.87,-110.37C127.53,-112.06 136.42,-113.78 144.99,-115.45"/>
-<polygon fill="blue" stroke="blue" points="144.05,-118.83 154.53,-117.31 145.38,-111.96 144.05,-118.83"/>
+<!-- A&#45;&gt;M -->
+<g id="edge2" class="edge">
+<title>A&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M305.18,-117.61C313.41,-116.01 322.22,-114.29 331.03,-112.58"/>
+<polygon fill="blue" stroke="blue" points="331.53,-116.05 340.67,-110.7 330.19,-109.18 331.53,-116.05"/>
</g>
<!-- B -->
<g id="node3" class="node">
<title>B</title>
-<polygon fill="none" stroke="black" points="245.75,-90 154.75,-90 154.75,-54 245.75,-54 245.75,-90"/>
-<text text-anchor="middle" x="200.25" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">False: Store y</text>
+<polygon fill="none" stroke="black" points="306.5,-90 215.5,-90 215.5,-54 306.5,-54 306.5,-90"/>
+<text text-anchor="middle" x="261" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">False: Store y</text>
</g>
-<!-- M&#45;&gt;B -->
-<g id="edge3" class="edge">
-<title>M&#45;&gt;B</title>
-<path fill="none" stroke="blue" d="M118.87,-87.63C126.93,-86.06 135.19,-84.45 143.21,-82.9"/>
-<polygon fill="blue" stroke="blue" points="143.7,-86.37 152.84,-81.02 142.36,-79.5 143.7,-86.37"/>
+<!-- B&#45;&gt;M -->
+<g id="edge4" class="edge">
+<title>B&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M306.71,-80.69C314.45,-82.2 322.66,-83.79 330.88,-85.39"/>
+<polygon fill="blue" stroke="blue" points="330.09,-88.8 340.57,-87.28 331.42,-81.93 330.09,-88.8"/>
</g>
<!-- P -->
<g id="node4" class="node">
<title>P</title>
-<polygon fill="none" stroke="black" points="371.25,-90 281.75,-90 281.75,-54 371.25,-54 371.25,-90"/>
-<text text-anchor="middle" x="326.5" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Phi(memory)</text>
-</g>
-<!-- A&#45;&gt;P -->
-<g id="edge2" class="edge">
-<title>A&#45;&gt;P</title>
-<path fill="none" stroke="blue" d="M243.66,-107.57C253.06,-103.48 263.13,-99.11 272.87,-94.87"/>
-<polygon fill="blue" stroke="blue" points="274.11,-98.15 281.89,-90.95 271.32,-91.73 274.11,-98.15"/>
-</g>
-<!-- B&#45;&gt;P -->
-<g id="edge4" class="edge">
-<title>B&#45;&gt;P</title>
-<path fill="none" stroke="blue" d="M246.11,-72C253.95,-72 262.19,-72 270.28,-72"/>
-<polygon fill="blue" stroke="blue" points="270.03,-75.5 280.03,-72 270.03,-68.5 270.03,-75.5"/>
+<polygon fill="none" stroke="black" points="179.5,-90 90,-90 90,-54 179.5,-54 179.5,-90"/>
+<text text-anchor="middle" x="134.75" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Phi(memory)</text>
</g>
-<!-- Return -->
-<g id="node6" class="node">
-<title>Return</title>
-<polygon fill="none" stroke="black" points="461.25,-90 407.25,-90 407.25,-54 461.25,-54 461.25,-90"/>
-<text text-anchor="middle" x="434.25" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
+<!-- P&#45;&gt;A -->
+<g id="edge1" class="edge">
+<title>P&#45;&gt;A</title>
+<path fill="none" stroke="blue" d="M178.16,-90.43C187.56,-94.52 197.63,-98.89 207.37,-103.13"/>
+<polygon fill="blue" stroke="blue" points="205.82,-106.27 216.39,-107.05 208.61,-99.85 205.82,-106.27"/>
</g>
-<!-- P&#45;&gt;Return -->
-<g id="edge6" class="edge">
-<title>P&#45;&gt;Return</title>
-<path fill="none" stroke="blue" d="M371.73,-72C379.7,-72 387.94,-72 395.7,-72"/>
-<polygon fill="blue" stroke="blue" points="395.49,-75.5 405.49,-72 395.49,-68.5 395.49,-75.5"/>
+<!-- P&#45;&gt;B -->
+<g id="edge3" class="edge">
+<title>P&#45;&gt;B</title>
+<path fill="none" stroke="blue" d="M179.91,-72C187.59,-72 195.68,-72 203.64,-72"/>
+<polygon fill="blue" stroke="blue" points="203.63,-75.5 213.63,-72 203.63,-68.5 203.63,-75.5"/>
</g>
<!-- Region -->
<g id="node5" class="node">
<title>Region</title>
-<polygon fill="none" stroke="black" points="227.75,-36 172.75,-36 172.75,0 227.75,0 227.75,-36"/>
-<text text-anchor="middle" x="200.25" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Region</text>
+<polygon fill="none" stroke="black" points="288.5,-36 233.5,-36 233.5,0 288.5,0 288.5,-36"/>
+<text text-anchor="middle" x="261" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Region</text>
</g>
-<!-- Region&#45;&gt;P -->
+<!-- P&#45;&gt;Region -->
<g id="edge5" class="edge">
-<title>Region&#45;&gt;P</title>
-<path fill="none" stroke="black" stroke-dasharray="5,2" d="M228.21,-29.72C241.2,-35.36 257.25,-42.34 272.54,-48.98"/>
-<polygon fill="black" stroke="black" points="271,-52.13 281.57,-52.91 273.79,-45.71 271,-52.13"/>
+<title>P&#45;&gt;Region</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M178.16,-53.57C192.73,-47.24 208.91,-40.21 223.01,-34.08"/>
+<polygon fill="black" stroke="black" points="224.16,-37.39 231.94,-30.2 221.37,-30.97 224.16,-37.39"/>
+</g>
+<!-- Return -->
+<g id="node6" class="node">
+<title>Return</title>
+<polygon fill="none" stroke="black" points="54,-90 0,-90 0,-54 54,-54 54,-90"/>
+<text text-anchor="middle" x="27" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
+</g>
+<!-- Return&#45;&gt;P -->
+<g id="edge6" class="edge">
+<title>Return&#45;&gt;P</title>
+<path fill="none" stroke="blue" d="M54.41,-72C61.73,-72 69.96,-72 78.28,-72"/>
+<polygon fill="blue" stroke="blue" points="78.08,-75.5 88.08,-72 78.08,-68.5 78.08,-75.5"/>
</g>
</g>
</svg>
diff --git a/chapter10a/docs/example2b.gv b/chapter10a/docs/example2b.gv
index 9db0f5fb..7ccbcc99 100644
--- a/chapter10a/docs/example2b.gv
+++ b/chapter10a/docs/example2b.gv
@@ -3,6 +3,6 @@ digraph Memory {
node [shape=box];
P [label="Phi(memory)"];
S [label="Loop-body Store"];
- Entry -> P [color=blue]; P -> S -> P [color=blue];
- Loop -> P [style=dashed]; P -> Return [color=blue];
+ P -> Entry [color=blue]; P -> S -> P [color=blue];
+ P -> Loop [style=dashed]; Return -> P [color=blue];
}
diff --git a/chapter10a/docs/example2b.svg b/chapter10a/docs/example2b.svg
index 1f106d63..063a6f21 100644
--- a/chapter10a/docs/example2b.svg
+++ b/chapter10a/docs/example2b.svg
@@ -4,70 +4,70 @@
<!-- Generated by graphviz version 12.2.0 (20241103.1931)
-->
<!-- Title: Memory Pages: 1 -->
-<svg width="332pt" height="125pt"
- viewBox="0.00 0.00 331.75 125.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 121)">
+<svg width="332pt" height="152pt"
+ viewBox="0.00 0.00 331.75 152.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 148)">
<title>Memory</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-121 327.75,-121 327.75,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-148 327.75,-148 327.75,4 -4,4"/>
<!-- P -->
<g id="node1" class="node">
<title>P</title>
-<polygon fill="none" stroke="black" points="179.5,-90 90,-90 90,-54 179.5,-54 179.5,-90"/>
-<text text-anchor="middle" x="134.75" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Phi(memory)</text>
+<polygon fill="none" stroke="black" points="179.5,-117 90,-117 90,-81 179.5,-81 179.5,-117"/>
+<text text-anchor="middle" x="134.75" y="-93.95" font-family="Times New Roman,serif" font-size="14.00">Phi(memory)</text>
</g>
<!-- S -->
<g id="node2" class="node">
<title>S</title>
-<polygon fill="none" stroke="black" points="323.75,-90 215.5,-90 215.5,-54 323.75,-54 323.75,-90"/>
-<text text-anchor="middle" x="269.62" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Loop&#45;body Store</text>
+<polygon fill="none" stroke="black" points="323.75,-144 215.5,-144 215.5,-108 323.75,-108 323.75,-144"/>
+<text text-anchor="middle" x="269.62" y="-120.95" font-family="Times New Roman,serif" font-size="14.00">Loop&#45;body Store</text>
</g>
<!-- P&#45;&gt;S -->
<g id="edge2" class="edge">
<title>P&#45;&gt;S</title>
-<path fill="none" stroke="blue" d="M180,-65.6C187.69,-65.35 195.84,-65.23 203.95,-65.25"/>
-<polygon fill="blue" stroke="blue" points="203.79,-68.75 213.83,-65.35 203.87,-61.75 203.79,-68.75"/>
-</g>
-<!-- Return -->
-<g id="node5" class="node">
-<title>Return</title>
-<polygon fill="none" stroke="black" points="296.62,-36 242.62,-36 242.62,0 296.62,0 296.62,-36"/>
-<text text-anchor="middle" x="269.62" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
-</g>
-<!-- P&#45;&gt;Return -->
-<g id="edge5" class="edge">
-<title>P&#45;&gt;Return</title>
-<path fill="none" stroke="blue" d="M180,-54.02C196.8,-47.19 215.75,-39.49 231.8,-32.97"/>
-<polygon fill="blue" stroke="blue" points="233.04,-36.24 240.98,-29.23 230.4,-29.76 233.04,-36.24"/>
-</g>
-<!-- S&#45;&gt;P -->
-<g id="edge3" class="edge">
-<title>S&#45;&gt;P</title>
-<path fill="none" stroke="blue" d="M215.34,-78.63C207.46,-78.78 199.33,-78.79 191.4,-78.67"/>
-<polygon fill="blue" stroke="blue" points="191.59,-75.17 181.51,-78.44 191.42,-82.17 191.59,-75.17"/>
+<path fill="none" stroke="blue" d="M180,-101.59C187.78,-102.92 196.03,-104.48 204.23,-106.17"/>
+<polygon fill="blue" stroke="blue" points="203.35,-109.56 213.86,-108.23 204.81,-102.71 203.35,-109.56"/>
</g>
<!-- Entry -->
<g id="node3" class="node">
<title>Entry</title>
-<polygon fill="none" stroke="black" points="54,-117 0,-117 0,-81 54,-81 54,-117"/>
-<text text-anchor="middle" x="27" y="-93.95" font-family="Times New Roman,serif" font-size="14.00">Entry</text>
+<polygon fill="none" stroke="black" points="296.62,-90 242.62,-90 242.62,-54 296.62,-54 296.62,-90"/>
+<text text-anchor="middle" x="269.62" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Entry</text>
</g>
-<!-- Entry&#45;&gt;P -->
+<!-- P&#45;&gt;Entry -->
<g id="edge1" class="edge">
-<title>Entry&#45;&gt;P</title>
-<path fill="none" stroke="blue" d="M54.41,-92.26C61.81,-90.37 70.15,-88.24 78.56,-86.09"/>
-<polygon fill="blue" stroke="blue" points="79.3,-89.51 88.12,-83.65 77.57,-82.73 79.3,-89.51"/>
+<title>P&#45;&gt;Entry</title>
+<path fill="none" stroke="blue" d="M180,-90.01C196.64,-86.63 215.39,-82.82 231.34,-79.58"/>
+<polygon fill="blue" stroke="blue" points="231.8,-83.05 240.9,-77.63 230.41,-76.19 231.8,-83.05"/>
</g>
<!-- Loop -->
<g id="node4" class="node">
<title>Loop</title>
-<polygon fill="none" stroke="black" points="54,-63 0,-63 0,-27 54,-27 54,-63"/>
-<text text-anchor="middle" x="27" y="-39.95" font-family="Times New Roman,serif" font-size="14.00">Loop</text>
+<polygon fill="none" stroke="black" points="296.62,-36 242.62,-36 242.62,0 296.62,0 296.62,-36"/>
+<text text-anchor="middle" x="269.62" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Loop</text>
</g>
-<!-- Loop&#45;&gt;P -->
+<!-- P&#45;&gt;Loop -->
<g id="edge4" class="edge">
-<title>Loop&#45;&gt;P</title>
-<path fill="none" stroke="black" stroke-dasharray="5,2" d="M54.41,-51.74C61.81,-53.63 70.15,-55.76 78.56,-57.91"/>
-<polygon fill="black" stroke="black" points="77.57,-61.27 88.12,-60.35 79.3,-54.49 77.57,-61.27"/>
+<title>P&#45;&gt;Loop</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M161.08,-80.66C176.5,-69.79 196.77,-56.04 215.5,-45 220.85,-41.85 226.61,-38.69 232.29,-35.7"/>
+<polygon fill="black" stroke="black" points="233.69,-38.92 240.99,-31.24 230.49,-32.69 233.69,-38.92"/>
+</g>
+<!-- S&#45;&gt;P -->
+<g id="edge3" class="edge">
+<title>S&#45;&gt;P</title>
+<path fill="none" stroke="blue" d="M215.34,-121.8C207.37,-120.33 199.14,-118.67 191.13,-116.92"/>
+<polygon fill="blue" stroke="blue" points="192,-113.53 181.47,-114.73 190.45,-120.35 192,-113.53"/>
+</g>
+<!-- Return -->
+<g id="node5" class="node">
+<title>Return</title>
+<polygon fill="none" stroke="black" points="54,-117 0,-117 0,-81 54,-81 54,-117"/>
+<text text-anchor="middle" x="27" y="-93.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
+</g>
+<!-- Return&#45;&gt;P -->
+<g id="edge5" class="edge">
+<title>Return&#45;&gt;P</title>
+<path fill="none" stroke="blue" d="M54.41,-99C61.73,-99 69.96,-99 78.28,-99"/>
+<polygon fill="blue" stroke="blue" points="78.08,-102.5 88.08,-99 78.08,-95.5 78.08,-102.5"/>
</g>
</g>
</svg>
diff --git a/chapter10a/docs/example2c.gv b/chapter10a/docs/example2c.gv
index 0a9f0462..0c7cf67d 100644
--- a/chapter10a/docs/example2c.gv
+++ b/chapter10a/docs/example2c.gv
@@ -4,6 +4,6 @@ digraph Memory {
M [label="Prior memory"];
L [label="Load p.x"];
S [label="Store p.x"];
- M -> L [color=blue]; M -> S [color=blue];
- L -> S [style=dashed,label="execute load first"];
+ L -> M [color=blue]; S -> M [color=blue];
+ S -> L [style=dashed,label="execute load first"];
}
diff --git a/chapter10a/docs/example2c.svg b/chapter10a/docs/example2c.svg
index 90f90920..a4d2f53e 100644
--- a/chapter10a/docs/example2c.svg
+++ b/chapter10a/docs/example2c.svg
@@ -4,47 +4,47 @@
<!-- Generated by graphviz version 12.2.0 (20241103.1931)
-->
<!-- Title: Memory Pages: 1 -->
-<svg width="398pt" height="78pt"
- viewBox="0.00 0.00 398.25 78.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 74)">
+<svg width="398pt" height="67pt"
+ viewBox="0.00 0.00 398.25 67.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 63)">
<title>Memory</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-74 394.25,-74 394.25,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-63 394.25,-63 394.25,4 -4,4"/>
<!-- M -->
<g id="node1" class="node">
<title>M</title>
-<polygon fill="none" stroke="black" points="93.25,-36 0,-36 0,0 93.25,0 93.25,-36"/>
-<text text-anchor="middle" x="46.62" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Prior memory</text>
+<polygon fill="none" stroke="black" points="390.25,-59 297,-59 297,-23 390.25,-23 390.25,-59"/>
+<text text-anchor="middle" x="343.62" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Prior memory</text>
</g>
<!-- L -->
<g id="node2" class="node">
<title>L</title>
-<polygon fill="none" stroke="black" points="195,-70 130.25,-70 130.25,-34 195,-34 195,-70"/>
-<text text-anchor="middle" x="162.62" y="-46.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text>
+<polygon fill="none" stroke="black" points="260,-36 195.25,-36 195.25,0 260,0 260,-36"/>
+<text text-anchor="middle" x="227.62" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text>
</g>
-<!-- M&#45;&gt;L -->
+<!-- L&#45;&gt;M -->
<g id="edge1" class="edge">
-<title>M&#45;&gt;L</title>
-<path fill="none" stroke="blue" d="M93.66,-31.73C101.99,-34.21 110.64,-36.79 118.87,-39.25"/>
-<polygon fill="blue" stroke="blue" points="117.72,-42.56 128.31,-42.06 119.73,-35.85 117.72,-42.56"/>
+<title>L&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M260.38,-24.41C268.17,-25.98 276.74,-27.71 285.33,-29.44"/>
+<polygon fill="blue" stroke="blue" points="284.57,-32.86 295.07,-31.41 285.96,-26 284.57,-32.86"/>
</g>
<!-- S -->
<g id="node3" class="node">
<title>S</title>
-<polygon fill="none" stroke="black" points="390.25,-40 324.75,-40 324.75,-4 390.25,-4 390.25,-40"/>
-<text text-anchor="middle" x="357.5" y="-16.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x</text>
+<polygon fill="none" stroke="black" points="65.5,-59 0,-59 0,-23 65.5,-23 65.5,-59"/>
+<text text-anchor="middle" x="32.75" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x</text>
</g>
-<!-- M&#45;&gt;S -->
+<!-- S&#45;&gt;M -->
<g id="edge2" class="edge">
-<title>M&#45;&gt;S</title>
-<path fill="none" stroke="blue" d="M93.53,-18.59C152.81,-19.36 255.2,-20.69 313.19,-21.44"/>
-<polygon fill="blue" stroke="blue" points="312.95,-24.94 323,-21.57 313.04,-17.94 312.95,-24.94"/>
+<title>S&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M65.75,-47.66C71.63,-48.63 77.73,-49.48 83.5,-50 152.69,-56.21 232.63,-51.66 285.21,-47.07"/>
+<polygon fill="blue" stroke="blue" points="285.51,-50.56 295.15,-46.17 284.88,-43.59 285.51,-50.56"/>
</g>
-<!-- L&#45;&gt;S -->
+<!-- S&#45;&gt;L -->
<g id="edge3" class="edge">
-<title>L&#45;&gt;S</title>
-<path fill="none" stroke="black" stroke-dasharray="5,2" d="M195.47,-47.05C227.62,-42.05 277.5,-34.29 313.22,-28.73"/>
-<polygon fill="black" stroke="black" points="313.44,-32.24 322.79,-27.24 312.37,-25.32 313.44,-32.24"/>
-<text text-anchor="middle" x="259.88" y="-47.15" font-family="Times New Roman,serif" font-size="14.00">execute load first</text>
+<title>S&#45;&gt;L</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M65.84,-35.96C71.71,-35.1 77.78,-34.24 83.5,-33.5 117.16,-29.14 155.38,-25.05 183.85,-22.16"/>
+<polygon fill="black" stroke="black" points="183.92,-25.67 193.52,-21.19 183.22,-18.71 183.92,-25.67"/>
+<text text-anchor="middle" x="130.38" y="-36.7" font-family="Times New Roman,serif" font-size="14.00">execute load first</text>
</g>
</g>
</svg>
diff --git a/chapter10b/README.md b/chapter10b/README.md
index d90a9da7..1779be50 100644
--- a/chapter10b/README.md
+++ b/chapter10b/README.md
@@ -27,7 +27,7 @@ load-after-store forwarding turn the return value into 42.
![Independent field dependencies](docs/example1.svg)
-These are schematic dependency graphs, with arrows from definitions to uses.
+These are schematic dependency graphs, with arrows from uses to their definitions.
Control, pointer, and value edges are omitted when they do not explain memory.
## Equivalence-class aliasing
diff --git a/chapter10b/docs/example1.gv b/chapter10b/docs/example1.gv
index d1b2d456..2194ae8f 100644
--- a/chapter10b/docs/example1.gv
+++ b/chapter10b/docs/example1.gv
@@ -5,7 +5,7 @@ digraph Memory {
X [label="Store x = 42"];
Y [label="Loop: Store y"];
L [label="Load x -> 42"];
- M -> X -> L [color=blue]; M -> Y [color=green];
- X -> MemMerge [color=blue]; Y -> MemMerge [color=green];
- MemMerge -> Return; L -> Return;
+ L -> X -> M [color=blue]; Y -> M [color=green];
+ MemMerge -> X [color=blue]; MemMerge -> Y [color=green];
+ Return -> MemMerge; Return -> L;
}
diff --git a/chapter10b/docs/example1.svg b/chapter10b/docs/example1.svg
index bcd2a221..c441bc7b 100644
--- a/chapter10b/docs/example1.svg
+++ b/chapter10b/docs/example1.svg
@@ -12,80 +12,80 @@
<!-- M -->
<g id="node1" class="node">
<title>M</title>
-<polygon fill="none" stroke="black" points="98.5,-63 0,-63 0,-27 98.5,-27 98.5,-63"/>
-<text text-anchor="middle" x="49.25" y="-39.95" font-family="Times New Roman,serif" font-size="14.00">Initial memory</text>
+<polygon fill="none" stroke="black" points="439.5,-63 341,-63 341,-27 439.5,-27 439.5,-63"/>
+<text text-anchor="middle" x="390.25" y="-39.95" font-family="Times New Roman,serif" font-size="14.00">Initial memory</text>
</g>
<!-- X -->
<g id="node2" class="node">
<title>X</title>
-<polygon fill="none" stroke="black" points="222.12,-90 137.88,-90 137.88,-54 222.12,-54 222.12,-90"/>
-<text text-anchor="middle" x="180" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Store x = 42</text>
+<polygon fill="none" stroke="black" points="301.62,-90 217.38,-90 217.38,-54 301.62,-54 301.62,-90"/>
+<text text-anchor="middle" x="259.5" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Store x = 42</text>
</g>
-<!-- M&#45;&gt;X -->
-<g id="edge1" class="edge">
-<title>M&#45;&gt;X</title>
-<path fill="none" stroke="blue" d="M98.92,-55.21C107.84,-57.08 117.18,-59.04 126.2,-60.93"/>
-<polygon fill="blue" stroke="blue" points="125.43,-64.34 135.93,-62.97 126.86,-57.49 125.43,-64.34"/>
+<!-- X&#45;&gt;M -->
+<g id="edge2" class="edge">
+<title>X&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M301.95,-63.31C310.73,-61.47 320.16,-59.49 329.47,-57.54"/>
+<polygon fill="blue" stroke="blue" points="330.15,-60.97 339.22,-55.49 328.71,-54.12 330.15,-60.97"/>
</g>
<!-- Y -->
<g id="node3" class="node">
<title>Y</title>
-<polygon fill="none" stroke="black" points="225.5,-36 134.5,-36 134.5,0 225.5,0 225.5,-36"/>
-<text text-anchor="middle" x="180" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Loop: Store y</text>
+<polygon fill="none" stroke="black" points="305,-36 214,-36 214,0 305,0 305,-36"/>
+<text text-anchor="middle" x="259.5" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Loop: Store y</text>
</g>
-<!-- M&#45;&gt;Y -->
+<!-- Y&#45;&gt;M -->
<g id="edge3" class="edge">
-<title>M&#45;&gt;Y</title>
-<path fill="none" stroke="green" d="M98.92,-34.79C106.77,-33.15 114.94,-31.43 122.94,-29.76"/>
-<polygon fill="green" stroke="green" points="123.52,-33.21 132.59,-27.73 122.09,-26.36 123.52,-33.21"/>
+<title>Y&#45;&gt;M</title>
+<path fill="none" stroke="green" d="M305.17,-27.37C313.06,-29.02 321.38,-30.77 329.61,-32.49"/>
+<polygon fill="green" stroke="green" points="328.72,-35.88 339.22,-34.51 330.16,-29.03 328.72,-35.88"/>
</g>
<!-- L -->
<g id="node4" class="node">
<title>L</title>
-<polygon fill="none" stroke="black" points="349.5,-90 261.5,-90 261.5,-54 349.5,-54 349.5,-90"/>
-<text text-anchor="middle" x="305.5" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Load x &#45;&gt; 42</text>
+<polygon fill="none" stroke="black" points="178,-90 90,-90 90,-54 178,-54 178,-90"/>
+<text text-anchor="middle" x="134" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Load x &#45;&gt; 42</text>
</g>
-<!-- X&#45;&gt;L -->
-<g id="edge2" class="edge">
-<title>X&#45;&gt;L</title>
-<path fill="none" stroke="blue" d="M222.47,-72C231.24,-72 240.62,-72 249.8,-72"/>
-<polygon fill="blue" stroke="blue" points="249.73,-75.5 259.73,-72 249.73,-68.5 249.73,-75.5"/>
+<!-- L&#45;&gt;X -->
+<g id="edge1" class="edge">
+<title>L&#45;&gt;X</title>
+<path fill="none" stroke="blue" d="M178.19,-72C187.1,-72 196.56,-72 205.76,-72"/>
+<polygon fill="blue" stroke="blue" points="205.69,-75.5 215.69,-72 205.69,-68.5 205.69,-75.5"/>
</g>
<!-- MemMerge -->
<g id="node5" class="node">
<title>MemMerge</title>
-<polygon fill="none" stroke="black" points="346.5,-36 264.5,-36 264.5,0 346.5,0 346.5,-36"/>
-<text text-anchor="middle" x="305.5" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text>
+<polygon fill="none" stroke="black" points="175,-36 93,-36 93,0 175,0 175,-36"/>
+<text text-anchor="middle" x="134" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text>
</g>
-<!-- X&#45;&gt;MemMerge -->
+<!-- MemMerge&#45;&gt;X -->
<g id="edge4" class="edge">
-<title>X&#45;&gt;MemMerge</title>
-<path fill="none" stroke="blue" d="M222.47,-53.87C232.56,-49.46 243.46,-44.69 253.92,-40.11"/>
-<polygon fill="blue" stroke="blue" points="255.04,-43.45 262.8,-36.23 252.24,-37.03 255.04,-43.45"/>
+<title>MemMerge&#45;&gt;X</title>
+<path fill="none" stroke="blue" d="M175.44,-35.68C185.46,-40.06 196.34,-44.82 206.82,-49.4"/>
+<polygon fill="blue" stroke="blue" points="205.17,-52.5 215.74,-53.3 207.98,-46.09 205.17,-52.5"/>
</g>
-<!-- Y&#45;&gt;MemMerge -->
+<!-- MemMerge&#45;&gt;Y -->
<g id="edge5" class="edge">
-<title>Y&#45;&gt;MemMerge</title>
-<path fill="none" stroke="green" d="M225.94,-18C234.66,-18 243.88,-18 252.8,-18"/>
-<polygon fill="green" stroke="green" points="252.79,-21.5 262.79,-18 252.79,-14.5 252.79,-21.5"/>
+<title>MemMerge&#45;&gt;Y</title>
+<path fill="none" stroke="green" d="M175.44,-18C184.05,-18 193.28,-18 202.35,-18"/>
+<polygon fill="green" stroke="green" points="202.19,-21.5 212.19,-18 202.19,-14.5 202.19,-21.5"/>
</g>
<!-- Return -->
<g id="node6" class="node">
<title>Return</title>
-<polygon fill="none" stroke="black" points="439.5,-63 385.5,-63 385.5,-27 439.5,-27 439.5,-63"/>
-<text text-anchor="middle" x="412.5" y="-39.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
+<polygon fill="none" stroke="black" points="54,-63 0,-63 0,-27 54,-27 54,-63"/>
+<text text-anchor="middle" x="27" y="-39.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
</g>
-<!-- L&#45;&gt;Return -->
+<!-- Return&#45;&gt;L -->
<g id="edge7" class="edge">
-<title>L&#45;&gt;Return</title>
-<path fill="none" stroke="black" d="M349.81,-60.86C357.86,-58.79 366.2,-56.65 374.06,-54.63"/>
-<polygon fill="black" stroke="black" points="374.84,-58.04 383.65,-52.16 373.1,-51.26 374.84,-58.04"/>
+<title>Return&#45;&gt;L</title>
+<path fill="none" stroke="black" d="M54.5,-51.81C61.93,-53.72 70.3,-55.88 78.72,-58.04"/>
+<polygon fill="black" stroke="black" points="77.74,-61.4 88.3,-60.5 79.48,-54.62 77.74,-61.4"/>
</g>
-<!-- MemMerge&#45;&gt;Return -->
+<!-- Return&#45;&gt;MemMerge -->
<g id="edge6" class="edge">
-<title>MemMerge&#45;&gt;Return</title>
-<path fill="none" stroke="black" d="M346.8,-28.36C355.72,-30.66 365.15,-33.08 373.96,-35.35"/>
-<polygon fill="black" stroke="black" points="373.07,-38.73 383.63,-37.83 374.82,-31.95 373.07,-38.73"/>
+<title>Return&#45;&gt;MemMerge</title>
+<path fill="none" stroke="black" d="M54.5,-38.19C62.79,-36.05 72.25,-33.62 81.65,-31.2"/>
+<polygon fill="black" stroke="black" points="82.32,-34.65 91.14,-28.77 80.58,-27.87 82.32,-34.65"/>
</g>
</g>
</svg>
diff --git a/chapter10b/docs/example2a.gv b/chapter10b/docs/example2a.gv
index 50f7ec80..c2db6771 100644
--- a/chapter10b/docs/example2a.gv
+++ b/chapter10b/docs/example2a.gv
@@ -4,7 +4,7 @@ digraph Memory {
M [label="Default memory"];
X [label="Store x"];
Y [label="Store y"];
- M -> X [color=blue]; M -> Y [color=green];
- M -> MemMerge [label="default"]; X -> MemMerge [label="x",color=blue];
- Y -> MemMerge [label="y",color=green]; MemMerge -> Return;
+ 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;
}
diff --git a/chapter10b/docs/example2a.svg b/chapter10b/docs/example2a.svg
index 74cb48e0..fc95e08c 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="128pt"
- viewBox="0.00 0.00 422.50 127.80" 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 123.8)">
+<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)">
<title>Memory</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-123.8 418.5,-123.8 418.5,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-121.93 418.5,-121.93 418.5,4 -4,4"/>
<!-- M -->
<g id="node1" class="node">
<title>M</title>
-<polygon fill="none" stroke="black" points="106.75,-65.8 0,-65.8 0,-29.8 106.75,-29.8 106.75,-65.8"/>
-<text text-anchor="middle" x="53.38" y="-42.75" font-family="Times New Roman,serif" font-size="14.00">Default memory</text>
+<polygon fill="none" stroke="black" points="414.5,-90 307.75,-90 307.75,-54 414.5,-54 414.5,-90"/>
+<text text-anchor="middle" x="361.12" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Default memory</text>
</g>
<!-- X -->
<g id="node2" class="node">
<title>X</title>
-<polygon fill="none" stroke="black" points="198.75,-119.8 143.75,-119.8 143.75,-83.8 198.75,-83.8 198.75,-119.8"/>
-<text text-anchor="middle" x="171.25" y="-96.75" font-family="Times New Roman,serif" font-size="14.00">Store x</text>
+<polygon fill="none" stroke="black" points="270.75,-90 215.75,-90 215.75,-54 270.75,-54 270.75,-90"/>
+<text text-anchor="middle" x="243.25" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Store x</text>
</g>
-<!-- M&#45;&gt;X -->
+<!-- X&#45;&gt;M -->
<g id="edge1" class="edge">
-<title>M&#45;&gt;X</title>
-<path fill="none" stroke="blue" d="M93.93,-66.23C106.63,-72.15 120.65,-78.69 133.17,-84.52"/>
-<polygon fill="blue" stroke="blue" points="131.36,-87.54 141.9,-88.59 134.31,-81.19 131.36,-87.54"/>
+<title>X&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M271.13,-72C278.66,-72 287.18,-72 295.9,-72"/>
+<polygon fill="blue" stroke="blue" points="295.89,-75.5 305.89,-72 295.89,-68.5 295.89,-75.5"/>
</g>
<!-- Y -->
<g id="node3" class="node">
<title>Y</title>
-<polygon fill="none" stroke="black" points="198.75,-65.8 143.75,-65.8 143.75,-29.8 198.75,-29.8 198.75,-65.8"/>
-<text text-anchor="middle" x="171.25" y="-42.75" font-family="Times New Roman,serif" font-size="14.00">Store y</text>
+<polygon fill="none" stroke="black" points="270.75,-36 215.75,-36 215.75,0 270.75,0 270.75,-36"/>
+<text text-anchor="middle" x="243.25" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Store y</text>
</g>
-<!-- M&#45;&gt;Y -->
+<!-- Y&#45;&gt;M -->
<g id="edge2" class="edge">
-<title>M&#45;&gt;Y</title>
-<path fill="none" stroke="green" d="M107.23,-47.8C115.55,-47.8 124.01,-47.8 131.93,-47.8"/>
-<polygon fill="green" stroke="green" points="131.91,-51.3 141.91,-47.8 131.91,-44.3 131.91,-51.3"/>
+<title>Y&#45;&gt;M</title>
+<path fill="none" stroke="green" d="M271.13,-30.52C282.85,-35.99 296.97,-42.57 310.49,-48.87"/>
+<polygon fill="green" stroke="green" points="308.74,-51.91 319.28,-52.97 311.69,-45.57 308.74,-51.91"/>
</g>
<!-- MemMerge -->
<g id="node4" class="node">
<title>MemMerge</title>
-<polygon fill="none" stroke="black" points="323.5,-65.8 241.5,-65.8 241.5,-29.8 323.5,-29.8 323.5,-65.8"/>
-<text text-anchor="middle" x="282.5" y="-42.75" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text>
+<polygon fill="none" stroke="black" points="173,-90 91,-90 91,-54 173,-54 173,-90"/>
+<text text-anchor="middle" x="132" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text>
</g>
-<!-- M&#45;&gt;MemMerge -->
+<!-- MemMerge&#45;&gt;M -->
<g id="edge3" class="edge">
-<title>M&#45;&gt;MemMerge</title>
-<path fill="none" stroke="black" d="M83.72,-29.32C100.58,-19.8 122.56,-9.18 143.75,-4.3 167.57,1.19 175.02,1.56 198.75,-4.3 214.73,-8.24 231.03,-15.89 244.89,-23.68"/>
-<polygon fill="black" stroke="black" points="242.81,-26.52 253.21,-28.57 246.36,-20.48 242.81,-26.52"/>
-<text text-anchor="middle" x="171.25" y="-7.5" font-family="Times New Roman,serif" font-size="14.00">default</text>
+<title>MemMerge&#45;&gt;M</title>
+<path fill="none" stroke="black" d="M173.11,-88.58C186.42,-93.14 201.5,-97.3 215.75,-99 240.02,-101.9 246.57,-102.57 270.75,-99 279.43,-97.72 288.44,-95.77 297.24,-93.5"/>
+<polygon fill="black" stroke="black" points="298.08,-96.9 306.79,-90.87 296.22,-90.15 298.08,-96.9"/>
+<text text-anchor="middle" x="243.25" y="-104.63" font-family="Times New Roman,serif" font-size="14.00">default</text>
</g>
-<!-- X&#45;&gt;MemMerge -->
+<!-- MemMerge&#45;&gt;X -->
<g id="edge4" class="edge">
-<title>X&#45;&gt;MemMerge</title>
-<path fill="none" stroke="blue" d="M198.98,-88.59C209.64,-83.32 222.23,-77.1 234.33,-71.11"/>
-<polygon fill="blue" stroke="blue" points="235.56,-74.41 242.97,-66.85 232.45,-68.14 235.56,-74.41"/>
-<text text-anchor="middle" x="220.12" y="-82.84" font-family="Times New Roman,serif" font-size="14.00">x</text>
+<title>MemMerge&#45;&gt;X</title>
+<path fill="none" stroke="blue" d="M173.37,-72C183.42,-72 194.16,-72 204.1,-72"/>
+<polygon fill="blue" stroke="blue" points="203.79,-75.5 213.79,-72 203.79,-68.5 203.79,-75.5"/>
+<text text-anchor="middle" x="194.38" y="-75.2" font-family="Times New Roman,serif" font-size="14.00">x</text>
</g>
-<!-- Y&#45;&gt;MemMerge -->
+<!-- MemMerge&#45;&gt;Y -->
<g id="edge5" class="edge">
-<title>Y&#45;&gt;MemMerge</title>
-<path fill="none" stroke="green" d="M198.98,-47.8C208.35,-47.8 219.21,-47.8 229.93,-47.8"/>
-<polygon fill="green" stroke="green" points="229.9,-51.3 239.9,-47.8 229.9,-44.3 229.9,-51.3"/>
-<text text-anchor="middle" x="220.12" y="-51" font-family="Times New Roman,serif" font-size="14.00">y</text>
+<title>MemMerge&#45;&gt;Y</title>
+<path fill="none" stroke="green" d="M170.29,-53.57C181.65,-47.95 194.12,-41.79 205.45,-36.19"/>
+<polygon fill="green" stroke="green" points="206.69,-39.48 214.11,-31.91 203.59,-33.2 206.69,-39.48"/>
+<text text-anchor="middle" x="194.38" y="-44.97" font-family="Times New Roman,serif" font-size="14.00">y</text>
</g>
<!-- Return -->
<g id="node5" class="node">
<title>Return</title>
-<polygon fill="none" stroke="black" points="414.5,-65.8 360.5,-65.8 360.5,-29.8 414.5,-29.8 414.5,-65.8"/>
-<text text-anchor="middle" x="387.5" y="-42.75" font-family="Times New Roman,serif" font-size="14.00">Return</text>
+<polygon fill="none" stroke="black" points="54,-90 0,-90 0,-54 54,-54 54,-90"/>
+<text text-anchor="middle" x="27" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Return</text>
</g>
-<!-- MemMerge&#45;&gt;Return -->
+<!-- Return&#45;&gt;MemMerge -->
<g id="edge6" class="edge">
-<title>MemMerge&#45;&gt;Return</title>
-<path fill="none" stroke="black" d="M323.91,-47.8C332.09,-47.8 340.66,-47.8 348.75,-47.8"/>
-<polygon fill="black" stroke="black" points="348.62,-51.3 358.62,-47.8 348.62,-44.3 348.62,-51.3"/>
+<title>Return&#45;&gt;MemMerge</title>
+<path fill="none" stroke="black" d="M54.26,-72C61.97,-72 70.68,-72 79.39,-72"/>
+<polygon fill="black" stroke="black" points="79.25,-75.5 89.25,-72 79.25,-68.5 79.25,-75.5"/>
</g>
</g>
</svg>
diff --git a/chapter10b/docs/example2b.gv b/chapter10b/docs/example2b.gv
index 7ef10ec8..17b35910 100644
--- a/chapter10b/docs/example2b.gv
+++ b/chapter10b/docs/example2b.gv
@@ -3,8 +3,8 @@ digraph Memory {
node [shape=box];
P [label="MemPhi(x)"];
B [label="BulkMemPhi(All except x)"];
- Left -> P [label="slice x",color=blue]; Right -> P [label="slice x",color=blue];
- Left -> B; Right -> B;
- Region -> P [style=dashed]; Region -> B [style=dashed];
- P -> MemMerge [label="x",color=blue]; B -> MemMerge [label="default"];
+ 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"];
}
diff --git a/chapter10b/docs/example2b.svg b/chapter10b/docs/example2b.svg
index fae583e6..67d74ea8 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="163pt"
- viewBox="0.00 0.00 455.75 163.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 159)">
+<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)">
<title>Memory</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-159 451.75,-159 451.75,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-166 451.75,-166 451.75,4 -4,4"/>
<!-- P -->
<g id="node1" class="node">
<title>P</title>
-<polygon fill="none" stroke="black" points="249.12,-54 169.38,-54 169.38,-18 249.12,-18 249.12,-54"/>
-<text text-anchor="middle" x="209.25" y="-30.95" font-family="Times New Roman,serif" font-size="14.00">MemPhi(x)</text>
-</g>
-<!-- MemMerge -->
-<g id="node6" class="node">
-<title>MemMerge</title>
-<polygon fill="none" stroke="black" points="447.75,-81 365.75,-81 365.75,-45 447.75,-45 447.75,-81"/>
-<text text-anchor="middle" x="406.75" y="-57.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text>
-</g>
-<!-- P&#45;&gt;MemMerge -->
-<g id="edge7" class="edge">
-<title>P&#45;&gt;MemMerge</title>
-<path fill="none" stroke="blue" d="M249.6,-37.43C277.23,-38.89 314.95,-41.79 347.75,-47.5 349.91,-47.88 352.1,-48.29 354.31,-48.74"/>
-<polygon fill="blue" stroke="blue" points="353.39,-52.13 363.91,-50.9 354.92,-45.3 353.39,-52.13"/>
-<text text-anchor="middle" x="329" y="-50.7" font-family="Times New Roman,serif" font-size="14.00">x</text>
-</g>
-<!-- B -->
-<g id="node2" class="node">
-<title>B</title>
-<polygon fill="none" stroke="black" points="292.25,-109 126.25,-109 126.25,-73 292.25,-73 292.25,-109"/>
-<text text-anchor="middle" x="209.25" y="-85.95" font-family="Times New Roman,serif" font-size="14.00">BulkMemPhi(All except x)</text>
-</g>
-<!-- B&#45;&gt;MemMerge -->
-<g id="edge8" class="edge">
-<title>B&#45;&gt;MemMerge</title>
-<path fill="none" stroke="black" d="M292.59,-79.21C313.42,-76.22 335.2,-73.1 354.03,-70.41"/>
-<polygon fill="black" stroke="black" points="354.44,-73.88 363.84,-69 353.45,-66.96 354.44,-73.88"/>
-<text text-anchor="middle" x="329" y="-79.36" font-family="Times New Roman,serif" font-size="14.00">default</text>
+<polygon fill="none" stroke="black" points="278.38,-67 198.62,-67 198.62,-31 278.38,-31 278.38,-67"/>
+<text text-anchor="middle" x="238.5" y="-43.95" font-family="Times New Roman,serif" font-size="14.00">MemPhi(x)</text>
</g>
<!-- Left -->
<g id="node3" class="node">
<title>Left</title>
-<polygon fill="none" stroke="black" points="54.5,-97 0.5,-97 0.5,-61 54.5,-61 54.5,-97"/>
-<text text-anchor="middle" x="27.5" y="-73.95" font-family="Times New Roman,serif" font-size="14.00">Left</text>
+<polygon fill="none" stroke="black" points="447.25,-102 393.25,-102 393.25,-66 447.25,-66 447.25,-102"/>
+<text text-anchor="middle" x="420.25" y="-78.95" font-family="Times New Roman,serif" font-size="14.00">Left</text>
</g>
-<!-- Left&#45;&gt;P -->
+<!-- P&#45;&gt;Left -->
<g id="edge1" class="edge">
-<title>Left&#45;&gt;P</title>
-<path fill="none" stroke="blue" d="M54.57,-67.8C60.55,-65.5 66.94,-63.25 73,-61.5 100.58,-53.55 132.05,-47.45 157.69,-43.21"/>
-<polygon fill="blue" stroke="blue" points="158.21,-46.67 167.53,-41.63 157.1,-39.76 158.21,-46.67"/>
-<text text-anchor="middle" x="90.62" y="-64.7" font-family="Times New Roman,serif" font-size="14.00">slice x</text>
-</g>
-<!-- Left&#45;&gt;B -->
-<g id="edge3" class="edge">
-<title>Left&#45;&gt;B</title>
-<path fill="none" stroke="black" d="M54.64,-80.74C70.8,-81.82 92.62,-83.28 114.74,-84.76"/>
-<polygon fill="black" stroke="black" points="114.23,-88.23 124.44,-85.4 114.69,-81.25 114.23,-88.23"/>
+<title>P&#45;&gt;Left</title>
+<path fill="none" stroke="blue" d="M278.66,-45.11C306.2,-43.68 343.56,-44.4 374.75,-54.5 378.99,-55.87 383.21,-57.77 387.27,-59.95"/>
+<polygon fill="blue" stroke="blue" points="385.27,-62.84 395.64,-65.02 388.9,-56.85 385.27,-62.84"/>
+<text text-anchor="middle" x="357.12" y="-57.7" font-family="Times New Roman,serif" font-size="14.00">slice x</text>
</g>
<!-- Right -->
<g id="node4" class="node">
<title>Right</title>
-<polygon fill="none" stroke="black" points="54.5,-155 0.5,-155 0.5,-119 54.5,-119 54.5,-155"/>
-<text text-anchor="middle" x="27.5" y="-131.95" font-family="Times New Roman,serif" font-size="14.00">Right</text>
+<polygon fill="none" stroke="black" points="447.25,-162 393.25,-162 393.25,-126 447.25,-126 447.25,-162"/>
+<text text-anchor="middle" x="420.25" y="-138.95" font-family="Times New Roman,serif" font-size="14.00">Right</text>
</g>
-<!-- Right&#45;&gt;P -->
+<!-- P&#45;&gt;Right -->
<g id="edge2" class="edge">
-<title>Right&#45;&gt;P</title>
-<path fill="none" stroke="blue" d="M54.87,-120.55C70.84,-110.17 91.32,-96.1 108.25,-82 116.94,-74.76 116.65,-69.98 126.25,-64 136.02,-57.91 147.27,-52.97 158.25,-49.02"/>
-<polygon fill="blue" stroke="blue" points="159.26,-52.37 167.63,-45.88 157.04,-45.73 159.26,-52.37"/>
-<text text-anchor="middle" x="90.62" y="-110.72" font-family="Times New Roman,serif" font-size="14.00">slice x</text>
-</g>
-<!-- Right&#45;&gt;B -->
-<g id="edge4" class="edge">
-<title>Right&#45;&gt;B</title>
-<path fill="none" stroke="black" d="M54.7,-143.04C70.42,-145.67 90.72,-147.29 108.25,-143 130.7,-137.51 153.73,-126.02 172.01,-115.23"/>
-<polygon fill="black" stroke="black" points="173.65,-118.33 180.36,-110.14 170,-112.35 173.65,-118.33"/>
+<title>P&#45;&gt;Right</title>
+<path fill="none" stroke="blue" d="M278.82,-64.2C306.43,-75.51 343.81,-92.12 374.75,-110.5 379.08,-113.07 383.48,-115.98 387.76,-118.98"/>
+<polygon fill="blue" stroke="blue" points="385.46,-121.64 395.6,-124.72 389.6,-115.99 385.46,-121.64"/>
+<text text-anchor="middle" x="357.12" y="-113.7" font-family="Times New Roman,serif" font-size="14.00">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="none" stroke="black" points="447.75,-36 392.75,-36 392.75,0 447.75,0 447.75,-36"/>
+<text text-anchor="middle" x="420.25" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Region</text>
</g>
-<!-- Region&#45;&gt;P -->
+<!-- P&#45;&gt;Region -->
<g id="edge5" class="edge">
-<title>Region&#45;&gt;P</title>
-<path fill="none" stroke="black" stroke-dasharray="5,2" d="M55.32,-16.6C61.15,-16.35 67.28,-16.13 73,-16 88.66,-15.65 92.66,-14.46 108.25,-16 124.55,-17.61 142.14,-20.68 157.95,-23.93"/>
-<polygon fill="black" stroke="black" points="157.11,-27.33 167.62,-25.99 158.57,-20.48 157.11,-27.33"/>
+<title>P&#45;&gt;Region</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M275.99,-30.51C294.51,-22.15 317.65,-13.21 339.5,-9 353.05,-6.39 368.04,-7.15 381.34,-9.05"/>
+<polygon fill="black" stroke="black" points="380.57,-12.47 391.02,-10.71 381.75,-5.57 380.57,-12.47"/>
</g>
-<!-- Region&#45;&gt;B -->
+<!-- B -->
+<g id="node2" class="node">
+<title>B</title>
+<polygon fill="none" stroke="black" points="321.5,-132 155.5,-132 155.5,-96 321.5,-96 321.5,-132"/>
+<text text-anchor="middle" x="238.5" y="-108.95" font-family="Times New Roman,serif" font-size="14.00">BulkMemPhi(All except x)</text>
+</g>
+<!-- B&#45;&gt;Left -->
+<g id="edge3" class="edge">
+<title>B&#45;&gt;Left</title>
+<path fill="none" stroke="black" d="M321.72,-119C339.48,-118.2 357.95,-115.9 374.75,-111 377.84,-110.1 380.93,-108.93 383.97,-107.57"/>
+<polygon fill="black" stroke="black" points="385.33,-110.81 392.62,-103.12 382.13,-104.58 385.33,-110.81"/>
+</g>
+<!-- B&#45;&gt;Right -->
+<g id="edge4" class="edge">
+<title>B&#45;&gt;Right</title>
+<path fill="none" stroke="black" d="M321.75,-127.73C342.83,-131.25 364.47,-134.86 382,-137.78"/>
+<polygon fill="black" stroke="black" points="380.94,-141.15 391.38,-139.35 382.09,-134.25 380.94,-141.15"/>
+</g>
+<!-- B&#45;&gt;Region -->
<g id="edge6" class="edge">
-<title>Region&#45;&gt;B</title>
-<path fill="none" stroke="black" stroke-dasharray="5,2" d="M48.17,-36.19C55.53,-42.23 64.24,-48.55 73,-53 86.08,-59.65 100.48,-65.27 114.87,-69.98"/>
-<polygon fill="black" stroke="black" points="113.8,-73.32 124.39,-72.96 115.89,-66.63 113.8,-73.32"/>
+<title>B&#45;&gt;Region</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M280.68,-95.69C293.83,-89.64 308.37,-82.73 321.5,-76 345.68,-63.61 351.41,-59.9 374.75,-46 377.38,-44.43 380.08,-42.8 382.8,-41.14"/>
+<polygon fill="black" stroke="black" points="384.61,-44.13 391.27,-35.89 380.92,-38.18 384.61,-44.13"/>
+</g>
+<!-- MemMerge -->
+<g id="node6" class="node">
+<title>MemMerge</title>
+<polygon fill="none" stroke="black" points="82,-94 0,-94 0,-58 82,-58 82,-94"/>
+<text text-anchor="middle" x="41" y="-70.95" font-family="Times New Roman,serif" font-size="14.00">MemMerge</text>
+</g>
+<!-- MemMerge&#45;&gt;P -->
+<g id="edge7" class="edge">
+<title>MemMerge&#45;&gt;P</title>
+<path fill="none" stroke="blue" d="M82.36,-64.23C88.24,-62.81 94.25,-61.5 100,-60.5 128.58,-55.53 160.88,-52.69 186.99,-51.07"/>
+<polygon fill="blue" stroke="blue" points="186.85,-54.59 196.64,-50.52 186.45,-47.6 186.85,-54.59"/>
+<text text-anchor="middle" x="118.75" y="-63.7" font-family="Times New Roman,serif" font-size="14.00">x</text>
+</g>
+<!-- MemMerge&#45;&gt;B -->
+<g id="edge8" class="edge">
+<title>MemMerge&#45;&gt;B</title>
+<path fill="none" stroke="black" d="M82.03,-83.78C100.1,-87.29 122.25,-91.6 144.12,-95.85"/>
+<polygon fill="black" stroke="black" points="143.19,-99.23 153.67,-97.71 144.52,-92.36 143.19,-99.23"/>
+<text text-anchor="middle" x="118.75" y="-97.06" font-family="Times New Roman,serif" font-size="14.00">default</text>
</g>
</g>
</svg>
diff --git a/chapter10b/docs/example2c.gv b/chapter10b/docs/example2c.gv
index fb827b3e..7a0562ee 100644
--- a/chapter10b/docs/example2c.gv
+++ b/chapter10b/docs/example2c.gv
@@ -4,7 +4,7 @@ digraph Memory {
M [label="Prior x memory"];
L [label="Load p.x"];
S [label="Store p.x"];
- M -> L [color=blue]; M -> S [color=blue];
- L -> S [style=dashed,label="execute load first"];
+ L -> M [color=blue]; S -> M [color=blue];
+ S -> L [style=dashed,label="execute load first"];
Y [label="Store p.y: independent"];
}
diff --git a/chapter10b/docs/example2c.svg b/chapter10b/docs/example2c.svg
index d8e5cf96..1d51ccca 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="444pt" height="98pt"
- viewBox="0.00 0.00 444.00 98.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 94)">
+<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)">
<title>Memory</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-94 440,-94 440,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-117 478.25,-117 478.25,4 -4,4"/>
<!-- M -->
<g id="node1" class="node">
<title>M</title>
-<polygon fill="none" stroke="black" points="121.38,-36 17.62,-36 17.62,0 121.38,0 121.38,-36"/>
-<text text-anchor="middle" x="69.5" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Prior x memory</text>
+<polygon fill="none" stroke="black" points="474.25,-59 370.5,-59 370.5,-23 474.25,-23 474.25,-59"/>
+<text text-anchor="middle" x="422.38" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Prior x memory</text>
</g>
<!-- L -->
<g id="node2" class="node">
<title>L</title>
-<polygon fill="none" stroke="black" points="240.75,-70 176,-70 176,-34 240.75,-34 240.75,-70"/>
-<text text-anchor="middle" x="208.38" y="-46.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text>
+<polygon fill="none" stroke="black" points="333.5,-36 268.75,-36 268.75,0 333.5,0 333.5,-36"/>
+<text text-anchor="middle" x="301.12" y="-12.95" font-family="Times New Roman,serif" font-size="14.00">Load p.x</text>
</g>
-<!-- M&#45;&gt;L -->
+<!-- L&#45;&gt;M -->
<g id="edge1" class="edge">
-<title>M&#45;&gt;L</title>
-<path fill="none" stroke="blue" d="M121.86,-30.76C135.96,-34.26 151.1,-38.02 164.66,-41.39"/>
-<polygon fill="blue" stroke="blue" points="163.61,-44.73 174.16,-43.75 165.29,-37.94 163.61,-44.73"/>
+<title>L&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M333.77,-24.1C341.63,-25.62 350.33,-27.3 359.1,-28.99"/>
+<polygon fill="blue" stroke="blue" points="358.23,-32.39 368.71,-30.84 359.56,-25.51 358.23,-32.39"/>
</g>
<!-- S -->
<g id="node3" class="node">
<title>S</title>
-<polygon fill="none" stroke="black" points="436,-40 370.5,-40 370.5,-4 436,-4 436,-40"/>
-<text text-anchor="middle" x="403.25" y="-16.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x</text>
+<polygon fill="none" stroke="black" points="102.25,-59 36.75,-59 36.75,-23 102.25,-23 102.25,-59"/>
+<text text-anchor="middle" x="69.5" y="-35.95" font-family="Times New Roman,serif" font-size="14.00">Store p.x</text>
</g>
-<!-- M&#45;&gt;S -->
+<!-- S&#45;&gt;M -->
<g id="edge2" class="edge">
-<title>M&#45;&gt;S</title>
-<path fill="none" stroke="blue" d="M121.61,-18.62C186.66,-19.4 297.92,-20.74 358.98,-21.48"/>
-<polygon fill="blue" stroke="blue" points="358.58,-24.97 368.62,-21.59 358.66,-17.97 358.58,-24.97"/>
+<title>S&#45;&gt;M</title>
+<path fill="none" stroke="blue" d="M102.48,-45.13C118.77,-47.03 138.91,-49.06 157,-50 226.01,-53.58 305.22,-49.84 358.81,-46.15"/>
+<polygon fill="blue" stroke="blue" points="358.94,-49.65 368.67,-45.45 358.44,-42.67 358.94,-49.65"/>
</g>
-<!-- L&#45;&gt;S -->
+<!-- S&#45;&gt;L -->
<g id="edge3" class="edge">
-<title>L&#45;&gt;S</title>
-<path fill="none" stroke="black" stroke-dasharray="5,2" d="M241.22,-47.05C273.37,-42.05 323.25,-34.29 358.97,-28.73"/>
-<polygon fill="black" stroke="black" points="359.19,-32.24 368.54,-27.24 358.12,-25.32 359.19,-32.24"/>
-<text text-anchor="middle" x="305.62" y="-47.15" font-family="Times New Roman,serif" font-size="14.00">execute load first</text>
+<title>S&#45;&gt;L</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M102.43,-37.8C142.7,-33.77 212.1,-26.82 257.04,-22.32"/>
+<polygon fill="black" stroke="black" points="257.36,-25.8 266.96,-21.32 256.66,-18.84 257.36,-25.8"/>
+<text text-anchor="middle" x="203.88" y="-35.44" font-family="Times New Roman,serif" font-size="14.00">execute load first</text>
</g>
<!-- Y -->
<g id="node4" class="node">
<title>Y</title>
-<polygon fill="none" stroke="black" points="139,-90 0,-90 0,-54 139,-54 139,-90"/>
-<text text-anchor="middle" x="69.5" y="-66.95" font-family="Times New Roman,serif" font-size="14.00">Store p.y: independent</text>
+<polygon fill="none" stroke="black" points="139,-113 0,-113 0,-77 139,-77 139,-113"/>
+<text text-anchor="middle" x="69.5" y="-89.95" font-family="Times New Roman,serif" font-size="14.00">Store p.y: independent</text>
</g>
</g>
</svg>