[pypy-commit] extradoc extradoc: first draft of the talk
cfbolz
noreply at buildbot.pypy.org
Sat Jul 23 23:12:10 CEST 2011
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: extradoc
Changeset: r3838:698e19195980
Date: 2011-07-23 23:11 +0200
http://bitbucket.org/pypy/extradoc/changeset/698e19195980/
Log: first draft of the talk
diff --git a/talk/icooolps2011/talk/figures/bench.pdf b/talk/icooolps2011/talk/figures/bench.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0def86736f36c863a02694883f29401e911f9c25
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/map.svg b/talk/icooolps2011/talk/figures/map.svg
new file mode 100644
--- /dev/null
+++ b/talk/icooolps2011/talk/figures/map.svg
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg7587"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ width="345"
+ height="337.5"
+ xml:space="preserve"
+ sodipodi:docname="map.svg"><metadata
+ id="metadata7593"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs7591"><marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lend"
+ style="overflow:visible;"><path
+ id="path8573"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" /></marker><marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"><path
+ id="path8570"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" /></marker><marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Lstart"
+ style="overflow:visible"><path
+ id="path8552"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+ transform="scale(0.8) translate(12.5,0)" /></marker></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1680"
+ inkscape:window-height="1026"
+ id="namedview7589"
+ showgrid="false"
+ inkscape:zoom="1.3953574"
+ inkscape:cx="271.26815"
+ inkscape:cy="273.36393"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g7595" /><g
+ id="g7595"
+ inkscape:groupmode="layer"
+ inkscape:label="map"
+ transform="matrix(1.25,0,0,-1.25,0,337.5)"
+ style="display:inline"><path
+ inkscape:connector-curvature="0"
+ id="path7599"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 137,5.5 54,0 0,27 -54,0 0,-27 z" /><g
+ id="g7601"
+ transform="translate(-1.6,0)"><text
+ id="text7603"
+ transform="matrix(1,0,0,-1,150,15.9)"><tspan
+ id="tspan7605"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">map</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7607"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 41,89.5 94,0 0,27 -94,0 0,-27 z" /><g
+ id="g7609"><text
+ id="text7611"
+ transform="matrix(1,0,0,-1,49,99.9)"><tspan
+ id="tspan7613"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">map</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7615"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 85,89.5 0,27" /><g
+ id="g7617"><text
+ id="text7619"
+ transform="matrix(1,0,0,-1,93,99.9)"><tspan
+ id="tspan7621"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">"a": 0</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7623"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart)"
+ d="M 61.666923,88.403288 C 61.377172,34.917749 138.99637,51.116903 147.27,32.7199"
+ sodipodi:nodetypes="cc" /><g
+ id="g7629"
+ transform="translate(-46.4,0)"><text
+ id="text7631"
+ transform="matrix(1,0,0,-1,128,57.9)"
+ sodipodi:linespacing="125%"
+ style="line-height:125%"><tspan
+ id="tspan7633"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">add "a"</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7635"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 16,173.5 144,0 0,27 -144,0 0,-27 z" /><g
+ id="g7637"><text
+ id="text7639"
+ transform="matrix(1,0,0,-1,24,183.9)"><tspan
+ id="tspan7641"
+ sodipodi:role="line"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ y="0"
+ x="0">map</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7643"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 60,173.5 0,27" /><g
+ id="g7645"
+ transform="translate(-2.4324331,0)"><text
+ id="text7647"
+ transform="matrix(1,0,0,-1,68,183.9)"><tspan
+ id="tspan7649"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">"a": 0</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7651"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 110,173.5 0,27" /><g
+ id="g7653"
+ transform="translate(-1.8243247,0)"><text
+ id="text7655"
+ transform="matrix(1,0,0,-1,118,183.9)"><tspan
+ id="tspan7657"
+ sodipodi:role="line"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ y="0"
+ x="0">"b": 1</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7659"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart)"
+ d="m 88,172.5777 c 0,-15.04 0,-43.4477 0,-55.9677"
+ sodipodi:nodetypes="cc" /><g
+ id="g7665"
+ transform="translate(-54.179668,-2.2933193)"><text
+ id="text7667"
+ transform="matrix(1,0,0,-1,88,141.9)"><tspan
+ id="tspan7669"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">add "b"</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7671"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 152.5,89.5 93,0 0,27 -93,0 0,-27 z" /><g
+ id="g7673"><text
+ id="text7675"
+ transform="matrix(1,0,0,-1,160.5,99.9)"><tspan
+ id="tspan7677"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">map</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7679"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 196.5,89.5 0,27" /><g
+ id="g7681"><text
+ id="text7683"
+ transform="matrix(1,0,0,-1,204.5,99.9)"><tspan
+ id="tspan7685"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">"c": 0</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7687"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart)"
+ d="M 175.60008,87.896518 C 176.16004,70.709763 174.99,45.3699 169.67,32.6102"
+ sodipodi:nodetypes="cc" /><g
+ id="g7693"><text
+ id="text7695"
+ transform="matrix(1,0,0,-1,185,57.9)"><tspan
+ id="tspan7697"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">add "c"</tspan></text>
+</g></g><g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="instance"
+ style="display:inline"><path
+ inkscape:connector-curvature="0"
+ id="path7699"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 4.375,38.125 216.25,0 0,-33.75 -216.25,0 0,33.75 z" /><g
+ transform="matrix(1.25,0,0,-1.25,0,337.5)"
+ id="g7701"><text
+ id="text7703"
+ transform="scale(1,-1)"
+ x="8.2999992"
+ y="-249.89999"><tspan
+ id="tspan7705"
+ sodipodi:role="line"
+ y="-249.89999"
+ x="8.2999992"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">instance</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7707"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 88.125,38.125 0,-33.75" /><g
+ transform="matrix(1.25,0,0,-1.25,0,337.5)"
+ id="g7709"><text
+ id="text7711"
+ transform="matrix(1,0,0,-1,78.5,249.9)"><tspan
+ id="tspan7713"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">map</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7715"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 143.125,38.125 0,-33.75" /><g
+ transform="matrix(1.25,0,0,-1.25,-4,337.5)"
+ id="g7717"><text
+ id="text7719"
+ transform="matrix(1,0,0,-1,122.5,249.9)"><tspan
+ id="tspan7721"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">storage</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7723"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2Lend)"
+ d="m 116.25,38.75 c 0,15.95625 -29.023232,21.181513 -46.148391,25.07996 -17.125159,3.898448 -22.352245,6.470079 -22.395088,22.186633"
+ sodipodi:nodetypes="csc" /><path
+ inkscape:connector-curvature="0"
+ id="path7753"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 220.70834,20.891669 c 27.3875,0 30.31159,37.898872 30.22409,65.173872"
+ sodipodi:nodetypes="cc" /><path
+ inkscape:connector-curvature="0"
+ id="path7729"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 221.875,120.625 118.75,0 0,-33.75 -118.75,0 0,33.75 z" /><g
+ transform="matrix(1.25,0,0,-1.25,-2,337.5)"
+ id="g7731"><text
+ id="text7733"
+ transform="matrix(1,0,0,-1,185.5,183.9)"><tspan
+ id="tspan7735"
+ sodipodi:role="line"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">array</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7737"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 280.625,120.625 0,-33.75" /><g
+ transform="matrix(1.25,0,0,-1.25,0,337.5)"
+ id="g7739"><text
+ id="text7741"
+ transform="matrix(1,0,0,-1,232.5,183.9)"><tspan
+ id="tspan7743"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">4</tspan></text>
+</g><path
+ inkscape:connector-curvature="0"
+ id="path7745"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
+ d="m 310.625,120.625 0,-33.75" /><g
+ transform="matrix(1.25,0,0,-1.25,0,337.5)"
+ id="g7747"><text
+ id="text7749"
+ transform="matrix(1,0,0,-1,256.5,183.9)"><tspan
+ id="tspan7751"
+ y="0"
+ x="0"
+ style="font-size:14px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans">6</tspan></text>
+</g></g></svg>
\ No newline at end of file
diff --git a/talk/icooolps2011/talk/figures/map01.pdf b/talk/icooolps2011/talk/figures/map01.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d957a75d52a1e205b35f2139afe40e260bcaa5f7
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/map02.pdf b/talk/icooolps2011/talk/figures/map02.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c8f07cffbd5017707537c5fb18bf7a822384016f
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/metatrace01.pdf b/talk/icooolps2011/talk/figures/metatrace01.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0b7181b5a476093c16ff1233f37535378ef7bf8a
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/trace-levels-metatracing.svg b/talk/icooolps2011/talk/figures/trace-levels-metatracing.svg
new file mode 100644
--- /dev/null
+++ b/talk/icooolps2011/talk/figures/trace-levels-metatracing.svg
@@ -0,0 +1,833 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="631.4259"
+ height="572.15759"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="trace-levels-metatracing.svg"
+ inkscape:export-filename="/home/cfbolz/code/hguserdir/blog/figures/trace-levels.png"
+ inkscape:export-xdpi="90.25"
+ inkscape:export-ydpi="90.25"
+ style="enable-background:new">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.2630942"
+ inkscape:cx="354.09498"
+ inkscape:cy="304.13646"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="1026"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ showguides="true"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="1" />
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible">
+ <path
+ id="path4622"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path4167"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-8"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-2"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-96"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-7"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-15"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-36"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-2"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-28"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-6"
+ style="overflow:visible">
+ <path
+ id="path4167-01"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-77"
+ style="overflow:visible">
+ <path
+ id="path4167-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4"
+ style="overflow:visible">
+ <path
+ id="path4167-69"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-2"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4622-2"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-3"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4622-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-9"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4622-57"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-8"
+ style="overflow:visible">
+ <path
+ id="path4622-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-8"
+ style="overflow:visible">
+ <path
+ id="path4167-69-9"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3451"
+ style="overflow:visible">
+ <path
+ id="path3453"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-86"
+ style="overflow:visible">
+ <path
+ id="path4167-69-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend-8S"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-8S"
+ style="overflow:visible">
+ <path
+ id="path4788"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend-8Si"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-8Si"
+ style="overflow:visible">
+ <path
+ id="path5101"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-4"
+ style="overflow:visible">
+ <path
+ id="path4622-53"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-9.7365116,-257.07322)"
+ style="display:inline">
+ <rect
+ style="color:#000000;fill:#8081ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.96006155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985"
+ width="329.2496"
+ height="62.934772"
+ x="12.979328"
+ y="764.31604" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="27.294424"
+ y="791.90527"
+ id="text2987"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989"
+ x="27.294424"
+ y="791.90527">CPU</tspan></text>
+ <rect
+ style="color:#000000;fill:#ccffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-3"
+ width="328.78635"
+ height="211.02032"
+ x="12.979328"
+ y="482.31604" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="27.294424"
+ y="509.90527"
+ id="text2987-5"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-0"
+ x="27.294424"
+ y="509.90527">Interpreter</tspan><tspan
+ sodipodi:role="line"
+ x="27.294424"
+ y="534.90527"
+ id="tspan3342" /></text>
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-3-6"
+ width="328.78635"
+ height="211.02032"
+ x="12.979328"
+ y="260.31604" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="27.294424"
+ y="287.90527"
+ id="text2987-5-1"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-0-0"
+ x="27.294424"
+ y="287.90527">User Program</tspan></text>
+ <g
+ id="g3342"
+ transform="translate(0,-60)">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.70599997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101-96"
+ width="78.920738"
+ height="77.071976"
+ x="46.430405"
+ y="380.9437" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6-6"
+ y="395.75009"
+ x="50.956161"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="395.75009"
+ x="50.956161"
+ id="tspan2989-0-4-1"
+ sodipodi:role="line">f1</tspan></text>
+ <path
+ sodipodi:nodetypes="zzz"
+ inkscape:connector-curvature="0"
+ id="path3211-7"
+ d="m 87.709958,407.63909 c 27.779202,0 27.923372,33.26568 -0.02234,33.25279 -27.945707,-0.0129 -27.756856,-33.25279 0.02234,-33.25279 z"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:url(#Arrow1Lend-4);marker-end:url(#Arrow1Lend-4)" />
+ </g>
+ <g
+ transform="translate(92.491357,-133.72494)"
+ id="g3206-5-5-6">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101-96-4-6"
+ width="46.603455"
+ height="39.70393"
+ x="51.640251"
+ y="546.90326" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6-6-0-3"
+ y="562.09229"
+ x="56.548615"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="562.09229"
+ x="56.548615"
+ id="tspan2989-0-4-1-4-7"
+ sodipodi:role="line">f2</tspan></text>
+ </g>
+ <g
+ id="g4605"
+ transform="translate(4.1414692e-7,263.24881)">
+ <g
+ transform="translate(-22,-266)"
+ id="g3206">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101"
+ width="92.428955"
+ height="90.408653"
+ x="52.022858"
+ y="547.28589" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6"
+ y="562.09229"
+ x="56.548615"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="562.09229"
+ x="56.548615"
+ id="tspan2989-0-4"
+ sodipodi:role="line">main_loop</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="zzz"
+ inkscape:connector-curvature="0"
+ id="path3211"
+ d="m 72.730983,317.98129 c 27.779197,0 27.923367,33.26568 -0.02234,33.25279 -27.945707,-0.0129 -27.756856,-33.25279 0.02234,-33.25279 z"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:url(#Arrow1Lend)" />
+ </g>
+ <g
+ transform="translate(145.69796,242.03561)"
+ id="g4605-0">
+ <rect
+ y="281.28589"
+ x="6.0228596"
+ height="46.018757"
+ width="103.17617"
+ id="rect3101-9"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.50757229;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="10.548616"
+ y="296.09229"
+ id="text2987-5-6-92"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-0-4-3"
+ x="10.548616"
+ y="296.09229">BINARY_ADD</tspan></text>
+ </g>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot5062"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><flowRegion
+ id="flowRegion5064"><rect
+ id="rect5066"
+ width="839.43677"
+ height="705.08649"
+ x="-127.27922"
+ y="-361.01239" /></flowRegion><flowPara
+ id="flowPara5068" /></flowRoot> <g
+ transform="translate(105.8506,62.30214)"
+ id="g3206-86-2">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.847857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101-9-6"
+ width="118.33421"
+ height="63.81213"
+ x="52.022858"
+ y="547.28589" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6-92-4"
+ y="562.09229"
+ x="56.548615"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="562.09229"
+ x="56.548615"
+ id="tspan2989-0-4-3-7"
+ sodipodi:role="line">JUMP_IF_FALSE</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+ d="m 122.73353,563.04735 28.78935,-9.09137"
+ id="path3178"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="316.96429"
+ y="312.48734"
+ id="text4614"
+ sodipodi:linespacing="125%"
+ transform="translate(0,308.2677)"><tspan
+ sodipodi:role="line"
+ id="tspan4616"
+ x="316.96429"
+ y="312.48734" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="305.89285"
+ y="315.16592"
+ id="text4618"
+ sodipodi:linespacing="125%"
+ transform="translate(0,308.2677)"><tspan
+ sodipodi:role="line"
+ id="tspan4620"
+ x="305.89285"
+ y="315.16592" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="311.78571"
+ y="318.38019"
+ id="text4622"
+ sodipodi:linespacing="125%"
+ transform="translate(0,308.2677)"><tspan
+ sodipodi:role="line"
+ id="tspan4624"
+ x="311.78571"
+ y="318.38019" /></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+ d="m 83.536404,636.54687 26.467916,10.73006"
+ id="path3178-6-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="108.75043"
+ y="655.70093"
+ id="text4626-3-6"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4628-6-4"
+ x="108.75043"
+ y="655.70093"
+ style="font-size:14px">...</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4893"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ transform="translate(0,308.2677)"><flowRegion
+ id="flowRegion4895"><rect
+ id="rect4897"
+ width="112.85714"
+ height="475.71429"
+ x="697.14288"
+ y="36.237335"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /></flowRegion><flowPara
+ id="flowPara4899" /></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot4901"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ transform="translate(0,308.2677)"><flowRegion
+ id="flowRegion4903"><rect
+ id="rect4905"
+ width="117.14286"
+ height="477.14285"
+ x="695.71429"
+ y="36.237335"
+ style="font-size:14px" /></flowRegion><flowPara
+ id="flowPara4907" /></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="279.19788"
+ y="588.15918"
+ id="text4626-3-0"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4628-6-5"
+ x="279.19788"
+ y="588.15918"
+ style="font-size:14px">...</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+ d="m 123.3829,615.40923 31.73578,7.24791"
+ id="path3178-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.11568248px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend);display:inline"
+ d="m 124.90916,373.99027 45.33595,38.41103"
+ id="path3178-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer"
+ style="display:inline"
+ transform="translate(1.1903381e-8,57.816607)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.92068112px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4);display:inline"
+ d="m 338.94561,413.37957 87.94523,0"
+ id="path4681"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ style="display:inline"
+ id="g3353"
+ transform="translate(-305.73651,-312.88983)">
+ <rect
+ y="338.18433"
+ x="801.7019"
+ height="414.44675"
+ width="129.29953"
+ id="rect3078"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97962713;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ id="g3348">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Lend-4)"
+ d="m 800.0092,753.37186 c -44.19418,0 -44.18497,-46.20687 -43.59925,-163.71044 0.58573,-117.50357 -3.15152,-226.8482 43.14621,-250.34069"
+ id="path3211-7-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="czc" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-1-7"
+ y="332.08514"
+ x="804.76465"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ xml:space="preserve"><tspan
+ y="332.08514"
+ x="804.76465"
+ id="tspan2989-0-0-2"
+ sodipodi:role="line">Trace for f1</tspan></text>
+ </g>
+ <flowRoot
+ transform="translate(110,308.2677)"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="flowRoot4909"
+ xml:space="preserve"><flowRegion
+ id="flowRegion4911"><rect
+ ry="0"
+ style="font-size:14px"
+ y="33.380196"
+ x="696.42853"
+ height="474.28592"
+ width="123.57162"
+ id="rect4913" /></flowRegion><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara4919">ops from</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5621">main_loop</flowPara><flowPara
+ id="flowPara4923"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5645">...</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5651" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5675" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5671">ops from</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5647">BINARY_ADD</flowPara><flowPara
+ id="flowPara4935"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5667">...</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5629" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5665" /><flowPara
+ id="flowPara4973"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">more ops from</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5687">main_loop</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5677"></flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5691">...</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5683" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5639">ops_from</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5395">JUMP_IF_FALSE</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5397">guard(...)</flowPara><flowPara
+ id="flowPara4985"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5641" /><flowPara
+ id="flowPara4987"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">jump to start</flowPara></flowRoot> </g>
+ <g
+ transform="translate(-350.96204,-156.54852)"
+ style="display:inline"
+ id="g3434">
+ <rect
+ y="542.21619"
+ x="354.40051"
+ height="56.736866"
+ width="328.9693"
+ id="rect2985-3-1"
+ style="color:#000000;fill:#ccffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-9"
+ y="569.90527"
+ x="371.27411"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ xml:space="preserve"><tspan
+ y="569.90527"
+ x="371.27411"
+ id="tspan2989-0-3"
+ sodipodi:role="line">Tracer</tspan></text>
+ </g>
+ <rect
+ style="color:#000000;fill:#8080ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.96006155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-4"
+ width="625.20306"
+ height="62.934772"
+ x="3.2428167"
+ y="449.42621" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="17.557913"
+ y="477.01544"
+ id="text2987-0"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-08"
+ x="17.557913"
+ y="477.01544">CPU</tspan></text>
+ </g>
+ <g
+ style="display:none"
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="arrow"
+ transform="translate(1.1903381e-8,57.816607)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend-8Si);display:inline"
+ d="m 408.82192,376.13064 c -0.71528,42.15343 -4.29616,68.30777 -135.67284,68.30777"
+ id="path4681-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/talk/icooolps2011/talk/figures/trace-levels-tracing.svg b/talk/icooolps2011/talk/figures/trace-levels-tracing.svg
new file mode 100644
--- /dev/null
+++ b/talk/icooolps2011/talk/figures/trace-levels-tracing.svg
@@ -0,0 +1,991 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="527.71234"
+ height="512.15759"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="trace-levels-tracing.svg"
+ inkscape:export-filename="/home/cfbolz/code/hguserdir/blog/figures/trace-levels.png"
+ inkscape:export-xdpi="90.25"
+ inkscape:export-ydpi="90.25"
+ style="enable-background:new">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.2630942"
+ inkscape:cx="374.3166"
+ inkscape:cy="256.08026"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer5"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="1026"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ showguides="true"
+ fit-margin-left="2"
+ fit-margin-top="2"
+ fit-margin-right="2"
+ fit-margin-bottom="1" />
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible">
+ <path
+ id="path4622"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path4167"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-8"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-2"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-96"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-7"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-15"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-36"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-2"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-28"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4167-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-6"
+ style="overflow:visible">
+ <path
+ id="path4167-01"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-77"
+ style="overflow:visible">
+ <path
+ id="path4167-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4"
+ style="overflow:visible">
+ <path
+ id="path4167-69"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-2"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4622-2"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-3"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4622-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-9"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4622-57"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-8"
+ style="overflow:visible">
+ <path
+ id="path4622-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-8"
+ style="overflow:visible">
+ <path
+ id="path4167-69-9"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3451"
+ style="overflow:visible">
+ <path
+ id="path3453"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-86"
+ style="overflow:visible">
+ <path
+ id="path4167-69-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend-8S"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-8S"
+ style="overflow:visible">
+ <path
+ id="path4788"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend-8Si"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-8Si"
+ style="overflow:visible">
+ <path
+ id="path5101"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-4"
+ style="overflow:visible">
+ <path
+ id="path4622-53"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-5"
+ style="overflow:visible">
+ <path
+ id="path4622-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-7"
+ style="overflow:visible">
+ <path
+ id="path4167-69-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6516"
+ style="overflow:visible">
+ <path
+ id="path6518"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-3"
+ style="overflow:visible">
+ <path
+ id="path4167-69-90"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6627"
+ style="overflow:visible">
+ <path
+ id="path6629"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-2"
+ style="overflow:visible">
+ <path
+ id="path4167-69-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6823"
+ style="overflow:visible">
+ <path
+ id="path6825"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-56"
+ style="overflow:visible">
+ <path
+ id="path4622-14"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-9.7365115,-317.07322)"
+ style="display:inline">
+ <rect
+ style="color:#000000;fill:#8081ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.96006155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985"
+ width="329.2496"
+ height="62.934772"
+ x="12.979328"
+ y="764.31604" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="27.294424"
+ y="791.90527"
+ id="text2987"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989"
+ x="27.294424"
+ y="791.90527">CPU</tspan></text>
+ <rect
+ style="color:#000000;fill:#ccffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-3"
+ width="328.78635"
+ height="211.02032"
+ x="12.979328"
+ y="542.31604" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="27.294424"
+ y="569.90527"
+ id="text2987-5"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-0"
+ x="27.294424"
+ y="569.90527">Interpreter</tspan><tspan
+ sodipodi:role="line"
+ x="27.294424"
+ y="594.90527"
+ id="tspan3342" /></text>
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-3-6"
+ width="328.78635"
+ height="211.02032"
+ x="12.979328"
+ y="320.31604" />
+ <g
+ id="g4605"
+ transform="translate(4.1414692e-7,323.24881)">
+ <g
+ transform="translate(-22,-266)"
+ id="g3206">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101"
+ width="92.428955"
+ height="90.408653"
+ x="52.022858"
+ y="547.28589" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6"
+ y="562.09229"
+ x="56.548615"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="562.09229"
+ x="56.548615"
+ id="tspan2989-0-4"
+ sodipodi:role="line">main_loop</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="zzz"
+ inkscape:connector-curvature="0"
+ id="path3211"
+ d="m 72.730983,317.98129 c 27.779197,0 27.923367,33.26568 -0.02234,33.25279 -27.945707,-0.0129 -27.756856,-33.25279 0.02234,-33.25279 z"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:url(#Arrow1Lend)" />
+ </g>
+ <g
+ transform="translate(145.69796,302.03561)"
+ id="g4605-0">
+ <rect
+ y="281.28589"
+ x="6.0228596"
+ height="46.018757"
+ width="103.17617"
+ id="rect3101-9"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.50757229;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="10.548616"
+ y="296.09229"
+ id="text2987-5-6-92"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-0-4-3"
+ x="10.548616"
+ y="296.09229">BINARY_ADD</tspan></text>
+ </g>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot5062"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><flowRegion
+ id="flowRegion5064"><rect
+ id="rect5066"
+ width="839.43677"
+ height="705.08649"
+ x="-127.27922"
+ y="-361.01239" /></flowRegion><flowPara
+ id="flowPara5068" /></flowRoot> <g
+ transform="translate(105.8506,122.30214)"
+ id="g3206-86-2">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.847857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101-9-6"
+ width="118.33421"
+ height="63.81213"
+ x="52.022858"
+ y="547.28589" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6-92-4"
+ y="562.09229"
+ x="56.548615"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="562.09229"
+ x="56.548615"
+ id="tspan2989-0-4-3-7"
+ sodipodi:role="line">JUMP_IF_FALSE</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+ d="m 122.73353,314.77965 28.78935,-9.09137"
+ id="path3178"
+ inkscape:connector-curvature="0"
+ transform="translate(0,308.2677)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="316.96429"
+ y="312.48734"
+ id="text4614"
+ sodipodi:linespacing="125%"
+ transform="translate(0,308.2677)"><tspan
+ sodipodi:role="line"
+ id="tspan4616"
+ x="316.96429"
+ y="312.48734" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="305.89285"
+ y="315.16592"
+ id="text4618"
+ sodipodi:linespacing="125%"
+ transform="translate(0,308.2677)"><tspan
+ sodipodi:role="line"
+ id="tspan4620"
+ x="305.89285"
+ y="315.16592" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="311.78571"
+ y="318.38019"
+ id="text4622"
+ sodipodi:linespacing="125%"
+ transform="translate(0,308.2677)"><tspan
+ sodipodi:role="line"
+ id="tspan4624"
+ x="311.78571"
+ y="318.38019" /></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+ d="m 83.536404,696.54687 26.467916,10.73006"
+ id="path3178-6-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="108.75043"
+ y="715.70093"
+ id="text4626-3-6"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4628-6-4"
+ x="108.75043"
+ y="715.70093"
+ style="font-size:14px">...</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4893"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ transform="translate(0,308.2677)"><flowRegion
+ id="flowRegion4895"><rect
+ id="rect4897"
+ width="112.85714"
+ height="475.71429"
+ x="697.14288"
+ y="36.237335"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /></flowRegion><flowPara
+ id="flowPara4899" /></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot4901"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ transform="translate(0,308.2677)"><flowRegion
+ id="flowRegion4903"><rect
+ id="rect4905"
+ width="117.14286"
+ height="477.14285"
+ x="695.71429"
+ y="36.237335"
+ style="font-size:14px" /></flowRegion><flowPara
+ id="flowPara4907" /></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="279.19788"
+ y="648.15918"
+ id="text4626-3-0"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4628-6-5"
+ x="279.19788"
+ y="648.15918"
+ style="font-size:14px">...</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
+ d="m 123.3829,675.40923 31.73578,7.24791"
+ id="path3178-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="tracing"
+ style="display:inline"
+ transform="translate(1.1920929e-7,-2.1833934)">
+ <g
+ transform="translate(-9.7365125,-314.88983)"
+ style="display:inline"
+ id="g3434">
+ <rect
+ y="542.31604"
+ x="354.97931"
+ height="211.02032"
+ width="178.36209"
+ id="rect2985-3-1"
+ style="color:#000000;fill:#ccffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-9"
+ y="569.90527"
+ x="371.27411"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ xml:space="preserve"><tspan
+ y="569.90527"
+ x="371.27411"
+ id="tspan2989-0-3"
+ sodipodi:role="line">Tracer</tspan></text>
+ </g>
+ <rect
+ style="color:#000000;fill:#8080ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.96006155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-4"
+ width="521.4895"
+ height="62.934772"
+ x="3.2428167"
+ y="449.42621" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="17.557913"
+ y="477.01544"
+ id="text2987-0"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-08"
+ x="17.557913"
+ y="477.01544">CPU</tspan></text>
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.48563313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-3-6-1"
+ width="520.37933"
+ height="211.02032"
+ x="3.2428164"
+ y="5.4262099" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="trace"
+ style="display:none"
+ transform="translate(1.1920929e-7,-2.1833934)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.92068112px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4);display:inline"
+ d="m 528.83844,336.58403 87.94523,0"
+ id="path4681"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ style="display:inline"
+ id="g3353"
+ transform="translate(-173.73651,-312.88983)">
+ <rect
+ y="338.18433"
+ x="801.7019"
+ height="414.44675"
+ width="129.29953"
+ id="rect3078"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.97962713;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ id="g3348">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Lend-4)"
+ d="m 800.0092,753.37186 c -44.19418,0 -44.18497,-46.20687 -43.59925,-163.71044 0.58573,-117.50357 -3.15152,-226.8482 43.14621,-250.34069"
+ id="path3211-7-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="czc" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-1-7"
+ y="332.08514"
+ x="804.76465"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ xml:space="preserve"><tspan
+ y="332.08514"
+ x="804.76465"
+ id="tspan2989-0-0-2"
+ sodipodi:role="line">Trace for f1</tspan></text>
+ </g>
+ <flowRoot
+ transform="translate(110,308.2677)"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ id="flowRoot4909"
+ xml:space="preserve"><flowRegion
+ id="flowRegion4911"><rect
+ ry="0"
+ style="font-size:14px"
+ y="33.380196"
+ x="696.42853"
+ height="474.28592"
+ width="123.57162"
+ id="rect4913" /></flowRegion><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara4919">bytecodes from f1</flowPara><flowPara
+ id="flowPara4923"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">...</flowPara><flowPara
+ id="flowPara4933"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">BINARY_ADD</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5389" /><flowPara
+ id="flowPara4935"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">...</flowPara><flowPara
+ id="flowPara4937"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ id="flowPara4939"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">bytecodes from</flowPara><flowPara
+ id="flowPara4941"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">f2</flowPara><flowPara
+ id="flowPara4957"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ id="flowPara4961"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ id="flowPara6968"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">...</flowPara><flowPara
+ id="flowPara6966"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ id="flowPara6958"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5425">more bytecodes</flowPara><flowPara
+ id="flowPara4973"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">from</flowPara><flowPara
+ id="flowPara4975"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">f1</flowPara><flowPara
+ id="flowPara4977"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ id="flowPara4979"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">...</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5395">JUMP_IF_FALSE</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ id="flowPara5397">guard(...)</flowPara><flowPara
+ id="flowPara4985"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono" /><flowPara
+ id="flowPara4987"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono">jump to start</flowPara></flowRoot> </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="running"
+ style="display:none"
+ transform="translate(1.1920929e-7,-2.1833934)">
+ <rect
+ style="color:#000000;fill:#8080ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.96006155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2985-4-6"
+ width="756.6264"
+ height="62.934772"
+ x="3.2428167"
+ y="449.42621" />
+ </g>
+ <g
+ style="display:none"
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="arrow"
+ transform="translate(1.1920929e-7,-2.1833934)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend-8Si);display:inline"
+ d="m 408.82192,376.13064 c -0.71528,42.15343 -4.29616,68.30777 -135.67284,68.30777"
+ id="path4681-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer6"
+ inkscape:label="top"
+ transform="translate(1.1920929e-7,-2.1833934)">
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="17.557913"
+ y="477.01544"
+ id="text2987-0-2"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-08-0"
+ x="17.557913"
+ y="477.01544">CPU</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
+ x="17.557913"
+ y="33.015442"
+ id="text2987-5-1"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2989-0-0"
+ x="17.557913"
+ y="33.015442">User Program</tspan></text>
+ <g
+ transform="translate(-9.736511,-314.88984)"
+ style="display:inline"
+ id="g3342">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.70599997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101-96"
+ width="78.920738"
+ height="77.071976"
+ x="46.430405"
+ y="380.9437" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6-6"
+ y="395.75009"
+ x="50.956161"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="395.75009"
+ x="50.956161"
+ id="tspan2989-0-4-1"
+ sodipodi:role="line">f1</tspan></text>
+ <path
+ sodipodi:nodetypes="zzz"
+ inkscape:connector-curvature="0"
+ id="path3211-7"
+ d="m 87.709958,407.63909 c 27.779202,0 27.923372,33.26568 -0.02234,33.25279 -27.945707,-0.0129 -27.756856,-33.25279 0.02234,-33.25279 z"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:url(#Arrow1Lend-4);marker-end:url(#Arrow1Lend-4)" />
+ </g>
+ <g
+ style="display:inline"
+ transform="translate(82.754845,-388.61478)"
+ id="g3206-5-5-6">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3101-96-4-6"
+ width="46.603455"
+ height="39.70393"
+ x="51.640251"
+ y="546.90326" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987-5-6-6-0-3"
+ y="562.09229"
+ x="56.548615"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ xml:space="preserve"><tspan
+ y="562.09229"
+ x="56.548615"
+ id="tspan2989-0-4-1-4-7"
+ sodipodi:role="line">f2</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.11568248px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend);display:inline"
+ d="m 115.17265,119.10043 45.33594,38.41103"
+ id="path3178-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/talk/icooolps2011/talk/figures/trace01.pdf b/talk/icooolps2011/talk/figures/trace01.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..252b5089e72d3626e636cd02397204a464c7ca22
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/trace02.pdf b/talk/icooolps2011/talk/figures/trace02.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ece12fe0c3f96856afea26c49d92ade630db9328
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/trace03.pdf b/talk/icooolps2011/talk/figures/trace03.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..04b38b8996eb2c297214c017bbe1cce1f8f64bdb
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/trace04.pdf b/talk/icooolps2011/talk/figures/trace04.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..472b798aeae005652fc0d749ed6571117c5819d9
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/figures/trace05.pdf b/talk/icooolps2011/talk/figures/trace05.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..977e3bbda8d4d349f27f06fcdaa3bd100e95e1a7
GIT binary patch
[cut]
diff --git a/talk/icooolps2011/talk/talk.tex b/talk/icooolps2011/talk/talk.tex
new file mode 100644
--- /dev/null
+++ b/talk/icooolps2011/talk/talk.tex
@@ -0,0 +1,577 @@
+\documentclass[utf8x]{beamer}
+
+% This file is a solution template for:
+
+% - Talk at a conference/colloquium.
+% - Talk length is about 20min.
+% - Style is ornate.
+
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+ % or ...
+
+ %\setbeamercovered{transparent}
+ % or whatever (possibly just delete it)
+}
+
+
+\usepackage[english]{babel}
+\usepackage{listings}
+\usepackage{fancyvrb}
+\usepackage{ulem}
+\usepackage{color}
+\usepackage{alltt}
+
+\usepackage[utf8x]{inputenc}
+
+\input{pygments}
+
+\newcommand\redsout[1]{{\color{red}\sout{\hbox{\color{black}{#1}}}}}
+\newcommand{\noop}{}
+
+% or whatever
+
+% Or whatever. Note that the encoding and the font should match. If T1
+% does not look nice, try deleting the line with the fontenc.
+
+
+\title[Runtime Feedback in a Meta-Tracing JIT]{Runtime Feedback in a Meta-Tracing JIT for Efficient Dynamic Languages}
+
+\author[Carl Friedrich Bolz et. al.]{\emph{Carl Friedrich Bolz}\inst{1} \and Antonio Cuni\inst{3} \and Maciej Fijałkowski\inst{2} \and Michael Leuschel\inst{1} \and Samuele Pedroni\inst{3} \and Armin Rigo\inst{1}}
+% - Give the names in the same order as the appear in the paper.
+% - Use the \inst{?} command only if the authors have different
+% affiliation.
+
+\institute[Heinrich-Heine-Universität Düsseldorf]
+{$^1$Heinrich-Heine-Universität Düsseldorf, STUPS Group, Germany \and
+
+ $^2$merlinux GmbH, Hildesheim, Germany \and
+
+ $^3$Open End, Göteborg, Sweden \and
+}
+
+\date{ICOOOLPS 2011, July 26, 2011}
+% - Either use conference name or its abbreviation.
+% - Not really informative to the audience, more for people (including
+% yourself) who are reading the slides online
+
+
+% If you have a file called "university-logo-filename.xxx", where xxx
+% is a graphic format that can be processed by latex or pdflatex,
+% resp., then you can add a logo as follows:
+
+
+
+
+% Delete this, if you do not want the table of contents to pop up at
+% the beginning of each subsection:
+%\AtBeginSubsection[]
+%{
+% \begin{frame}<beamer>
+% \frametitle{Outline}
+% \tableofcontents[currentsection,currentsubsection]
+% \end{frame}
+%}
+
+
+% If you wish to uncover everything in a step-wise fashion, uncomment
+% the following command:
+
+%\beamerdefaultoverlayspecification{<+->}
+
+
+\begin{document}
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+\begin{frame}
+ \frametitle{Good JIT Compilers for Dynamic Languages are Hard}
+ \begin{itemize}
+ \item implementing the object model well is crucial
+ \item recent languages like Python, Ruby, JS have complex core semantics
+ \item many corner cases, even hard to interpret correctly
+ \pause
+ \item to get efficiency, the correct fast path through the tree of implementations must be generated XXX
+ \item feedback of runtime information to the compiler is necessary
+ \item correct exploitation of this information in the compiler
+ \end{itemize}
+ \pause
+ \begin{block}{Problems}
+ \begin{enumerate}
+ \item implement all corner-cases of semantics correctly
+ \item ... and the common cases efficiently
+ \item feed back and exploit runtime information
+ \end{enumerate}
+ \end{block}
+\end{frame}
+
+\begin{frame}
+ \frametitle{A Tracing JIT}
+ \includegraphics[scale=0.5]{figures/trace01.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{A Tracing JIT}
+ \includegraphics[scale=0.5]{figures/trace02.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{A Tracing JIT}
+ \includegraphics[scale=0.5]{figures/trace03.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{A Tracing JIT}
+ \includegraphics[scale=0.5]{figures/trace04.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Tracing JITs}
+ Advantages:
+ \begin{itemize}
+ \item can be added to existing VM
+ \item interpreter does a lot of work
+ \item can fall back to interpreter for uncommon paths
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Granularity Problems}
+ \begin{itemize}
+ \item if the tracer records bytecode, not enough information is there
+ \item many dynamic languages have bytecodes that contain complex logic
+ \item need to expand the bytecode in the trace into something more explicit
+ \item this duplicates the lanuage semantics in the tracer/optimizer
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Example: Attribute Reads in Python}
+ What happens when an attribute \texttt{x.m} is read? (simplified)
+ \begin{itemize}
+ \item check for \texttt{x.\_\_getattribute\_\_}, if there, call it
+ \pause
+ \item look for the attribute in the object's dictionary, if it's there, return it
+ \pause
+ \item walk up the MRO and look in each class' dictionary for the attribute
+ \pause
+ \item if the attribute is found, call its \texttt{\_\_get\_\_} attribute and return the result
+ \pause
+ \item if the attribute is not found, look for \texttt{x.\_\_getattr\_\_}, if there, call it
+ \pause
+ \item raise an \texttt{AttributeError}
+ \end{itemize}
+ \pause
+ all this is one bytecode
+\end{frame}
+
+\begin{frame}
+ \frametitle{Idea of Meta-Tracing}
+ \includegraphics[scale=0.5]{figures/trace05.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Meta-Tracing}
+ \includegraphics[scale=0.5]{figures/metatrace01.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Meta-Tracing JITs}
+ \begin{block}{Advantages:}
+ \begin{itemize}
+ \item semantics is always like that of the interpreter
+ \item trace fully contains language semantics
+ \item meta-tracers can be reused for various interpreters
+ \end{itemize}
+ \end{block}
+ \pause
+ a few meta-tracing systems have been built:
+ \begin{itemize}
+ \item Sullivan et.al. describe a meta-tracer using the Dynamo RIO system
+ \item Yermolovich et.al. run a Lua implementation on top of a tracing JS implementation
+ \item SPUR is a tracing JIT for CLR bytecodes, which is used to speed up a JS implementation in C\#
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{PyPy}
+ A general environment for implementing dynamic languages
+ \pause
+ \begin{block}{Approach}
+ \begin{itemize}
+ \item write an interpreter for the language in RPython
+ \item compilable to an efficient C-based VM
+ \pause
+ \item (RPython is a restricted subset of Python)
+ \end{itemize}
+ \end{block}
+ \pause
+ \begin{block}{PyPy's Meta-Tracing JIT}
+ \begin{itemize}
+ \item PyPy contains a meta-tracing JIT for interpreters in RPython
+ \item needs a few source-code hints (or annotations) in the interpreter
+ \item powerful general optimizations
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Runtime Feedback}
+ Problems of Naive Meta-Tracing:
+ \begin{itemize}
+ \item no runtime feedback of user-level types
+ \item tracer does not know about invariants in the interpreter
+ \end{itemize}
+ \pause
+ \begin{block}{Proposed Solutions}
+ \begin{itemize}
+ \item introduce \textit{hints} that the interpreter-author can use
+ \item hints are annotation in the interpreter
+ \item they give information to the meta-tracer
+ \pause
+ \item two hints presented here
+ \item one to induce runtime feedback of arbitrary information
+ \item the second one to influence constant folding
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+
+\begin{frame}
+ \frametitle{Example: Instances with Maps}
+ \includegraphics[scale=0.5]{figures/map01.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Example: Instances with Maps}
+ \includegraphics[scale=0.5]{figures/map02.pdf}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Map Implementation}
+
+\begin{Verbatim}[commandchars=\\\{\}]
+\PY{k}{class} \PY{n+nc}{Map}\PY{p}{(}\PY{n+nb}{object}\PY{p}{)}\PY{p}{:}
+ \PY{k}{def} \PY{n+nf}{\PYZus{}\PYZus{}init\PYZus{}\PYZus{}}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{indexes}\PY{p}{)}\PY{p}{:}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{indexes} \PY{o}{=} \PY{n}{indexes}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{other\PYZus{}maps} \PY{o}{=} \PY{p}{\PYZob{}}\PY{p}{\PYZcb{}}
+
+ \PY{k}{def} \PY{n+nf}{getindex}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{)}\PY{p}{:}
+ \PY{k}{return} \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{indexes}\PY{o}{.}\PY{n}{get}\PY{p}{(}\PY{n}{name}\PY{p}{,} \PY{o}{-}\PY{l+m+mi}{1}\PY{p}{)}
+
+ \PY{k}{def} \PY{n+nf}{add\PYZus{}attribute}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{)}\PY{p}{:}
+ \PY{o}{.}\PY{o}{.}\PY{o}{.}
+
+\PY{n}{EMPTY\PYZus{}MAP} \PY{o}{=} \PY{n}{Map}\PY{p}{(}\PY{p}{\PYZob{}}\PY{p}{\PYZcb{}}\PY{p}{)}
+\end{Verbatim}
+\end{frame}
+
+\begin{frame}[plain,containsverbatim]
+\begin{Verbatim}[commandchars=\\\{\}]
+\PY{k}{class} \PY{n+nc}{Instance}\PY{p}{(}\PY{n+nb}{object}\PY{p}{)}\PY{p}{:}
+ \PY{k}{def} \PY{n+nf}{\PYZus{}\PYZus{}init\PYZus{}\PYZus{}}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{map} \PY{o}{=} \PY{n}{EMPTY\PYZus{}MAP}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{storage} \PY{o}{=} \PY{p}{[}\PY{p}{]}
+
+ \PY{k}{def} \PY{n+nf}{getfield}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{)}\PY{p}{:}
+ \PY{n}{index} \PY{o}{=} \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{map}\PY{o}{.}\PY{n}{getindex}\PY{p}{(}\PY{n}{name}\PY{p}{)}
+ \PY{k}{if} \PY{n}{index} \PY{o}{!=} \PY{o}{-}\PY{l+m+mi}{1}\PY{p}{:}
+ \PY{k}{return} \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{storage}\PY{p}{[}\PY{n}{index}\PY{p}{]}
+ \PY{k}{return} \PY{n+nb+bp}{None}
+
+ \PY{k}{def} \PY{n+nf}{write\PYZus{}attribute}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{,} \PY{n}{value}\PY{p}{)}\PY{p}{:}
+ \PY{o}{.}\PY{o}{.}\PY{o}{.}
+\end{Verbatim}
+\end{frame}
+
+\begin{frame}[plain,containsverbatim]
+\frametitle{Trace for code \texttt{inst.a + inst.b}}
+\begin{lstlisting}[mathescape,escapechar=|,basicstyle=\ttfamily]]
+# $inst_1$.getattr("a")
+$map_1$ = $inst_1$.map
+$index_1$ = Map.getindex($map_1$, "a")
+guard($index_1$ != -1)
+$storage_1$ = $inst_1$.storage
+$result_1$ = $storage_1$[$index_1$]
+|\pause|
+# $inst_1$.getattr("b")
+$map_2$ = $inst_1$.map
+$index_2$ = Map.getindex($map_2$, "b")
+guard($index_2$ != -1)
+$storage_2$ = $inst_1$.storage
+$result_2$ = $storage_2$[$index_2$]
+
+$v_1$ = $result_1$ + $result_2$
+return($v_1$)
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[plain,containsverbatim]
+\frametitle{Trace for code \texttt{inst.a + inst.b}}
+\begin{lstlisting}[mathescape,escapechar=|,basicstyle=\ttfamily]]
+# $inst_1$.getattr("a")
+$map_1$ = $inst_1$.map
+$index_1$ = Map.getindex($map_1$, "a")
+guard($index_1$ != -1)
+$storage_1$ = $inst_1$.storage
+$result_1$ = $storage_1$[$index_1$]
+
+# $inst_1$.getattr("b")
+$map_2$ = $inst_1$.map
+$index_2$ = Map.getindex($map_2$, "b")
+guard($index_2$ != -1)
+$storage_2$ = $inst_1$.storage
+$result_2$ = $storage_2$[$index_2$]
+
+$v_1$ = $result_1$ + $result_2$
+return($v_1$)
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+ \frametitle{Runtime Feedback Controlled by the Interpreter Author}
+ \begin{itemize}
+ \item give the interpreter author a way to feed back runtime values into the trace
+ \item written as \texttt{promote(x)}
+ \item captures the argument's runtime value during tracing
+ \item should be used only for variables that take few values
+ \end{itemize}
+ \pause
+
+ \begin{minipage}[b]{6cm}
+ \centering
+ {\noop
+ \begin{lstlisting}[mathescape,basicstyle=\ttfamily]
+def f1(x, y):
+ promote(x)
+ z = x * 2 + 1
+ return z + y
+ \end{lstlisting}
+ }
+ \end{minipage}
+ \vline
+ \hspace{0.5cm}
+ \begin{minipage}[b]{4cm}
+ {\noop
+ \begin{lstlisting}[mathescape,basicstyle=\ttfamily]
+guard($x_1$ == 4)
+$v_1$ = $x_1$ * 2
+$z_1$ = $v_1$ + 1
+$v_2$ = $z_1$ + $y_1$
+return($v_2$)
+ \end{lstlisting}
+ }
+ \end{minipage}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+ \frametitle{Runtime Feedback Controlled by the Interpreter Author}
+ \begin{itemize}
+ \item give the interpreter author a way to feed back runtime values into the trace
+ \item written as \texttt{promote(x)}
+ \item captures the argument's runtime value during tracing
+ \item should be used only for variables that take few values
+ \end{itemize}
+
+ \begin{minipage}[b]{6cm}
+ \centering
+ {\noop
+ \begin{lstlisting}[mathescape,basicstyle=\ttfamily]
+def f1(x, y):
+ promote(x)
+ z = x * 2 + 1
+ return z + y
+
+
+ \end{lstlisting}
+ }
+ \end{minipage}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+ \frametitle{Runtime Feedback Controlled by the Interpreter Author}
+ \begin{itemize}
+ \item give the interpreter author a way to feed back runtime values into the trace
+ \item written as \texttt{promote(x)}
+ \item captures the argument's runtime value during tracing
+ \item should be used only for variables that take few values
+ \end{itemize}
+
+ \begin{minipage}[b]{6cm}
+ \centering
+ {\noop
+ \begin{lstlisting}[mathescape,basicstyle=\ttfamily]
+def f1(x, y):
+ promote(x)
+ z = x * 2 + 1
+ return z + y
+
+
+ \end{lstlisting}
+ }
+ \end{minipage}
+ \vline
+ \hspace{0.5cm}
+ \begin{minipage}[b]{4cm}
+ {\noop
+ \begin{lstlisting}[mathescape,basicstyle=\ttfamily]
+guard($x_1$ == 4)
+$v_1$ = $x_1$ * 2
+$z_1$ = $v_1$ + 1
+$v_2$ = $z_1$ + $y_1$
+return($v_2$)
+ \end{lstlisting}
+ }
+ \end{minipage}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Foldable Operations Defined by the Interpreter Author}
+ \begin{itemize}
+ \item let the interpreter author define foldable functions
+ \item those functions typically don't look foldable
+ \item otherwise there is no need for an annotation
+ \item done via a function decorator \texttt{@elidable}
+ \pause
+ \item decorated functions should be pure
+ \item or have idempotent side effects (such as a function that memoizes)
+ \item trace optimizer will remove calls to such functions with constant arguments
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Adding Hints to Maps}
+
+\begin{Verbatim}[commandchars=\\\{\}]
+\PY{k}{class} \PY{n+nc}{Map}\PY{p}{(}\PY{n+nb}{object}\PY{p}{)}\PY{p}{:}
+ \PY{k}{def} \PY{n+nf}{\PYZus{}\PYZus{}init\PYZus{}\PYZus{}}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{indexes}\PY{p}{)}\PY{p}{:}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{indexes} \PY{o}{=} \PY{n}{indexes}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{other\PYZus{}maps} \PY{o}{=} \PY{p}{\PYZob{}}\PY{p}{\PYZcb{}}
+
+ \PY{n+nd}{@elidable}
+ \PY{k}{def} \PY{n+nf}{getindex}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{)}\PY{p}{:}
+ \PY{k}{return} \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{indexes}\PY{o}{.}\PY{n}{get}\PY{p}{(}\PY{n}{name}\PY{p}{,} \PY{o}{-}\PY{l+m+mi}{1}\PY{p}{)}
+
+ \PY{n+nd}{@elidable}
+ \PY{k}{def} \PY{n+nf}{add\PYZus{}attribute}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{)}\PY{p}{:}
+ \PY{o}{.}\PY{o}{.}\PY{o}{.}
+
+\PY{n}{EMPTY\PYZus{}MAP} \PY{o}{=} \PY{n}{Map}\PY{p}{(}\PY{p}{)}
+\end{Verbatim}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Adding Hints to Maps}
+
+\begin{Verbatim}[commandchars=\\\{\}]
+\PY{n}{EMPTY\PYZus{}MAP} \PY{o}{=} \PY{n}{Map}\PY{p}{(}\PY{p}{\PYZob{}}\PY{p}{\PYZcb{}}\PY{p}{)}
+
+\PY{k}{class} \PY{n+nc}{Instance}\PY{p}{(}\PY{n+nb}{object}\PY{p}{)}\PY{p}{:}
+ \PY{k}{def} \PY{n+nf}{\PYZus{}\PYZus{}init\PYZus{}\PYZus{}}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{map} \PY{o}{=} \PY{n}{EMPTY\PYZus{}MAP}
+ \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{storage} \PY{o}{=} \PY{p}{[}\PY{p}{]}
+
+ \PY{k}{def} \PY{n+nf}{getfield}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{)}\PY{p}{:}
+ \PY{n}{promote}\PY{p}{(}\PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{map}\PY{p}{)}
+ \PY{n}{index} \PY{o}{=} \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{map}\PY{o}{.}\PY{n}{getindex}\PY{p}{(}\PY{n}{name}\PY{p}{)}
+ \PY{k}{if} \PY{n}{index} \PY{o}{!=} \PY{o}{-}\PY{l+m+mi}{1}\PY{p}{:}
+ \PY{k}{return} \PY{n+nb+bp}{self}\PY{o}{.}\PY{n}{storage}\PY{p}{[}\PY{n}{index}\PY{p}{]}
+ \PY{k}{return} \PY{n+nb+bp}{None}
+
+ \PY{k}{def} \PY{n+nf}{write\PYZus{}attribute}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{,} \PY{n}{name}\PY{p}{,} \PY{n}{value}\PY{p}{)}\PY{p}{:}
+ \PY{o}{.}\PY{o}{.}\PY{o}{.}
+\end{Verbatim}
+\end{frame}
+
+
+\begin{frame}[containsverbatim,plain]
+ \frametitle{Trace with Hints}
+\begin{lstlisting}[mathescape,escapechar=|,basicstyle=\ttfamily]]
+# $inst_1$.getattr("a")
+$map_1$ = $inst_1$.map
+guard($map_1$ == 0xb74af4a8)
+|{\color{gray}$index_1$ = Map.getindex($map_1$, "a")|
+|{\color{gray}guard($index_1$ != -1)|
+$storage_1$ = $inst_1$.storage
+$result_1$ = $storage_1$[$index_1$]
+
+# $inst_1$.getattr("b")
+|{\color{gray}$map_2$ = $inst_1$.map|
+|{\color{gray}guard($map_2$ == 0xb74af4a8)|
+|{\color{gray}$index_2$ = Map.getindex($map_2$, "b")|
+|{\color{gray}guard($index_2$ != -1)|
+|{\color{gray}$storage_2$ = $inst_1$.storage|
+$result_2$ = $storage_2$[$index_2$]
+
+$v_1$ = $result_1$ + $result_2$
+return($v_1$)
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim,plain]
+ \frametitle{Final Trace}
+\begin{lstlisting}[mathescape,escapechar=|,basicstyle=\ttfamily]]
+# $inst_1$.getattr("a")
+$map_1$ = $inst_1$.map
+guard($map_1$ == 0xb74af4a8)
+$storage_1$ = $inst_1$.storage
+$result_1$ = $storage_1$[$0$]
+$result_2$ = $storage_2$[$1$]
+$v_1$ = $result_1$ + $result_2$
+return($v_1$)
+\end{lstlisting}
+\end{frame}
+
+
+\begin{frame}
+ \frametitle{Uses of These Hints}
+ \begin{block}{\texttt{promote} lets one specialize on various things:}
+ \begin{itemize}
+ \item user-level types
+ \item shapes of instances
+ \item the current state of a classes' methods
+ \item ...
+ \end{itemize}
+ \end{block}
+ \pause
+ \begin{block}{uses of \texttt{@elidable}}
+ \begin{itemize}
+ \item define immutable fields by decorating a getter
+ \item declare arbitrary invariants
+ \end{itemize}
+
+ \end{block}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Some Benchmarks}
+ \begin{itemize}
+ \item benchmarks done using PyPy's Python interpreter
+ \item about 30'000 lines of code
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Some Benchmarks}
+ \includegraphics[scale=0.5]{figures/bench.pdf}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Conclusion}
+ \begin{itemize}
+ \item meta-tracing can make the efficient implementation of complex dynamic languaes easier
+ \item two kinds of hints to be added by the interpreter author allows arbitrary runtime feedback
+ \item the hints are expressive enough to re-implement classical optimizations such as maps
+ \item usage of the hints leads to good speedups for object-oriented code in PyPy's Python interpreter
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Bonus: Comparison with Partial Evaluation}
+\end{frame}
+
+
+\end{document}
More information about the pypy-commit
mailing list