summaryrefslogtreecommitdiff
path: root/chapter10a
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 /chapter10a
parente1bba17ff54400a34ede0eaacad863420d021119 (diff)
downloadSimple-fa7d56f72455828826d0ab7e1c142ca814e6e2aa.tar.gz
Simple-fa7d56f72455828826d0ab7e1c142ca814e6e2aa.zip
Reverse edges
Diffstat (limited to 'chapter10a')
-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
9 files changed, 151 insertions, 151 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>