[pypy-commit] extradoc extradoc: merge heads

arigo noreply at buildbot.pypy.org
Wed Jul 4 12:13:48 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: extradoc
Changeset: r4273:b4c8103c877d
Date: 2012-07-04 12:13 +0200
http://bitbucket.org/pypy/extradoc/changeset/b4c8103c877d/

Log:	merge heads

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -1,3 +1,11 @@
 syntax: glob
 *.py[co]
 *~
+talk/ep2012/stackless/slp-talk.aux
+talk/ep2012/stackless/slp-talk.latex
+talk/ep2012/stackless/slp-talk.log
+talk/ep2012/stackless/slp-talk.nav
+talk/ep2012/stackless/slp-talk.out
+talk/ep2012/stackless/slp-talk.snm
+talk/ep2012/stackless/slp-talk.toc
+talk/ep2012/stackless/slp-talk.vrb
\ No newline at end of file
diff --git a/talk/ep2012/jit/talk/Makefile b/talk/ep2012/jit/talk/Makefile
--- a/talk/ep2012/jit/talk/Makefile
+++ b/talk/ep2012/jit/talk/Makefile
@@ -3,7 +3,7 @@
 # http://bitbucket.org/antocuni/env/src/619f486c4fad/bin/inkscapeslide.py
 
 
-talk.pdf: talk.rst author.latex title.latex stylesheet.latex diagrams/tracing-phases-p0.pdf
+talk.pdf: talk.rst author.latex title.latex stylesheet.latex diagrams/tracing-phases-p0.pdf diagrams/trace-p0.pdf diagrams/tracetree-p0.pdf
 	rst2beamer.py --stylesheet=stylesheet.latex --documentoptions=14pt talk.rst talk.latex || exit
 	sed 's/\\date{}/\\input{author.latex}/' -i talk.latex || exit
 	#sed 's/\\maketitle/\\input{title.latex}/' -i talk.latex || exit
@@ -18,3 +18,9 @@
 
 diagrams/tracing-phases-p0.pdf: diagrams/tracing-phases.svg
 	cd diagrams && inkscapeslide.py tracing-phases.svg
+
+diagrams/trace-p0.pdf: diagrams/trace.svg
+	cd diagrams && inkscapeslide.py trace.svg
+
+diagrams/tracetree-p0.pdf: diagrams/tracetree.svg
+	cd diagrams && inkscapeslide.py tracetree.svg
diff --git a/talk/ep2012/jit/talk/diagrams/trace.svg b/talk/ep2012/jit/talk/diagrams/trace.svg
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/jit/talk/diagrams/trace.svg
@@ -0,0 +1,969 @@
+<?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="svg2"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   width="474.84375"
+   height="257.45776"
+   xml:space="preserve"
+   sodipodi:docname="trace.svg"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs6" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     inkscape:window-height="748"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="1.3485026"
+     inkscape:cx="218.06251"
+     inkscape:cy="272.00166"
+     inkscape:window-x="0"
+     inkscape:window-y="1"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer7"
+     inkscape:snap-page="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" /><g
+     inkscape:groupmode="layer"
+     id="layer7"
+     inkscape:label="content"
+     transform="translate(-167.21,-350.83531)"><text
+       xml:space="preserve"
+       style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="3.7078247"
+       y="436.05228"
+       id="text8595"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan8597"
+         x="3.7078247"
+         y="436.05228">table</tspan><tspan
+         sodipodi:role="line"
+         x="3.7078247"
+         y="453.55228"
+         id="tspan8599">+while</tspan><tspan
+         sodipodi:role="line"
+         x="3.7078247"
+         y="471.05228"
+         id="tspan8601">+op.DoSomething</tspan><tspan
+         sodipodi:role="line"
+         x="3.7078247"
+         y="488.55228"
+         id="tspan8603">+if</tspan><tspan
+         sodipodi:role="line"
+         x="3.7078247"
+         y="506.05228"
+         id="tspan8605">+return</tspan><tspan
+         sodipodi:role="line"
+         x="3.7078247"
+         y="523.55225"
+         id="tspan8607">+end</tspan></text>
+</g><g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="table"
+     style="display:inline"
+     transform="translate(-167.21,-350.83531)"><g
+       style="display:inline"
+       id="g424"
+       transform="matrix(1.25,0,0,-1.25,170.75,591.7525)"><path
+         d="M 0,0 27.379,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path426"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,171.05,594.415)"
+       id="text428"><tspan
+         style="font-size:8.96640015px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 5.3798399 10.75968 16.139521 21.51936"
+         y="0"
+         sodipodi:role="line"
+         id="tspan430">INSTR</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,204.67375,594.415)"
+       id="text432"><tspan
+         style="font-size:8.96640015px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR9;-inkscape-font-specification:CMR9"
+         x="0 5.6353822 8.9619169 14.081731 17.716709 21.300579 24.905073 30.024887 34.120739 37.704609 40.264515 44.863384 53.058674 57.158112 62.021484 66.120926 70.216774 75.336586 78.920456 83.019897 91.215187 96.334999 101.45482 108.10519 113.22501 117.83284 124.49219 128.09668 132.19612 136.29198 140.8998 144.5043 149.62411 153.72354"
+         y="0"
+         sodipodi:role="line"
+         id="tspan434">:Instructionexecutedbutnotrecorded</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,167.21,608.11375)"
+       id="text436"><tspan
+         style="font-size:8.96640015px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 5.3798399 10.75968 16.139521 21.51936"
+         y="0"
+         sodipodi:role="line"
+         id="tspan438">INSTR</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,200.83375,608.11375)"
+       id="text440"><tspan
+         style="font-size:8.96640015px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR9;-inkscape-font-specification:CMR9"
+         x="0 5.6353822 8.9619169 14.081731 17.716709 21.300579 24.905073 30.024887 34.120739 37.704609 40.264515 44.872349 53.058674 57.666504 62.78632 67.906136 72.005569 80.200859 83.784729 91.459076 95.042946 100.16276 107.33767 110.92154 114.52603 119.13387 123.22972 130.39566 135.51547 140.6353 147.29463 152.41446 157.02229 163.67267 167.77211 172.63548 176.73492 180.83076 185.95058 189.53445 193.6339"
+         y="0"
+         sodipodi:role="line"
+         id="tspan442">:Instructionaddedtothetracebutnotexecuted</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,174.6825,359.1225)"
+       id="text12"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMBX8;-inkscape-font-specification:CMBX8"
+         sodipodi:role="line"
+         id="tspan14"
+         x="0"
+         y="0">Method</tspan></text>
+<g
+       style="display:inline"
+       id="g16"
+       transform="matrix(1.25,0,0,-1.25,244.93,362.67125)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path18"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,252.40125,359.1225)"
+       id="text20"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMBX8;-inkscape-font-specification:CMBX8"
+         x="0"
+         y="0"
+         sodipodi:role="line"
+         id="tspan22">Java code</tspan></text>
+<g
+       style="display:inline"
+       id="g24"
+       transform="matrix(1.25,0,0,-1.25,403.33625,362.67125)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path26"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,359.1225)"
+       id="text28"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMBX8;-inkscape-font-specification:CMBX8"
+         x="0 5.9783721 10.013634 14.759829 19.098751 155.11728 161.65434 166.40054 169.11276 174.53722"
+         y="0"
+         sodipodi:role="line"
+         id="tspan30">TraceValue</tspan></text>
+<path
+       transform="matrix(1.25,0,0,-1.25,167.21,362.92)"
+       d="M 0,0 379.863,0"
+       style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path34"
+       inkscape:connector-curvature="0" /></g><g
+     id="g10"
+     inkscape:groupmode="layer"
+     inkscape:label="while"
+     transform="matrix(1.25,0,0,-1.25,-167.21,639.16469)"
+     style="display:inline"><text
+       transform="matrix(1,0,0,-1,303.133,89.365)"
+       id="text460"><tspan
+         style="font-size:9.96259975px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR10;-inkscape-font-specification:CMR10"
+         x="0"
+         y="0"
+         id="tspan462">1</tspan></text>
+<g
+       style="display:inline"
+       id="g32"
+       transform="translate(133.768,501.664)" /><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,139.746,494.839)"
+       id="text36"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMTI8;-inkscape-font-specification:CMTI8"
+         x="0 7.6600633 12.03246 14.656217"
+         y="0"
+         sodipodi:role="line"
+         id="tspan38">Main</tspan></text>
+<g
+       style="display:inline"
+       id="g40"
+       transform="translate(195.944,492)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path42"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,201.921,494.839)"
+       id="text44"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236 33.474419 43.03854 52.602661 57.38472"
+         y="0"
+         sodipodi:role="line"
+         id="tspan46">while(i&lt;N)</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,268.87,494.839)"
+       id="text48"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMSY8;-inkscape-font-specification:CMSY8"
+         x="0"
+         y="0"
+         id="tspan50">{</tspan></text>
+<g
+       style="display:inline"
+       id="g52"
+       transform="translate(322.669,492)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path54"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,328.646,494.839)"
+       id="text56"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan58">ILOAD2</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,503.42,494.839)"
+       id="text60"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan62">3</tspan></text>
+<g
+       style="display:inline"
+       id="g64"
+       transform="translate(195.944,482.536)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path66"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g68"
+       transform="translate(322.669,482.536)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path70"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,328.646,485.375)"
+       id="text72"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan74">ILOAD1</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,494.951,485.375)"
+       id="text76"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0 4.2345142 8.4690285"
+         y="0"
+         sodipodi:role="line"
+         id="tspan78">100</tspan></text>
+<g
+       style="display:inline"
+       id="g80"
+       transform="translate(195.944,473.071)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path82"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g84"
+       transform="translate(322.669,473.071)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path86"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g88"
+       transform="translate(328.406,477.826)"><path
+         d="M 0,0 77.95,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path90"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,328.646,475.91)"
+       id="text92"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601"
+         y="0"
+         sodipodi:role="line"
+         id="tspan94">IF</tspan></text>
+<g
+       style="display:inline"
+       id="g96"
+       transform="translate(338.689,476.11)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path98"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,341.08,475.91)"
+       id="text100"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 33.474419 38.256481 43.03854 47.820599 52.602661"
+         y="0"
+         sodipodi:role="line"
+         id="tspan102">ICMPGELABEL</tspan></text>
+<g
+       style="display:inline"
+       id="g104"
+       transform="translate(398.943,476.11)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path106"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,401.334,475.91)"
+       id="text108"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0"
+         y="0"
+         id="tspan110">1</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,487.743,475.91)"
+       id="text112"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI8;-inkscape-font-specification:CMMI8"
+         x="0 4.9446502 9.4429741 12.065934 15.981645"
+         y="0"
+         sodipodi:role="line"
+         id="tspan114">false</tspan></text>
+<g
+       style="display:inline"
+       id="g116"
+       transform="translate(195.944,463.607)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path118"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g120"
+       transform="translate(322.669,463.607)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path122"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,328.646,466.446)"
+       id="text124"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 4.7820601 9.5641203 14.34618 19.128241"
+         y="0"
+         sodipodi:role="line"
+         id="tspan126">GUARD</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1,0,0,-1,355.426,466.446)"
+       id="text132"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299"
+         y="0"
+         sodipodi:role="line"
+         id="tspan134">ICMPLT</tspan></text>
+</g><g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="op.DoSomething"
+     style="display:inline"
+     transform="translate(-167.21,-350.83531)"><g
+       style="display:inline"
+       id="g128"
+       transform="matrix(1.25,0,0,-1.25,441.29375,406.69375)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path130"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g136"
+       transform="matrix(1.25,0,0,-1.25,244.93,410.74125)"><path
+         d="M 0,0 317.688,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path138"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g140"
+       transform="matrix(1.25,0,0,-1.25,244.93,422.3225)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path142"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,264.35625,418.77375)"
+       id="text144"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 9.5641203 19.128241 23.910299 28.69236 33.474419 38.256481 43.03854 47.820599 52.602661 57.38472 62.166779 66.948837 71.730904 76.512962 81.295021 86.07708 90.859138 95.641197 100.42326"
+         y="0"
+         sodipodi:role="line"
+         id="tspan146">i=op.DoSomething(i);</tspan></text>
+<g
+       style="display:inline"
+       id="g148"
+       transform="matrix(1.25,0,0,-1.25,403.33625,422.3225)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path150"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,418.77375)"
+       id="text152"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan154">ALOAD3</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,560.845,418.77375)"
+       id="text156"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMTI8;-inkscape-font-specification:CMTI8"
+         x="0 3.2876663 8.0976219 12.033257 15.640524 22.19912 25.806387 32.259777 35.757057 39.692692"
+         y="0"
+         sodipodi:role="line"
+         id="tspan158">IncrOrDecr</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,619.57125,418.77375)"
+       id="text160"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0 4.2345142 9.4095001"
+         y="0"
+         sodipodi:role="line"
+         id="tspan162">obj</tspan></text>
+<g
+       style="display:inline"
+       id="g164"
+       transform="matrix(1.25,0,0,-1.25,244.93,434.1525)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path166"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g168"
+       transform="matrix(1.25,0,0,-1.25,403.33625,434.1525)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path170"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,430.60375)"
+       id="text172"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan174">ILOAD2</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,629.275,430.60375)"
+       id="text176"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan178">3</tspan></text>
+<g
+       style="display:inline"
+       id="g180"
+       transform="matrix(1.25,0,0,-1.25,244.93,445.98375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path182"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g184"
+       transform="matrix(1.25,0,0,-1.25,403.33625,445.98375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path186"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g188"
+       transform="matrix(1.25,0,0,-1.25,410.5075,440.04)"><path
+         d="M 0,0 91.339,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path190"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,442.43375)"
+       id="text192"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 28.69236 33.474419 38.256481 43.03854 47.820599 52.602661 57.38472 62.166779 66.948837 76.512962 81.295021 86.07708"
+         y="0"
+         sodipodi:role="line"
+         id="tspan194">INVOKEINTERFACE...</tspan></text>
+<g
+       style="display:inline"
+       id="g196"
+       transform="matrix(1.25,0,0,-1.25,244.93,457.81375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path198"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g200"
+       transform="matrix(1.25,0,0,-1.25,403.33625,457.81375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path202"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,454.265)"
+       id="text204"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 4.7820601 9.5641203 14.34618 19.128241"
+         y="0"
+         sodipodi:role="line"
+         id="tspan206">GUARD</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,444.2825,454.265)"
+       id="text212"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 28.69236 33.474419 38.256481 43.03854 47.820599 52.602661 57.38472 62.166779 66.948837 71.730904 76.512962"
+         y="0"
+         sodipodi:role="line"
+         id="tspan214">CLASS(IncrOrDecr)</tspan></text>
+</g><g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="if"
+     style="display:inline"
+     transform="translate(-167.21,-350.83531)"><g
+       style="display:inline"
+       id="g208"
+       transform="matrix(1.25,0,0,-1.25,441.29375,454.01625)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path210"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g216"
+       transform="matrix(1.25,0,0,-1.25,167.21,458.06375)"><path
+         d="M 0,0 379.863,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path218"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,174.6825,466.59375)"
+       id="text220"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMTI8;-inkscape-font-specification:CMTI8"
+         x="0 6.4533901 10.825787 15.635742 20.008139 27.004293 30.939928 33.782066 38.154461 40.778221 45.588177"
+         y="0"
+         sodipodi:role="line"
+         id="tspan222">DoSomething</tspan></text>
+<g
+       style="display:inline"
+       id="g224"
+       transform="matrix(1.25,0,0,-1.25,244.93,470.1425)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path226"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,276.3125,466.59375)"
+       id="text228"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 14.34618 19.128241 28.69236 38.256481 43.03854"
+         y="0"
+         sodipodi:role="line"
+         id="tspan230">if(x&lt;0)</tspan></text>
+<g
+       style="display:inline"
+       id="g232"
+       transform="matrix(1.25,0,0,-1.25,403.33625,470.1425)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path234"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,466.59375)"
+       id="text236"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan238">ILOAD1</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,629.275,466.59375)"
+       id="text240"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan242">3</tspan></text>
+<g
+       style="display:inline"
+       id="g244"
+       transform="matrix(1.25,0,0,-1.25,244.93,481.97375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path246"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g248"
+       transform="matrix(1.25,0,0,-1.25,403.33625,481.97375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path250"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g252"
+       transform="matrix(1.25,0,0,-1.25,410.5075,476.03)"><path
+         d="M 0,0 55.952,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path254"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,478.42375)"
+       id="text256"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 23.910299 28.69236 33.474419 38.256481 43.03854"
+         y="0"
+         sodipodi:role="line"
+         id="tspan258">IFGELABEL</tspan></text>
+<g
+       style="display:inline"
+       id="g260"
+       transform="matrix(1.25,0,0,-1.25,471.18125,478.175)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path262"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,474.17,478.42375)"
+       id="text264"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0"
+         y="0"
+         id="tspan266">0</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,614.635,478.42375)"
+       id="text268"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMMI8;-inkscape-font-specification:CMMI8"
+         x="0 3.0581274 7.1109233 12.014129"
+         y="0"
+         sodipodi:role="line"
+         id="tspan270">true</tspan></text>
+<g
+       style="display:inline"
+       id="g272"
+       transform="matrix(1.25,0,0,-1.25,244.93,493.80375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path274"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g276"
+       transform="matrix(1.25,0,0,-1.25,403.33625,493.80375)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path278"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,490.255)"
+       id="text280"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 4.7820601 9.5641203 14.34618 19.128241"
+         y="0"
+         sodipodi:role="line"
+         id="tspan282">GUARD</tspan></text>
+<g
+       style="display:inline"
+       id="g284"
+       transform="matrix(1.25,0,0,-1.25,441.29375,490.00625)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path286"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,444.2825,490.255)"
+       id="text288"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-ReguObli"
+         x="0 4.7820601"
+         y="0"
+         sodipodi:role="line"
+         id="tspan290">GE</tspan></text>
+</g><g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="return"
+     style="display:inline"
+     transform="translate(-167.21,-350.83531)"><g
+       style="display:inline"
+       id="g292"
+       transform="matrix(1.25,0,0,-1.25,244.93,494.05375)"><path
+         d="M 0,0 317.688,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path294"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g296"
+       transform="matrix(1.25,0,0,-1.25,244.93,505.635)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path298"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,288.2675,502.085)"
+       id="text300"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 33.474419 38.256481 43.03854 47.820599"
+         y="0"
+         sodipodi:role="line"
+         id="tspan302">returnx+1;</tspan></text>
+<g
+       style="display:inline"
+       id="g304"
+       transform="matrix(1.25,0,0,-1.25,403.33625,505.635)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path306"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,502.085)"
+       id="text308"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan310">ILOAD1</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,629.275,502.085)"
+       id="text312"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan314">3</tspan></text>
+<g
+       style="display:inline"
+       id="g316"
+       transform="matrix(1.25,0,0,-1.25,244.93,517.465)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path318"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g320"
+       transform="matrix(1.25,0,0,-1.25,403.33625,517.465)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path322"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,513.91625)"
+       id="text324"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 33.474419"
+         y="0"
+         sodipodi:role="line"
+         id="tspan326">ICONST1</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,629.275,513.91625)"
+       id="text328"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan330">1</tspan></text>
+<g
+       style="display:inline"
+       id="g332"
+       transform="matrix(1.25,0,0,-1.25,244.93,529.29625)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path334"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g336"
+       transform="matrix(1.25,0,0,-1.25,403.33625,529.29625)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path338"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,525.74625)"
+       id="text340"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618"
+         y="0"
+         sodipodi:role="line"
+         id="tspan342">IADD</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,629.275,525.74625)"
+       id="text344"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan346">4</tspan></text>
+<g
+       style="display:inline"
+       id="g348"
+       transform="matrix(1.25,0,0,-1.25,244.93,541.12625)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path350"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g352"
+       transform="matrix(1.25,0,0,-1.25,403.33625,541.12625)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path354"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,537.5775)"
+       id="text360"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 28.69236"
+         y="0"
+         sodipodi:role="line"
+         id="tspan362">IRETURN</tspan></text>
+</g><g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="end"
+     style="display:inline"
+     transform="translate(-167.21,-350.83531)"><g
+       style="display:inline"
+       id="g372"
+       transform="matrix(1.25,0,0,-1.25,244.93,553.455)" /><g
+       style="display:inline"
+       id="g396"
+       transform="matrix(1.25,0,0,-1.25,244.93,565.28625)" /><g
+       style="display:inline"
+       id="g356"
+       transform="matrix(1.25,0,0,-1.25,410.5075,535.18375)"><path
+         d="M 0,0 33.954,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path358"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g380"
+       transform="matrix(1.25,0,0,-1.25,403.33625,553.455)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path382"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,174.6825,549.90625)"
+       id="text368"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMTI8;-inkscape-font-specification:CMTI8"
+         x="0 7.6600633 12.03246 14.656217"
+         y="0"
+         sodipodi:role="line"
+         id="tspan370">Main</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,549.90625)"
+       id="text384"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 19.128241 23.910299 33.474419"
+         y="0"
+         sodipodi:role="line"
+         id="tspan386">ISTORE2</tspan></text>
+<path
+       transform="matrix(1.25,0,0,-1.25,244.93,553.455)"
+       d="M 0,0 0,9.464"
+       style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path374"
+       inkscape:connector-curvature="0" /><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,264.35625,549.90625)"
+       id="text376"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 9.5641203 19.128241 23.910299 28.69236 33.474419 38.256481 43.03854 47.820599 52.602661 57.38472 62.166779 66.948837 71.730904 76.512962 81.295021 86.07708 90.859138 95.641197 100.42326"
+         y="0"
+         sodipodi:role="line"
+         id="tspan378">i=op.DoSomething(i);</tspan></text>
+<g
+       style="display:inline"
+       id="g392"
+       transform="matrix(1.25,0,0,-1.25,244.93,553.705)"><path
+         d="M 0,0 317.688,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path394"
+         inkscape:connector-curvature="0" /></g><path
+       transform="matrix(1.25,0,0,-1.25,244.93,565.28625)"
+       d="M 0,0 0,9.464"
+       style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path398"
+       inkscape:connector-curvature="0" /><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,252.40125,561.73625)"
+       id="text400"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMSY8;-inkscape-font-specification:CMSY8"
+         x="0"
+         y="0"
+         id="tspan402">}</tspan></text>
+<g
+       style="display:inline"
+       id="g404"
+       transform="matrix(1.25,0,0,-1.25,403.33625,565.28625)"><path
+         d="M 0,0 0,9.464"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path406"
+         inkscape:connector-curvature="0" /></g><g
+       style="display:inline"
+       id="g408"
+       transform="matrix(1.25,0,0,-1.25,410.5075,559.3425)"><path
+         d="M 0,0 55.952,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path410"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,410.8075,561.73625)"
+       id="text412"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0 4.7820601 9.5641203 14.34618 23.910299 28.69236 33.474419 38.256481 43.03854"
+         y="0"
+         sodipodi:role="line"
+         id="tspan414">GOTOLABEL</tspan></text>
+<g
+       style="display:inline"
+       id="g416"
+       transform="matrix(1.25,0,0,-1.25,471.18125,561.4875)"><path
+         d="M 0,0 2.391,0"
+         style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
+         id="path418"
+         inkscape:connector-curvature="0" /></g><text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,474.17,561.73625)"
+       id="text420"><tspan
+         style="font-size:7.97009993px;font-variant:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:NimbusMonL-Regu"
+         x="0"
+         y="0"
+         id="tspan422">0</tspan></text>
+<text
+       style="display:inline"
+       transform="matrix(1.25,0,0,1.25,629.275,549.90625)"
+       id="text388"><tspan
+         style="font-size:7.97009993px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CMR8;-inkscape-font-specification:CMR8"
+         x="0"
+         y="0"
+         id="tspan390">4</tspan></text>
+<path
+       transform="matrix(1.25,0,0,-1.25,167.21,541.37625)"
+       d="M 0,0 379.863,0"
+       style="fill:none;stroke:#000000;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path366"
+       inkscape:connector-curvature="0" /></g></svg>
\ No newline at end of file
diff --git a/talk/ep2012/jit/talk/diagrams/tracetree.svg b/talk/ep2012/jit/talk/diagrams/tracetree.svg
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/jit/talk/diagrams/tracetree.svg
@@ -0,0 +1,429 @@
+<?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="868.47473"
+   height="787.14441"
+   id="svg8609"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="tracetree.svg">
+  <defs
+     id="defs8611">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path9528"
+         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-8"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path9528-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-5"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path9528-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-9"
+       style="overflow:visible">
+      <path
+         id="path9528-3"
+         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-7"
+       style="overflow:visible">
+      <path
+         id="path9528-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)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="299.60564"
+     inkscape:cy="309.93394"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer12"
+     showgrid="false"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="748"
+     inkscape:window-x="0"
+     inkscape:window-y="1"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata8614">
+    <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:groupmode="layer"
+     id="layer12"
+     inkscape:label="content"
+     transform="translate(113.40737,86.55953)">
+    <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:Sans"
+       x="-575.78699"
+       y="-8.2979898"
+       id="text10437"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan10439"
+         x="-575.78699"
+         y="-8.2979898">trace</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="41.702011"
+         id="tspan10441">+loop</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="91.702011"
+         id="tspan10447">trace, guard_sign</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="141.70201"
+         id="tspan10443">+blackhole</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="191.70201"
+         id="tspan10449">+interp</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="241.70201"
+         id="tspan10453">+call_jitted</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="291.702"
+         id="tspan10706">trace, bridge</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="341.702"
+         id="tspan10708">+loop2</tspan><tspan
+         sodipodi:role="line"
+         x="-575.78699"
+         y="391.702"
+         id="tspan10710">+loop</tspan></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot10455"
+       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:Sans"><flowRegion
+         id="flowRegion10457"><rect
+           id="rect10459"
+           width="1351.5841"
+           height="4268.9048"
+           x="-1745.5436"
+           y="-4295.3853" /></flowRegion><flowPara
+         id="flowPara10461"></flowPara></flowRoot>  </g>
+  <g
+     inkscape:label="trace"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(113.40737,86.55953)"
+     style="display:inline">
+    <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:Sans"
+       x="77.142868"
+       y="72.36219"
+       id="text8667"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan8669"
+         x="77.142868"
+         y="72.36219">ILOAD 1</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="122.36219"
+         id="tspan8671">ILOAD 2</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="172.3622"
+         id="tspan8673">GUARD ICMPLT</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="222.3622"
+         id="tspan8675">ILOAD 1</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="272.36218"
+         id="tspan8677">ICONST 2</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="322.36218"
+         id="tspan8679">IREM</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="372.36218"
+         id="tspan8681"
+         style="font-weight:bold">GUARD NE</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="422.36218"
+         id="tspan8683">ILOAD 0</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="472.36218"
+         id="tspan8685">ICONST 2</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="522.36218"
+         id="tspan8687"
+         style="font-style:normal;fill:#ff0000">IMUL</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="572.36218"
+         id="tspan8689">ISTORE 0</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="622.36218"
+         id="tspan8691">IINC 1 1</tspan><tspan
+         sodipodi:role="line"
+         x="77.142868"
+         y="672.36218"
+         id="tspan8693" /></text>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer15"
+     inkscape:label="guard_sign">
+    <path
+       sodipodi:type="arc"
+       style="display:inline;fill:#000000;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path10718"
+       sodipodi:cx="76.771591"
+       sodipodi:cy="441.67224"
+       sodipodi:rx="88.893425"
+       sodipodi:ry="88.893425"
+       d="m 165.66502,441.67224 a 88.893425,88.893425 0 1 1 -177.786854,0 88.893425,88.893425 0 1 1 177.786854,0 z"
+       transform="matrix(0.09481961,0,0,0.09481961,157.37541,400.80321)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer8"
+     inkscape:label="loop"
+     transform="translate(113.40737,86.55953)"
+     style="display:inline">
+    <path
+       sodipodi:type="spiral"
+       style="fill:none;stroke:#000000;stroke-width:2.9000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       id="path8752"
+       sodipodi:cx="-260"
+       sodipodi:cy="440.93362"
+       sodipodi:expansion="16.030001"
+       sodipodi:revolution="1.7216806"
+       sodipodi:radius="520.896"
+       sodipodi:argument="-20.399523"
+       sodipodi:t0="0"
+       d="m -260,440.93362 c 0,0 0,0 0,0 10e-6,3e-5 -4e-5,4e-5 -6e-5,5e-5 -0.004,0.002 -0.008,-0.0105 -0.008,-0.0111 -0.0764,-0.23393 0.49038,-0.40945 0.58954,-0.43279 6.14814,-1.44742 9.4827,10.93629 9.99912,14.2932 13.49894,87.74831 -150.71957,130.90319 -205.86586,135.33904 -109.70841,8.82469 -220.52187,-21.65256 -319.19504,-67.68853"
+       transform="matrix(-0.24369021,0.96985313,-0.96985313,-0.24369021,353.07946,955.65355)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer9"
+     inkscape:label="blackhole"
+     transform="translate(113.40737,86.55953)"
+     style="display:inline">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 323.24881,365.45845 438.4062,436.16913"
+       id="path10175"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g10369"
+       transform="translate(278.8021,-286.88332)">
+      <path
+         transform="matrix(1.7465726,0,0,1.7465726,-107.29698,-511.38631)"
+         d="m 230.31477,775.58038 c 1.63425,1.78624 -1.60153,3.0842 -2.96884,2.71623 -3.70533,-0.99719 -4.09392,-5.81728 -2.4636,-8.65391 2.91626,-5.07409 9.91691,-5.37261 14.33897,-2.21098 6.48956,4.63982 6.69208,14.0732 1.95836,20.02404 -6.30931,7.93153 -18.24975,8.0291 -25.70911,1.70573 -9.38683,-7.9573 -9.37522,-22.43598 -1.45311,-31.39417 9.59475,-10.84957 26.62767,-10.72664 37.07924,-1.20049 12.31681,11.22624 12.08138,30.82276 0.94787,42.7643 -12.85408,13.78699 -35.02013,13.43833 -48.44937,0.69525 -15.25915,-14.4795 -14.79682,-39.21909 -0.44262,-54.13443 16.10323,-16.73276 43.41922,-16.15644 59.8195,-0.19001 18.20741,17.72577 17.51689,47.62023 -0.0626,65.50457 -19.3474,19.68287 -51.82191,18.878 -71.18964,-0.31524 -21.15895,-20.96834 -20.2396,-56.02412 0.56787,-76.8747 22.58874,-22.63553 60.22676,-21.60162 82.55976,0.82049 24.1125,24.2087 22.96396,64.42975 -1.07311,88.24482 -25.82833,25.5898 -68.63302,24.32658 -93.92989,-1.32573 -27.06735,-27.44766 -25.68941,-72.83653 1.57835,-99.61495 29.06676,-28.54514 77.04025,-27.05244 105.30003,1.83097 30.02311,30.68566 28.41561,81.24414 -2.0836,110.98509 -32.30439,31.50125 -85.44818,29.77893 -116.67016,-2.33622 -32.97952,-33.92297 -31.14236,-89.65234 2.58884,-122.35522 35.54144,-34.45792 93.85662,-32.50591 128.04029,2.84146 35.93642,37.15978 33.86954,98.06099 -3.09408,133.72535"
+         sodipodi:t0="0"
+         sodipodi:argument="-11.736566"
+         sodipodi:radius="96.573967"
+         sodipodi:revolution="6"
+         sodipodi:expansion="1"
+         sodipodi:cy="775.58038"
+         sodipodi:cx="230.31477"
+         id="path10365"
+         style="fill:#000000;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         sodipodi:type="spiral" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text10361"
+         y="852.35205"
+         x="159.60408"
+         style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           style="font-weight:bold;fill:#ffffff"
+           y="852.35205"
+           x="159.60408"
+           id="tspan10363"
+           sodipodi:role="line">BLACKHOLE</tspan></text>
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer10"
+     inkscape:label="interp"
+     transform="translate(113.40737,86.55953)"
+     style="display:inline">
+    <g
+       id="g10380"
+       transform="translate(379.81735,-808.12203)">
+      <rect
+         y="723.05243"
+         x="56.568542"
+         height="72.73098"
+         width="317.1879"
+         id="rect10378"
+         style="fill:#ffffff;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text10374"
+         y="769.51947"
+         x="78.791901"
+         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:Sans"
+         xml:space="preserve"><tspan
+           y="769.51947"
+           x="78.791901"
+           id="tspan10376"
+           sodipodi:role="line">INTERPRETER</tspan></text>
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 599.02046,382.63105 603.06107,10.894926"
+       id="path10175-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer11"
+     inkscape:label="call_jitted"
+     transform="translate(113.40737,86.55953)"
+     style="display:inline">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 421.23362,-53.75485 170.71579,20.99644"
+       id="path10175-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer13"
+     inkscape:label="bridge">
+    <text
+       transform="translate(113.40737,86.55953)"
+       xml:space="preserve"
+       style="display:inline;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:Sans"
+       x="435.2373"
+       y="498.73428"
+       id="text8667-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="435.2373"
+         y="498.73428"
+         id="tspan8685-3"
+         style="fill:#ff0000">IINC 0 1</tspan><tspan
+         sodipodi:role="line"
+         x="435.2373"
+         y="548.73425"
+         id="tspan10599">IINC 1 1</tspan><tspan
+         sodipodi:role="line"
+         x="435.2373"
+         y="598.73425"
+         id="tspan8693-7" /></text>
+    <path
+       transform="translate(113.40737,86.55953)"
+       style="display:inline;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="m 320.95822,372.2853 105.05587,82.83251"
+       id="path10175-4-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer14"
+     inkscape:label="loop2">
+    <path
+       sodipodi:type="spiral"
+       style="display:inline;fill:none;stroke:#000000;stroke-width:2.90000010000000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       id="path8752-5"
+       sodipodi:cx="-260"
+       sodipodi:cy="440.93362"
+       sodipodi:expansion="16.030001"
+       sodipodi:revolution="1.7413623"
+       sodipodi:radius="625.0058"
+       sodipodi:argument="-20.399523"
+       sodipodi:t0="0"
+       d="m -260,440.93362 c 0,0 0,0 0,0 10e-6,3e-5 -4e-5,4e-5 -6e-5,5e-5 -0.004,0.002 -0.008,-0.0105 -0.008,-0.0111 -0.0764,-0.23393 0.49038,-0.40945 0.58954,-0.43279 6.14814,-1.44742 9.4827,10.93629 9.99912,14.2932 13.49894,87.74834 -150.71961,130.90324 -205.86592,135.33908 -151.64122,12.19767 -303.62277,-48.49023 -429.37058,-128.29047"
+       transform="matrix(0.50107467,0.86540407,0.86540407,-0.50107467,454.24435,1100.5389)" />
+  </g>
+</svg>
diff --git a/talk/ep2012/jit/talk/talk.rst b/talk/ep2012/jit/talk/talk.rst
--- a/talk/ep2012/jit/talk/talk.rst
+++ b/talk/ep2012/jit/talk/talk.rst
@@ -215,3 +215,44 @@
 |end_example|
 |end_columns|
 |end_scriptsize|
+
+
+Tracing example (3)
+-------------------
+
+.. animage:: diagrams/trace-p*.pdf
+   :align: center
+   :scale: 80%
+
+
+Trace trees (1)
+---------------
+
+|scriptsize|
+|example<| |small| tracetree.java |end_small| |>|
+
+.. sourcecode:: java
+
+    public static void trace_trees() {
+      int a = 0;
+      int i = 0;
+      int N = 100;
+
+      while(i < N) {
+        if (i%2 == 0)
+            a++;
+        else
+            a*=2;
+        i++;
+      }
+    }
+
+|end_example|
+|end_scriptsize|
+
+Trace trees (2)
+---------------
+
+.. animage:: diagrams/tracetree-p*.pdf
+   :align: center
+   :scale: 34%
diff --git a/talk/ep2012/lightning.html b/talk/ep2012/lightning.html
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/lightning.html
@@ -0,0 +1,46 @@
+<html>
+<head>
+	<meta name="viewport" content="width=1024, user-scalable=no">
+  <link rel="stylesheet" href="/home/fijal/src/deckjs/core/deck.core.css">
+  <link rel="stylesheet" href="/home/fijal/src/deckjs/themes/style/web-2.0.css">
+  <link rel="stylesheet" href="/home/fijal/src/deckjs/themes/transition/horizontal-slide.css">
+  <script src="/home/fijal/src/deckjs/modernizr.custom.js"></script>
+  <script src="/home/fijal/src/deckjs/jquery-1.7.min.js"></script>
+  <script src="/home/fijal/src/deckjs/core/deck.core.js"></script>
+  <script>
+    $(function() {
+	  $.deck('.slide');
+    });
+  </script>
+
+</head>
+<body class="deck-container">
+  <section class="slide" id="title-slide">
+    <h1>What are you doing in October?</h1>
+  </section>
+  <section class="slide">
+    <h2>Chances are...</h2>
+    <img src="http://3.bp.blogspot.com/_xKuNUa9Qybk/TOSX0V1AozI/AAAAAAAAAA0/hPrArrooAsk/s1600/London+Rain.jpg"/>
+  </section>
+  <section class="slide">
+    <h2>But you can be here instead....</h2>
+    <img width="800px" src="http://travelwallpaperstock.com/wp-content/uploads/2012/05/Camps-Bay-beach.jpg"/>
+  </section>
+  <section class="slide">
+    <h1>On a work trip!</h1>
+  </section>
+  <section class="slide">
+    <h2>Introducing Pycon South Africa</h2>
+    <ul>
+      <li>Cape Town</li>
+      <li>First ever in Africa</li>
+    </ul>
+    <img width="800px" src="http://1.bp.blogspot.com/-k5q6rD3Cy_0/Tr51fcamu5I/AAAAAAAAAkk/bhrC-NcBu7U/s1600/%2528South+Africa%2529+-+Table+Mountain+-+The+Landmark+of+Cape+Town+2.jpg"/>
+  </section>
+  <section class="slide">
+    <div style="padding-top:100px">
+      <img width="800px" src="http://utazom.com/sites/default/files/u167/boulders_beach_04.jpg"/>
+    </div>
+  </section>
+</body>
+</html>
diff --git a/talk/ep2012/stackless/Makefile b/talk/ep2012/stackless/Makefile
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/Makefile
@@ -0,0 +1,15 @@
+# you can find rst2beamer.py here:
+# http://codespeak.net/svn/user/antocuni/bin/rst2beamer.py
+
+slp-talk.pdf: slp-talk.rst author.latex title.latex stylesheet.latex
+	rst2beamer.py --stylesheet=stylesheet.latex --documentoptions=14pt slp-talk.rst slp-talk.latex || exit
+	sed 's/\\date{}/\\input{author.latex}/' -i slp-talk.latex || exit
+	sed 's/\\maketitle/\\input{title.latex}/' -i slp-talk.latex || exit
+	sed 's/\\usepackage\[latin1\]{inputenc}/\\usepackage[utf8]{inputenc}/' -i slp-talk.latex || exit
+	pdflatex slp-talk.latex  || exit
+
+view: slp-talk.pdf
+	evince talk.pdf &
+
+xpdf: slp-talk.pdf
+	xpdf slp-talk.pdf &
diff --git a/talk/ep2012/stackless/author.latex b/talk/ep2012/stackless/author.latex
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/author.latex
@@ -0,0 +1,8 @@
+\definecolor{rrblitbackground}{rgb}{0.0, 0.0, 0.0}
+
+\title[The Story of Stackless Python]{The Story of Stackless Python}
+\author[tismer, nagare]
+{Christian Tismer, Herv&#233; Coatanhay}
+
+\institute{EuroPython 2012}
+\date{July 4 2012}
diff --git a/talk/ep2012/stackless/beamerdefs.txt b/talk/ep2012/stackless/beamerdefs.txt
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/beamerdefs.txt
@@ -0,0 +1,108 @@
+.. colors
+.. ===========================
+
+.. role:: green
+.. role:: red
+
+
+.. general useful commands
+.. ===========================
+
+.. |pause| raw:: latex
+
+   \pause
+
+.. |small| raw:: latex
+
+   {\small
+
+.. |end_small| raw:: latex
+
+   }
+
+.. |scriptsize| raw:: latex
+
+   {\scriptsize
+
+.. |end_scriptsize| raw:: latex
+
+   }
+
+.. |strike<| raw:: latex
+
+   \sout{
+
+.. closed bracket
+.. ===========================
+
+.. |>| raw:: latex
+
+   }
+
+
+.. example block
+.. ===========================
+
+.. |example<| raw:: latex
+
+   \begin{exampleblock}{
+
+
+.. |end_example| raw:: latex
+
+   \end{exampleblock}
+
+
+
+.. alert block
+.. ===========================
+
+.. |alert<| raw:: latex
+
+   \begin{alertblock}{
+
+
+.. |end_alert| raw:: latex
+
+   \end{alertblock}
+
+
+
+.. columns
+.. ===========================
+
+.. |column1| raw:: latex
+
+   \begin{columns}
+      \begin{column}{0.45\textwidth}
+
+.. |column2| raw:: latex
+
+      \end{column}
+      \begin{column}{0.45\textwidth}
+
+
+.. |end_columns| raw:: latex
+
+      \end{column}
+   \end{columns}
+
+
+
+.. |snake| image:: ../../img/py-web-new.png
+           :scale: 15%
+           
+
+
+.. nested blocks
+.. ===========================
+
+.. |nested| raw:: latex
+
+   \begin{columns}
+      \begin{column}{0.85\textwidth}
+
+.. |end_nested| raw:: latex
+
+      \end{column}
+   \end{columns}
diff --git a/talk/ep2012/stackless/demo/pickledtasklet.py b/talk/ep2012/stackless/demo/pickledtasklet.py
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/demo/pickledtasklet.py
@@ -0,0 +1,25 @@
+import pickle, sys
+import stackless
+
+ch = stackless.channel()
+
+def recurs(depth, level=1):
+    print 'enter level %s%d' % (level*'  ', level)
+    if level >= depth:
+        ch.send('hi')
+    if level < depth:
+        recurs(depth, level+1)
+    print 'leave level %s%d' % (level*'  ', level)
+
+def demo(depth):
+    t = stackless.tasklet(recurs)(depth)
+    print ch.receive()
+    pickle.dump(t, file('tasklet.pickle', 'wb'))
+
+if __name__ == '__main__':
+    if len(sys.argv) > 1:
+        t = pickle.load(file(sys.argv[1], 'rb'))
+        t.insert()
+    else:
+        t = stackless.tasklet(demo)(9)
+    stackless.run()
diff --git a/talk/ep2012/stackless/eurpython-2012.pptx b/talk/ep2012/stackless/eurpython-2012.pptx
new file mode 100644
index 0000000000000000000000000000000000000000..9b34bb66e92cbe27ce5dc5c3928fe9413abf2cef
GIT binary patch

[cut]

diff --git a/talk/ep2012/stackless/logo_small.png b/talk/ep2012/stackless/logo_small.png
new file mode 100644
index 0000000000000000000000000000000000000000..acfe083b78f557c394633ca542688a2bfca6a5e8
GIT binary patch

[cut]

diff --git a/talk/ep2012/stackless/slp-talk.pdf b/talk/ep2012/stackless/slp-talk.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3b3f2466f0dd3b60fb7167eed49d66569d107da6
GIT binary patch

[cut]

diff --git a/talk/ep2012/stackless/slp-talk.rst b/talk/ep2012/stackless/slp-talk.rst
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/slp-talk.rst
@@ -0,0 +1,594 @@
+.. include:: beamerdefs.txt
+
+============================================
+The Story of Stackless Python
+============================================
+
+What is Stackless?
+-------------------
+
+* *Stackless is a Python version that does not use the C stack*
+
+  |pause|
+
+  - really? naah
+  
+|pause|
+
+* Stackless is a Python version that does not keep state on the C stack
+
+  - the stack *is* used but
+  
+  - cleared between function calls
+
+|pause|
+  
+* Remark:
+
+  - theoretically. In practice...
+  
+  - ... it is reasonable 90 % of the time
+  
+  - we come back to this!
+
+
+What is Stackless about?
+-------------------------
+
+* it is like CPython
+
+|pause|
+
+* it can do a little bit more
+
+|pause|
+
+* adds a single builtin module
+
+|pause|
+
+|scriptsize|
+|example<| |>|
+
+  .. sourcecode:: python
+  
+    import stackless
+    
+|end_example|
+|end_scriptsize|
+
+|pause|
+
+* is like an extension
+
+  - but, sadly, not really
+  - stackless **must** be builtin  
+  - **but:** there is a solution...
+
+
+Now, what is it really about?
+------------------------------
+
+* have tiny little "main" programs
+
+  - ``tasklet``
+  
+|pause|
+
+* tasklets communicate via messages
+
+  - ``channel``
+  
+|pause|
+
+* tasklets are often called ``microthreads``
+
+  - but there are no threads at all
+  
+  - only one tasklets runs at any time
+
+|pause|
+
+* *but see the PyPy STM* approach
+
+  - this will apply to tasklets as well
+
+
+Cooperative Multitasking ...
+-------------------------------
+
+|scriptsize|
+|example<| |>|
+
+  .. sourcecode:: pycon
+  
+    >>> import stackless
+    >>>
+    >>> channel = stackless.channel()
+    
+|pause|
+
+  .. sourcecode:: pycon
+
+    >>> def receiving_tasklet():
+    ...     print "Receiving tasklet started"
+    ...     print channel.receive()
+    ...     print "Receiving tasklet finished"
+    ...
+
+|pause|
+
+  .. sourcecode:: pycon
+
+    >>> def sending_tasklet():
+    ...     print "Sending tasklet started"
+    ...     channel.send("send from sending_tasklet")
+    ...     print "sending tasklet finished"
+    ...
+
+|end_example|
+|end_scriptsize|
+
+
+... Cooperative Multitasking ...
+---------------------------------
+
+|scriptsize|
+|example<| |>|
+
+  .. sourcecode:: pycon
+
+    >>> def another_tasklet():
+    ...     print "Just another tasklet in the scheduler"
+    ...
+
+|pause|
+
+  .. sourcecode:: pycon
+
+    >>> stackless.tasklet(receiving_tasklet)()
+    <stackless.tasklet object at 0x00A45B30>
+    >>> stackless.tasklet(sending_tasklet)()
+    <stackless.tasklet object at 0x00A45B70>
+    >>> stackless.tasklet(another_tasklet)()
+    <stackless.tasklet object at 0x00A45BF0>
+    
+|end_example|
+|end_scriptsize|
+
+
+... Cooperative Multitasking
+-------------------------------
+
+|scriptsize|
+|example<| |>|
+    
+  .. sourcecode:: pycon
+
+    <stackless.tasklet object at 0x00A45B70>
+    >>> stackless.tasklet(another_tasklet)()
+    <stackless.tasklet object at 0x00A45BF0>
+    >>>
+    >>> stackless.run()
+    Receiving tasklet started
+    Sending tasklet started
+    send from sending_tasklet
+    Receiving tasklet finished
+    Just another tasklet in the scheduler
+    sending tasklet finished
+
+|end_example|
+|end_scriptsize|
+
+
+Why not just the *greenlet* ?
+-------------------------------
+
+* greenlets are a subset of stackless
+
+  - can partially emulate stackless
+  
+  - there is no builtin scheduler
+  
+  - technology quite close to Stackless 2.0
+  
+|pause|
+
+* greenlets are about 10x slower to switch context because
+  using only hard-switching
+  
+  - but that's ok in most cases
+    
+|pause|
+
+* greenlets are kind-of perfect
+
+  - near zero maintenace
+  - minimal interface
+
+|pause|
+
+* but the main difference is ...
+
+
+Pickling Program State
+-----------------------
+
+|scriptsize|
+|example<| Persistence (p. 1 of 2) |>|
+
+  .. sourcecode:: python
+
+    import pickle, sys
+    import stackless
+    
+    ch = stackless.channel()
+    
+    def recurs(depth, level=1):
+        print 'enter level %s%d' % (level*'  ', level)
+        if level >= depth:
+            ch.send('hi')
+        if level < depth:
+            recurs(depth, level+1)
+        print 'leave level %s%d' % (level*'  ', level)
+
+|end_example|
+
+# *remember to show it interactively*
+
+|end_scriptsize|
+
+
+Pickling Program State
+-----------------------
+
+|scriptsize|
+
+|example<| Persistence (p. 2 of 2) |>|
+
+  .. sourcecode:: python
+
+
+    def demo(depth):
+        t = stackless.tasklet(recurs)(depth)
+        print ch.receive()
+        pickle.dump(t, file('tasklet.pickle', 'wb'))
+    
+    if __name__ == '__main__':
+        if len(sys.argv) > 1:
+            t = pickle.load(file(sys.argv[1], 'rb'))
+            t.insert()
+        else:
+            t = stackless.tasklet(demo)(9)
+        stackless.run()
+
+
+|end_example|
+
+# *remember to show it interactively*
+
+|end_scriptsize|
+
+
+Script Output 1
+-----------------
+
+|example<| |>|
+|scriptsize|
+
+  .. sourcecode:: pycon
+
+    $ ~/src/stackless/python.exe demo/pickledtasklet.py
+    enter level   1
+    enter level     2
+    enter level       3
+    enter level         4
+    enter level           5
+    enter level             6
+    enter level               7
+    enter level                 8
+    enter level                   9
+    hi
+    leave level                   9
+    leave level                 8
+    leave level               7
+    leave level             6
+    leave level           5
+    leave level         4
+    leave level       3
+    leave level     2
+    leave level   1
+
+|end_scriptsize|
+|end_example|
+
+
+Script Output 2
+-----------------
+
+|example<| |>|
+|scriptsize|
+
+  .. sourcecode:: pycon
+
+    $ ~/src/stackless/python.exe demo/pickledtasklet.py tasklet.pickle 
+    leave level                   9
+    leave level                 8
+    leave level               7
+    leave level             6
+    leave level           5
+    leave level         4
+    leave level       3
+    leave level     2
+    leave level   1
+
+|end_scriptsize|
+|end_example|
+    
+
+Greenlet vs. Stackless
+-----------------------
+
+* Greenlet is a pure extension module
+
+  - but performance is good enough
+
+|pause|
+
+* Stackless can pickle program state
+
+  - but stays a replacement of Python
+
+|pause|
+
+* Greenlet never can, as an extension
+
+|pause|
+
+* *easy installation* lets people select greenlet over stackless
+
+  - see for example the *eventlet* project
+  
+  - *but there is a simple work-around, we'll come to it*
+
+|pause|
+
+* *they both have their application domains
+  and they will persist.*
+
+
+Why Stackless makes a Difference
+---------------------------------
+
+* Microthreads ?
+
+  - the feature where I put most effort into
+  
+  |pause|
+
+  - can be emulated: (in decreasing speed order)
+  
+    - generators (incomplete, "half-sided")
+  
+    - greenlet
+    
+    - threads (even ;-)
+
+|pause|
+
+* Pickling program state ! ==
+
+|pause|
+
+* **persistence**
+
+
+Persistence, Cloud Computing
+-----------------------------
+
+* freeze your running program
+
+* let it continue anywhere else
+
+  - on a different computer
+  
+  - on a different operating system (!)
+  
+  - in a cloud
+  
+* migrate your running program
+
+* save snapshots, have checkpoints
+
+  - without doing any extra-work
+
+Software archeology
+-------------------
+
+* Around since 1998
+
+  - version 1
+  
+    - using only soft-switching
+    
+    - continuation-based
+  
+    - *please let me skip old design errors :-)*
+
+|pause|
+
+* Complete redesign in 2002
+
+  - version 2
+  
+    - using only hard-switching
+    
+    - birth of tasklets and channels
+
+|pause|
+
+* Concept merge in 2004
+
+  - version 3
+  
+    - **80-20** rule:
+    
+    - soft-switching whenever possible
+      
+    - hard-switching if foreign code is on the stack
+      
+  - these 80 % can be *pickled*  (90?)
+
+* This stayed as version 3.1
+
+Status of Stackless Python
+---------------------------
+
+* mature
+
+* Python 2 and Python 3, all versions
+
+* maintained by
+
+  - Richard Tew
+  - Kristjan Valur Jonsson
+  - me  (a bit)
+
+
+The New Direction for Stackless
+-------------------------------
+
+* ``pip install stackless-python``
+
+  - will install ``slpython``
+  - or even ``python``     (opinions?)
+
+|pause|
+
+* drop-in replacement of CPython
+  *(psssst)*
+
+|pause|
+
+* ``pip uninstall stackless-python``
+
+  - Stackless is a bit cheating, as it replaces the python binary
+  
+  - but the user perception will be perfect
+  
+* *trying stackless made easy!*
+
+
+New Direction (cont'd)
+-----------------------
+
+* first prototype yesterday from
+
+  Anselm Kruis       *(applause)*
+
+  - works on Windows
+
+  |pause|
+
+  - OS X
+
+    - I'll do that one
+
+  |pause|
+  
+  - Linux
+
+    - soon as well
+
+|pause|
+
+* being very careful to stay compatible
+
+  - python 2.7.3 installs stackless for 2.7.3
+  - python 3.2.3 installs stackless for 3.2.3
+  
+  - python 2.7.2 : *please upgrade*
+    - or maybe have an over-ride option?
+
+Consequences of the Pseudo-Package
+-----------------------------------
+
+The technical effect is almost nothing.
+
+The psycological impact is probably huge:
+
+|pause|
+
+* stackless is easy to install and uninstall
+
+|pause|
+
+* people can simply try if it fits their needs
+
+|pause|
+
+* the never ending discussion
+
+  - "Why is Stackless not included in the Python core?"
+
+|pause|
+
+* **has ended**
+
+  - "Why should we?"
+  - hey Guido :-)
+  - what a relief, for you and me
+  
+
+Status of Stackless PyPy
+---------------------------
+
+* was completely implemented before the Jit
+
+  - together with
+    greenlets
+    coroutines
+    
+  - not Jit compatible
+    
+* was "too complete" with a 30% performance hit
+
+* new approach is almost ready
+
+  - with full Jit support
+  - but needs some fixing
+  - this *will* be efficient
+
+Applications using Stackless Python
+------------------------------------
+
+* The Eve Online MMORPG
+
+  http://www.eveonline.com/
+  
+  - based their games on Stackless since 1998
+
+* science + computing ag, Anselm Kruis
+
+  https://ep2012.europython.eu/conference/p/anselm-kruis
+
+* The Nagare Web Framework
+
+  http://www.nagare.org/
+  
+  - works because of Stackless Pickling
+
+* today's majority: persistence
+
+
+Thank you
+---------
+
+* the new Stackless Website
+  http://www.stackless.com/
+
+  - a **great** donation from Alain Pourier, *Nagare*
+
+* You can hire me as a consultant
+
+* Questions?
diff --git a/talk/ep2012/stackless/stylesheet.latex b/talk/ep2012/stackless/stylesheet.latex
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/stylesheet.latex
@@ -0,0 +1,11 @@
+\usetheme{Boadilla}
+\usecolortheme{whale}
+\setbeamercovered{transparent}
+\setbeamertemplate{navigation symbols}{}
+
+\definecolor{darkgreen}{rgb}{0, 0.5, 0.0}
+\newcommand{\docutilsrolegreen}[1]{\color{darkgreen}#1\normalcolor}
+\newcommand{\docutilsrolered}[1]{\color{red}#1\normalcolor}
+
+\newcommand{\green}[1]{\color{darkgreen}#1\normalcolor}
+\newcommand{\red}[1]{\color{red}#1\normalcolor}
diff --git a/talk/ep2012/stackless/title.latex b/talk/ep2012/stackless/title.latex
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/stackless/title.latex
@@ -0,0 +1,5 @@
+\begin{titlepage}
+\begin{figure}[h]
+\includegraphics[width=60px]{logo_small.png}
+\end{figure}
+\end{titlepage}
diff --git a/talk/ep2012/tools/demo.py b/talk/ep2012/tools/demo.py
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/tools/demo.py
@@ -0,0 +1,114 @@
+
+def simple():
+    for i in range(100000):
+        pass
+
+
+
+
+
+
+
+
+
+def bridge():
+    s = 0
+    for i in range(100000):
+        if i % 2:
+            s += 1
+        else:
+            s += 2
+
+
+
+
+
+
+
+def bridge_overflow():
+    s = 2
+    for i in range(100000):
+        s += i*i*i*i
+    return s
+
+
+
+
+
+
+
+
+def nested_loops():
+    s = 0
+    for i in range(10000):
+        for j in range(100000):
+            s += 1
+
+
+
+
+
+
+
+
+
+def inner1():
+    return 1
+
+def inlined_call():
+    s = 0
+    for i in range(10000):
+        s += inner1()
+
+
+
+
+
+
+
+
+
+def inner2(a):
+    for i in range(3):
+        a += 1
+    return a
+
+def inlined_call_loop():
+    s = 0
+    for i in range(100000):
+        s += inner2(i)
+
+
+
+
+
+
+class A(object):
+    def __init__(self, x):
+        if x % 2:
+            self.y = 3
+        self.x = x
+
+def object_maps():
+    l = [A(i) for i in range(100)]
+    s = 0
+    for i in range(1000000):
+        s += l[i % 100].x
+
+
+
+
+
+
+
+
+
+
+if __name__ == '__main__':
+    simple()
+    bridge()
+    bridge_overflow()
+    nested_loops()
+    inlined_call()
+    inlined_call_loop()
+    object_maps()
diff --git a/talk/ep2012/tools/talk.html b/talk/ep2012/tools/talk.html
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/tools/talk.html
@@ -0,0 +1,120 @@
+<html>
+<head>
+	<meta name="viewport" content="width=1024, user-scalable=no">
+  <link rel="stylesheet" href="/home/fijal/src/deckjs/core/deck.core.css">
+  <link rel="stylesheet" href="web-2.0.css">
+  <link rel="stylesheet" href="/home/fijal/src/deckjs/themes/transition/horizontal-slide.css">
+  <script src="/home/fijal/src/deckjs/modernizr.custom.js"></script>
+  <script src="/home/fijal/src/deckjs/jquery-1.7.min.js"></script>
+  <script src="/home/fijal/src/deckjs/core/deck.core.js"></script>
+  <script>
+    $(function() {
+	  $.deck('.slide');
+    });
+  </script>
+
+</head>
+<body class="deck-container">
+  <section class="slide" id="title-slide">
+    <h1>Performance analysis tools for JITted VMs</h1>
+  </section>
+  <section class="slide">
+    <h2>Who am I?</h2>
+    <ul>
+      <li>worked on PyPy for 5+ years</li>
+      <li>often presented with a task "my program runs slow"</li>
+      <li>never completely satisfied with present solutions</li>
+      <li class="slide">I'm not antisocial, just shy</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>The talk</h2>
+    <ul>
+      <li>apologies for a lack of advanced warning - this is a rant</li>
+      <div class="slide">
+        <li>I'll talk about tools</li>
+        <li>primarily profiling tools</li>
+      </div>
+      <div class="slide">
+        <li>lots of questions</li>
+        <li>not that many answers</li>
+      </div>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>Why ranting?</h2>
+    <ul>
+      <li>the topic at hand is hard</li>
+      <li>the mindset about tools is very much rooted in the static land</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>Profiling theory</h2>
+    <ul>
+      <li>you spend 90% of your time in 10% of the functions</li>
+      <li>hence you can start profiling after you're done developing</li>
+      <li>by optimizing few functions</li>
+      <div class="slide">
+        <li>problem - 10% of 600k lines is still 60k lines</li>
+        <li>that might be even 1000s of functions</li>
+      </div>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>Let's talk about profiling</h2>
+    <ul>
+      <li>I'll try profiling!</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>JITted landscape</h2>
+    <ul>
+      <li>you have to account for warmup times</li>
+      <li>time spent in functions is very context dependent</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>Let's try!</h2>
+  </section>
+  <section class="slide">
+    <h2>High level languages</h2>
+    <ul>
+      <li>in C relation C <-> assembler is "trivial"</li>
+      <li>in PyPy, V8 (JS) or luajit (lua), the mapping is far from trivial</li>
+      <div class="slide">
+        <li>multiple versions of the same code</li>
+        <li>bridges even if there is no branch in user code</li>
+      </div>
+      <li class="slide">sometimes I have absolutely no clue</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>The problem</h2>
+    <ul>
+      <li>what I've shown is pretty much the state of the art</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>Another problem</h2>
+    <ul>
+      <li>often when presented with profiling, it's already too late</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>Better tools</h2>
+    <ul>
+      <li>good vm-level instrumentation</li>
+      <li>better visualizations, more code oriented</li>
+      <li>hints at the editor level about your code</li>
+      <li>hints about coverage, tests</li>
+    </ul>
+  </section>
+  <section class="slide">
+    <h2>&lt;/rant&gt;</h2>
+    <ul>
+      <li>good part - there are people working on it</li>
+      <li>questions, suggestions?</li>
+    </ul>
+  </section>
+</body>
+</html>
diff --git a/talk/ep2012/tools/talk.rst b/talk/ep2012/tools/talk.rst
--- a/talk/ep2012/tools/talk.rst
+++ b/talk/ep2012/tools/talk.rst
@@ -88,7 +88,7 @@
 
 * I don't actually know, but I'll keep trying
 
-Q&A
-===
+Questions?
+==========
 
 * I'm actually listening for advices
diff --git a/talk/ep2012/tools/web-2.0.css b/talk/ep2012/tools/web-2.0.css
new file mode 100644
--- /dev/null
+++ b/talk/ep2012/tools/web-2.0.css
@@ -0,0 +1,215 @@
+ at charset "UTF-8";
+.deck-container {
+  font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
+  font-size: 2.75em;
+  background: #f4fafe;
+  /* Old browsers */
+  background: -moz-linear-gradient(top, #f4fafe 0%, #ccf0f0 100%);
+  /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4fafe), color-stop(100%, #ccf0f0));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #f4fafe 0%, #ccf0f0 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #f4fafe 0%, #ccf0f0 100%);
+  /* Opera11.10+ */
+  background: -ms-linear-gradient(top, #f4fafe 0%, #ccf0f0 100%);
+  /* IE10+ */
+  background: linear-gradient(top, #f4fafe 0%, #ccf0f0 100%);
+  /* W3C */
+  background-attachment: fixed;
+}
+.deck-container > .slide {
+  text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5);
+}
+.deck-container > .slide .deck-before, .deck-container > .slide .deck-previous {
+  opacity: 0.4;
+}
+.deck-container > .slide .deck-before:not(.deck-child-current) .deck-before, .deck-container > .slide .deck-before:not(.deck-child-current) .deck-previous, .deck-container > .slide .deck-previous:not(.deck-child-current) .deck-before, .deck-container > .slide .deck-previous:not(.deck-child-current) .deck-previous {
+  opacity: 1;
+}
+.deck-container > .slide .deck-child-current {
+  opacity: 1;
+}
+.deck-container .slide h1, .deck-container .slide h2, .deck-container .slide h3, .deck-container .slide h4, .deck-container .slide h5, .deck-container .slide h6 {
+  font-family: "Hoefler Text", Constantia, Palatino, "Palatino Linotype", "Book Antiqua", Georgia, serif;
+  font-size: 1.75em;
+}
+.deck-container .slide h1 {
+  color: #08455f;
+}
+.deck-container .slide h2 {
+  color: #0b7495;
+  border-bottom: 0;
+}
+.cssreflections .deck-container .slide h2 {
+  line-height: 1;
+  -webkit-box-reflect: below -0.556em -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.3, transparent), color-stop(0.7, rgba(255, 255, 255, 0.1)), to(transparent));
+  -moz-box-reflect: below -0.556em -moz-linear-gradient(top, transparent 0%, transparent 30%, rgba(255, 255, 255, 0.3) 100%);
+}
+.deck-container .slide h3 {
+  color: #000;
+}
+.deck-container .slide pre {
+  border-color: #cde;
+  background: #fff;
+  position: relative;
+  z-index: auto;
+  /* http://nicolasgallagher.com/css-drop-shadows-without-images/ */
+}
+.borderradius .deck-container .slide pre {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.csstransforms.boxshadow .deck-container .slide pre > :first-child:before {
+  content: "";
+  position: absolute;
+  z-index: -1;
+  background: #fff;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+}
+.csstransforms.boxshadow .deck-container .slide pre:before, .csstransforms.boxshadow .deck-container .slide pre:after {
+  content: "";
+  position: absolute;
+  z-index: -2;
+  bottom: 15px;
+  width: 50%;
+  height: 20%;
+  max-width: 300px;
+  -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7);
+  -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7);
+  box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7);
+}
+.csstransforms.boxshadow .deck-container .slide pre:before {
+  left: 10px;
+  -webkit-transform: rotate(-3deg);
+  -moz-transform: rotate(-3deg);
+  -ms-transform: rotate(-3deg);
+  -o-transform: rotate(-3deg);
+  transform: rotate(-3deg);
+}
+.csstransforms.boxshadow .deck-container .slide pre:after {
+  right: 10px;
+  -webkit-transform: rotate(3deg);
+  -moz-transform: rotate(3deg);
+  -ms-transform: rotate(3deg);
+  -o-transform: rotate(3deg);
+  transform: rotate(3deg);
+}
+.deck-container .slide code {
+  color: #789;
+}
+.deck-container .slide blockquote {
+  font-family: "Hoefler Text", Constantia, Palatino, "Palatino Linotype", "Book Antiqua", Georgia, serif;
+  font-size: 2em;
+  padding: 1em 2em .5em 2em;
+  color: #000;
+  background: #fff;
+  position: relative;
+  border: 1px solid #cde;
+  z-index: auto;
+}
+.borderradius .deck-container .slide blockquote {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.boxshadow .deck-container .slide blockquote > :first-child:before {
+  content: "";
+  position: absolute;
+  z-index: -1;
+  background: #fff;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+}
+.boxshadow .deck-container .slide blockquote:after {
+  content: "";
+  position: absolute;
+  z-index: -2;
+  top: 10px;
+  bottom: 10px;
+  left: 0;
+  right: 50%;
+  -moz-border-radius: 10px/100px;
+  border-radius: 10px/100px;
+  -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.6);
+  -moz-box-shadow: 0 0 15px rgba(0, 0, 0, 0.6);
+  box-shadow: 0 0 15px rgba(0, 0, 0, 0.6);
+}
+.deck-container .slide blockquote p {
+  margin: 0;
+}
+.deck-container .slide blockquote cite {
+  font-size: .5em;
+  font-style: normal;
+  font-weight: bold;
+  color: #888;
+}
+.deck-container .slide blockquote:before {
+  content: "&#8220;";
+  position: absolute;
+  top: 0;
+  left: 0;
+  font-size: 5em;
+  line-height: 1;
+  color: #ccf0f0;
+  z-index: 1;
+}
+.deck-container .slide ::-moz-selection {
+  background: #08455f;
+  color: #fff;
+}
+.deck-container .slide ::selection {
+  background: #08455f;
+  color: #fff;
+}
+.deck-container .slide a, .deck-container .slide a:hover, .deck-container .slide a:focus, .deck-container .slide a:active, .deck-container .slide a:visited {
+  color: #599;
+  text-decoration: none;
+}
+.deck-container .slide a:hover, .deck-container .slide a:focus {
+  text-decoration: underline;
+}
+.deck-container .deck-prev-link, .deck-container .deck-next-link {
+  background: #fff;
+  opacity: 0.5;
+}
+.deck-container .deck-prev-link, .deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-prev-link:active, .deck-container .deck-prev-link:visited, .deck-container .deck-next-link, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus, .deck-container .deck-next-link:active, .deck-container .deck-next-link:visited {
+  color: #599;
+}
+.deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus {
+  opacity: 1;
+  text-decoration: none;
+}
+.deck-container .deck-status {
+  font-size: 0.6666em;
+}
+.deck-container.deck-menu .slide {
+  background: transparent;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.rgba .deck-container.deck-menu .slide {
+  background: rgba(0, 0, 0, 0.1);
+}
+.deck-container.deck-menu .slide.deck-current, .rgba .deck-container.deck-menu .slide.deck-current, .no-touch .deck-container.deck-menu .slide:hover {
+  background: #fff;
+}
+.deck-container .goto-form {
+  background: #fff;
+  border: 1px solid #cde;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.boxshadow .deck-container .goto-form {
+  -webkit-box-shadow: 0 15px 10px -10px rgba(0, 0, 0, 0.5), 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
+  -moz-box-shadow: 0 15px 10px -10px rgba(0, 0, 0, 0.5), 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
+  box-shadow: 0 15px 10px -10px rgba(0, 0, 0, 0.5), 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
+}
diff --git a/talk/vmil2012/Makefile b/talk/vmil2012/Makefile
new file mode 100644
--- /dev/null
+++ b/talk/vmil2012/Makefile
@@ -0,0 +1,13 @@
+
+jit-guards.pdf: paper.tex paper.bib
+	pdflatex paper
+	bibtex paper
+	pdflatex paper
+	pdflatex paper
+	mv paper.pdf jit-guards.pdf
+
+view: jit-guards.pdf
+	evince jit-guards.pdf &
+
+%.tex: %.py
+	pygmentize -l python -o $@ $<
diff --git a/talk/vmil2012/paper.bib b/talk/vmil2012/paper.bib
new file mode 100644
diff --git a/talk/vmil2012/paper.tex b/talk/vmil2012/paper.tex
new file mode 100644
--- /dev/null
+++ b/talk/vmil2012/paper.tex
@@ -0,0 +1,209 @@
+\documentclass{sigplanconf}
+
+\usepackage{ifthen}
+\usepackage{fancyvrb}
+\usepackage{color}
+\usepackage{wrapfig}
+\usepackage{ulem}
+\usepackage{xspace}
+\usepackage{relsize}
+\usepackage{epsfig}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage[utf8]{inputenc}
+\usepackage{setspace}
+
+\usepackage{listings}
+
+\usepackage[T1]{fontenc}
+\usepackage[scaled=0.81]{beramono}
+
+
+\definecolor{commentgray}{rgb}{0.3,0.3,0.3}
+
+\lstset{
+  basicstyle=\ttfamily\footnotesize,
+  language=Python,
+  keywordstyle=\bfseries,
+  stringstyle=\color{blue},
+  commentstyle=\color{commentgray}\textit,
+  fancyvrb=true,
+  showstringspaces=false,
+  %keywords={def,while,if,elif,return,class,get,set,new,guard_class}
+  numberstyle = \tiny,
+  numbersep = -20pt,
+}
+
+\newboolean{showcomments}
+\setboolean{showcomments}{false}
+\ifthenelse{\boolean{showcomments}}
+  {\newcommand{\nb}[2]{
+    \fbox{\bfseries\sffamily\scriptsize#1}
+    {\sf\small$\blacktriangleright$\textit{#2}$\blacktriangleleft$}
+   }
+   \newcommand{\version}{\emph{\scriptsize$-$Id: main.tex 19055 2008-06-05 11:20:31Z cfbolz $-$}}
+  }
+  {\newcommand{\nb}[2]{}
+   \newcommand{\version}{}
+  }
+
+\newcommand\cfbolz[1]{\nb{CFB}{#1}}
+\newcommand\toon[1]{\nb{TOON}{#1}}
+\newcommand\anto[1]{\nb{ANTO}{#1}}
+\newcommand\arigo[1]{\nb{AR}{#1}}
+\newcommand\fijal[1]{\nb{FIJAL}{#1}}
+\newcommand\pedronis[1]{\nb{PEDRONIS}{#1}}
+\newcommand{\commentout}[1]{}
+
+\newcommand{\noop}{}
+
+
+\newcommand\ie{i.e.,\xspace}
+\newcommand\eg{e.g.,\xspace}
+
+\normalem
+
+\let\oldcite=\cite
+
+\renewcommand\cite[1]{\ifthenelse{\equal{#1}{XXX}}{[citation~needed]}{\oldcite{#1}}}
+
+\definecolor{gray}{rgb}{0.5,0.5,0.5}
+
+\begin{document}
+
+\title{Efficiently Handling Guards in the low level design of RPython's tracing JIT}
+
+\authorinfo{Carl Friedrich Bolz$^a$ \and David Schneider$^{a}$}
+           {$^a$Heinrich-Heine-Universit&#228;t D&#252;sseldorf, STUPS Group, Germany
+           }
+           {XXX emails}
+
+\conferenceinfo{VMIL'11}{}
+\CopyrightYear{2012}
+\crdata{}
+
+\maketitle
+
+\category{D.3.4}{Programming Languages}{Processors}[code generation,
+incremental compilers, interpreters, run-time environments]
+
+\terms
+Languages, Performance, Experimentation
+
+\keywords{XXX}
+
+\begin{abstract}
+
+\end{abstract}
+
+
+%___________________________________________________________________________
+\section{Introduction}
+
+
+The contributions of this paper are:
+\begin{itemize}
+ \item
+\end{itemize}
+
+The paper is structured as follows:
+
+\section{Background}
+\label{sec:Background}
+
+\subsection{RPython and the PyPy Project}
+\label{sub:pypy}
+
+
+The RPython language and the PyPy Project were started in 2002 with the goal of
+creating a python interpreter written in a High level language, allowing easy
+language experimentation and extension. PyPy is now a fully compatible
+alternative implementation of the Python language, xxx mention speed. The
+Implementation takes advantage of the language features provided by RPython
+such as the provided tracing just-in-time compiler described below.
+
+RPython, the language and the toolset originally developed to implement the
+Python interpreter have developed into a general environment for experimenting
+and developing fast and maintainable dynamic language implementations. xxx Mention
+the different language impls.
+
+RPython is built of two components, the language and the translation toolchain
+used to transform RPython programs to executable units.  The RPython language
+is a statically typed object oriented high level language. The language provides
+several features such as automatic memory management (aka. Garbage Collection)
+and just-in-time compilation. When writing an interpreter using RPython the
+programmer only has to write the interpreter for the language she is
+implementing.  The second RPython component, the translation toolchain, is used
+to transform the program to a low level representations suited to be compiled
+and run on one of the different supported target platforms/architectures such
+as C, .NET and Java. During the transformation process
+different low level aspects suited for the target environment are automatically
+added to program such as (if needed) a garbage collector and with some hints
+provided by the author a just-in-time compiler.
+
+
+
+\subsection{PyPy's Meta-Tracing JIT Compilers}
+\label{sub:tracing}
+
+ * Tracing JITs
+ * JIT Compiler
+   * describe the tracing jit stuff in pypy
+   * reference tracing the meta level paper for a high level description of what the JIT does
+   * JIT Architecture
+   * Explain the aspects of tracing and optimization
+
+%___________________________________________________________________________
+
+
+\section{Resume Data}
+\label{sec:Resume Data}
+
+* High level handling of resumedata
+   * trade-off fast tracing v/s memory usage
+   * creation in the frontend&#194;
+   * optimization
+   * compression
+   * interaction with optimization
+   * tracing and attaching bridges and throwing away resume data
+   * compiling bridges
+
+% section Resume Data (end)
+
+\section{Guards in the Backend}
+\label{sec:Guards in the Backend}
+
+* Low level handling of guards
+   * Fast guard checks v/s memory usage
+   * memory efficient encoding of low level resume data
+   * fast checks for guard conditions
+   * slow bail out
+
+% section Guards in the Backend (end)
+
+%___________________________________________________________________________
+
+
+\section{Evaluation}
+\label{sec:evaluation}
+
+* Evaluation
+   * Measure guard memory consumption and machine code size
+   * Extrapolate memory consumption for guard other guard encodings
+      * compare to naive variant
+   * Measure how many guards survive optimization
+   * Measure the of guards and how many of these ever fail
+
+\section{Related Work}
+
+
+\section{Conclusion}
+
+
+\section*{Acknowledgements}
+
+\bibliographystyle{abbrv}
+\bibliography{paper}
+
+\end{document}
diff --git a/talk/vmil2012/sigplanconf.cls b/talk/vmil2012/sigplanconf.cls
new file mode 100644
--- /dev/null
+++ b/talk/vmil2012/sigplanconf.cls
@@ -0,0 +1,1250 @@
+%-----------------------------------------------------------------------------
+%
+%               LaTeX Class/Style File
+%
+% Name:         sigplanconf.cls
+% Purpose:      A LaTeX 2e class file for SIGPLAN conference proceedings.
+%               This class file supercedes acm_proc_article-sp,
+%               sig-alternate, and sigplan-proc.
+%
+% Author:       Paul C. Anagnostopoulos
+%               Windfall Software
+%               978 371-2316
+%               paul at windfall.com
+%
+% Created:      12 September 2004
+%
+% Revisions:    See end of file.
+%
+%-----------------------------------------------------------------------------
+
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{sigplanconf}[2009/09/30 v2.3 ACM SIGPLAN Proceedings]
+
+% The following few pages contain LaTeX programming extensions adapted
+% from the ZzTeX macro package.
+
+%                       Token Hackery
+%                       ----- -------
+
+
+\def \@expandaftertwice {\expandafter\expandafter\expandafter}
+\def \@expandafterthrice {\expandafter\expandafter\expandafter\expandafter
+                          \expandafter\expandafter\expandafter}
+
+% This macro discards the next token.
+
+\def \@discardtok #1{}%                                  token
+
+% This macro removes the `pt' following a dimension.
+
+{\catcode `\p = 12 \catcode `\t = 12
+
+\gdef \@remover #1pt{#1}
+
+} % \catcode
+
+% This macro extracts the contents of a macro and returns it as plain text.
+% Usage: \expandafter\@defof \meaning\macro\@mark
+
+\def \@defof #1:->#2\@mark{#2}
+
+%                       Control Sequence Names
+%                       ------- -------- -----
+
+
+\def \@name #1{%                                        {\tokens}
+  \csname \expandafter\@discardtok \string#1\endcsname}
+
+\def \@withname #1#2{%                                  {\command}{\tokens}
+  \expandafter#1\csname \expandafter\@discardtok \string#2\endcsname}
+
+%                       Flags (Booleans)
+%                       ----- ----------
+
+% The boolean literals \@true and \@false are appropriate for use with
+% the \if command, which tests the codes of the next two characters.
+
+\def \@true {TT}
+\def \@false {FL}
+
+\def \@setflag #1=#2{\edef #1{#2}}%              \flag = boolean
+
+%                       IF and Predicates
+%                       -- --- ----------
+
+% A "predicate" is a macro that returns \@true or \@false as its value.
+% Such values are suitable for use with the \if conditional.  For example:
+%
+%   \if \@oddp{\x} <then-clause> \else <else-clause> \fi
+
+% A predicate can be used with \@setflag as follows:
+%
+%   \@setflag \flag = {<predicate>}
+
+% Here are the predicates for TeX's repertoire of conditional
+% commands.  These might be more appropriately interspersed with
+% other definitions in this module, but what the heck.
+% Some additional "obvious" predicates are defined.
+
+\def \@eqlp   #1#2{\ifnum #1 = #2\@true \else \@false \fi}
+\def \@neqlp  #1#2{\ifnum #1 = #2\@false \else \@true \fi}
+\def \@lssp   #1#2{\ifnum #1 < #2\@true \else \@false \fi}
+\def \@gtrp   #1#2{\ifnum #1 > #2\@true \else \@false \fi}
+\def \@zerop  #1{\ifnum #1 = 0\@true \else \@false \fi}
+\def \@onep   #1{\ifnum #1 = 1\@true \else \@false \fi}
+\def \@posp   #1{\ifnum #1 > 0\@true \else \@false \fi}
+\def \@negp   #1{\ifnum #1 < 0\@true \else \@false \fi}
+\def \@oddp   #1{\ifodd #1\@true \else \@false \fi}
+\def \@evenp  #1{\ifodd #1\@false \else \@true \fi}
+\def \@rangep #1#2#3{\if \@orp{\@lssp{#1}{#2}}{\@gtrp{#1}{#3}}\@false \else
+                                                          \@true \fi}
+\def \@tensp  #1{\@rangep{#1}{10}{19}}
+
+\def \@dimeqlp   #1#2{\ifdim #1 = #2\@true \else \@false \fi}
+\def \@dimneqlp  #1#2{\ifdim #1 = #2\@false \else \@true \fi}
+\def \@dimlssp   #1#2{\ifdim #1 < #2\@true \else \@false \fi}
+\def \@dimgtrp   #1#2{\ifdim #1 > #2\@true \else \@false \fi}
+\def \@dimzerop  #1{\ifdim #1 = 0pt\@true \else \@false \fi}
+\def \@dimposp   #1{\ifdim #1 > 0pt\@true \else \@false \fi}
+\def \@dimnegp   #1{\ifdim #1 < 0pt\@true \else \@false \fi}
+
+\def \@vmodep     {\ifvmode \@true \else \@false \fi}
+\def \@hmodep     {\ifhmode \@true \else \@false \fi}
+\def \@mathmodep  {\ifmmode \@true \else \@false \fi}
+\def \@textmodep  {\ifmmode \@false \else \@true \fi}
+\def \@innermodep {\ifinner \@true \else \@false \fi}
+
+\long\def \@codeeqlp #1#2{\if #1#2\@true \else \@false \fi}
+
+\long\def \@cateqlp #1#2{\ifcat #1#2\@true \else \@false \fi}
+
+\long\def \@tokeqlp  #1#2{\ifx #1#2\@true \else \@false \fi}
+\long\def \@xtokeqlp #1#2{\expandafter\ifx #1#2\@true \else \@false \fi}
+
+\long\def \@definedp #1{%
+  \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname
+                   \relax \@false \else \@true \fi}
+
+\long\def \@undefinedp #1{%
+  \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname
+                   \relax \@true \else \@false \fi}
+
+\def \@emptydefp #1{\ifx #1\@empty \@true \else \@false \fi}%       {\name}
+
+\let \@emptylistp = \@emptydefp
+
+\long\def \@emptyargp #1{%                               {#n}
+  \@empargp #1\@empargq\@mark}
+\long\def \@empargp #1#2\@mark{%
+  \ifx #1\@empargq \@true \else \@false \fi}
+\def \@empargq {\@empargq}
+
+\def \@emptytoksp #1{%                                   {\tokenreg}
+  \expandafter\@emptoksp \the#1\@mark}
+
+\long\def \@emptoksp #1\@mark{\@emptyargp{#1}}
+
+\def \@voidboxp #1{\ifvoid #1\@true \else \@false \fi}
+\def \@hboxp #1{\ifhbox #1\@true \else \@false \fi}
+\def \@vboxp #1{\ifvbox #1\@true \else \@false \fi}
+
+\def \@eofp #1{\ifeof #1\@true \else \@false \fi}
+
+
+% Flags can also be used as predicates, as in:
+%
+%   \if \flaga <then-clause> \else <else-clause> \fi
+
+
+% Now here we have predicates for the common logical operators.
+
+\def \@notp #1{\if #1\@false \else \@true \fi}
+
+\def \@andp #1#2{\if #1%
+                  \if #2\@true \else \@false \fi
+                \else
+                  \@false
+                \fi}
+
+\def \@orp #1#2{\if #1%
+                 \@true
+               \else
+                 \if #2\@true \else \@false \fi
+               \fi}
+
+\def \@xorp #1#2{\if #1%
+                  \if #2\@false \else \@true \fi
+                \else
+                  \if #2\@true \else \@false \fi
+                \fi}
+
+%                       Arithmetic
+%                       ----------
+
+\def \@increment #1{\advance #1 by 1\relax}%             {\count}
+
+\def \@decrement #1{\advance #1 by -1\relax}%            {\count}
+
+%                       Options
+%                       -------
+
+
+\@setflag \@authoryear = \@false
+\@setflag \@blockstyle = \@false
+\@setflag \@copyrightwanted = \@true
+\@setflag \@explicitsize = \@false
+\@setflag \@mathtime = \@false
+\@setflag \@natbib = \@true
+\@setflag \@ninepoint = \@true
+\newcount{\@numheaddepth} \@numheaddepth = 3
+\@setflag \@onecolumn = \@false
+\@setflag \@preprint = \@false
+\@setflag \@reprint = \@false
+\@setflag \@tenpoint = \@false
+\@setflag \@times = \@false
+
+% Note that all the dangerous article class options are trapped.
+
+\DeclareOption{9pt}{\@setflag \@ninepoint = \@true
+                    \@setflag \@explicitsize = \@true}
+
+\DeclareOption{10pt}{\PassOptionsToClass{10pt}{article}%
+                     \@setflag \@ninepoint = \@false
+                     \@setflag \@tenpoint = \@true
+                     \@setflag \@explicitsize = \@true}
+
+\DeclareOption{11pt}{\PassOptionsToClass{11pt}{article}%
+                     \@setflag \@ninepoint = \@false
+                     \@setflag \@explicitsize = \@true}
+
+\DeclareOption{12pt}{\@unsupportedoption{12pt}}
+
+\DeclareOption{a4paper}{\@unsupportedoption{a4paper}}
+
+\DeclareOption{a5paper}{\@unsupportedoption{a5paper}}
+
+\DeclareOption{authoryear}{\@setflag \@authoryear = \@true}
+
+\DeclareOption{b5paper}{\@unsupportedoption{b5paper}}
+
+\DeclareOption{blockstyle}{\@setflag \@blockstyle = \@true}
+
+\DeclareOption{cm}{\@setflag \@times = \@false}
+
+\DeclareOption{computermodern}{\@setflag \@times = \@false}
+
+\DeclareOption{executivepaper}{\@unsupportedoption{executivepaper}}
+
+\DeclareOption{indentedstyle}{\@setflag \@blockstyle = \@false}
+
+\DeclareOption{landscape}{\@unsupportedoption{landscape}}
+
+\DeclareOption{legalpaper}{\@unsupportedoption{legalpaper}}
+
+\DeclareOption{letterpaper}{\@unsupportedoption{letterpaper}}
+
+\DeclareOption{mathtime}{\@setflag \@mathtime = \@true}
+
+\DeclareOption{natbib}{\@setflag \@natbib = \@true}
+
+\DeclareOption{nonatbib}{\@setflag \@natbib = \@false}
+
+\DeclareOption{nocopyrightspace}{\@setflag \@copyrightwanted = \@false}
+
+\DeclareOption{notitlepage}{\@unsupportedoption{notitlepage}}
+
+\DeclareOption{numberedpars}{\@numheaddepth = 4}
+
+\DeclareOption{numbers}{\@setflag \@authoryear = \@false}
+
+%%%\DeclareOption{onecolumn}{\@setflag \@onecolumn = \@true}
+
+\DeclareOption{preprint}{\@setflag \@preprint = \@true}
+
+\DeclareOption{reprint}{\@setflag \@reprint = \@true}
+
+\DeclareOption{times}{\@setflag \@times = \@true}
+
+\DeclareOption{titlepage}{\@unsupportedoption{titlepage}}
+
+\DeclareOption{twocolumn}{\@setflag \@onecolumn = \@false}
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+
+\ExecuteOptions{9pt,indentedstyle,times}
+\@setflag \@explicitsize = \@false
+\ProcessOptions
+
+\if \@onecolumn
+  \if \@notp{\@explicitsize}%
+    \@setflag \@ninepoint = \@false
+    \PassOptionsToClass{11pt}{article}%
+  \fi
+  \PassOptionsToClass{twoside,onecolumn}{article}
+\else
+  \PassOptionsToClass{twoside,twocolumn}{article}
+\fi
+\LoadClass{article}
+
+\def \@unsupportedoption #1{%
+  \ClassError{proc}{The standard '#1' option is not supported.}}
+
+% This can be used with the 'reprint' option to get the final folios.
+
+\def \setpagenumber #1{%
+  \setcounter{page}{#1}}
+
+\AtEndDocument{\label{sigplanconf at finalpage}}
+
+%                       Utilities
+%                       ---------
+
+
+\newcommand{\setvspace}[2]{%
+  #1 = #2
+  \advance #1 by -1\parskip}
+
+%                       Document Parameters
+%                       -------- ----------
+
+
+% Page:
+
+\setlength{\hoffset}{-1in}
+\setlength{\voffset}{-1in}
+
+\setlength{\topmargin}{1in}
+\setlength{\headheight}{0pt}
+\setlength{\headsep}{0pt}
+
+\if \@onecolumn
+  \setlength{\evensidemargin}{.75in}
+  \setlength{\oddsidemargin}{.75in}
+\else
+  \setlength{\evensidemargin}{.75in}
+  \setlength{\oddsidemargin}{.75in}
+\fi
+
+% Text area:
+
+\newdimen{\standardtextwidth}
+\setlength{\standardtextwidth}{42pc}
+
+\if \@onecolumn
+  \setlength{\textwidth}{40.5pc}
+\else
+  \setlength{\textwidth}{\standardtextwidth}
+\fi
+
+\setlength{\topskip}{8pt}
+\setlength{\columnsep}{2pc}
+\setlength{\textheight}{54.5pc}
+
+% Running foot:
+
+\setlength{\footskip}{30pt}
+
+% Paragraphs:
+
+\if \@blockstyle
+  \setlength{\parskip}{5pt plus .1pt minus .5pt}
+  \setlength{\parindent}{0pt}
+\else
+  \setlength{\parskip}{0pt}
+  \setlength{\parindent}{12pt}
+\fi
+
+\setlength{\lineskip}{.5pt}
+\setlength{\lineskiplimit}{\lineskip}
+
+\frenchspacing
+\pretolerance = 400
+\tolerance = \pretolerance
+\setlength{\emergencystretch}{5pt}
+\clubpenalty = 10000
+\widowpenalty = 10000
+\setlength{\hfuzz}{.5pt}
+
+% Standard vertical spaces:
+
+\newskip{\standardvspace}
+\setvspace{\standardvspace}{5pt plus 1pt minus .5pt}
+
+% Margin paragraphs:
+
+\setlength{\marginparwidth}{36pt}
+\setlength{\marginparsep}{2pt}
+\setlength{\marginparpush}{8pt}
+
+
+\setlength{\skip\footins}{8pt plus 3pt minus 1pt}
+\setlength{\footnotesep}{9pt}
+
+\renewcommand{\footnoterule}{%
+  \hrule width .5\columnwidth height .33pt depth 0pt}
+
+\renewcommand{\@makefntext}[1]{%
+  \noindent \@makefnmark \hspace{1pt}#1}
+
+% Floats:
+
+\setcounter{topnumber}{4}
+\setcounter{bottomnumber}{1}
+\setcounter{totalnumber}{4}
+
+\renewcommand{\fps at figure}{tp}
+\renewcommand{\fps at table}{tp}
+\renewcommand{\topfraction}{0.90}
+\renewcommand{\bottomfraction}{0.30}
+\renewcommand{\textfraction}{0.10}
+\renewcommand{\floatpagefraction}{0.75}
+
+\setcounter{dbltopnumber}{4}
+
+\renewcommand{\dbltopfraction}{\topfraction}
+\renewcommand{\dblfloatpagefraction}{\floatpagefraction}
+
+\setlength{\floatsep}{18pt plus 4pt minus 2pt}
+\setlength{\textfloatsep}{18pt plus 4pt minus 3pt}
+\setlength{\intextsep}{10pt plus 4pt minus 3pt}
+
+\setlength{\dblfloatsep}{18pt plus 4pt minus 2pt}
+\setlength{\dbltextfloatsep}{20pt plus 4pt minus 3pt}
+
+% Miscellaneous:
+
+\errorcontextlines = 5
+
+%                       Fonts
+%                       -----
+
+
+\if \@times
+  \renewcommand{\rmdefault}{ptm}%
+  \if \@mathtime
+    \usepackage[mtbold,noTS1]{mathtime}%
+  \else
+%%%    \usepackage{mathptm}%
+  \fi
+\else
+  \relax
+\fi
+
+\if \@ninepoint
+
+\renewcommand{\normalsize}{%
+  \@setfontsize{\normalsize}{9pt}{10pt}%
+  \setlength{\abovedisplayskip}{5pt plus 1pt minus .5pt}%
+  \setlength{\belowdisplayskip}{\abovedisplayskip}%
+  \setlength{\abovedisplayshortskip}{3pt plus 1pt minus 2pt}%
+  \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}
+
+\renewcommand{\tiny}{\@setfontsize{\tiny}{5pt}{6pt}}
+
+\renewcommand{\scriptsize}{\@setfontsize{\scriptsize}{7pt}{8pt}}
+
+\renewcommand{\small}{%
+  \@setfontsize{\small}{8pt}{9pt}%
+  \setlength{\abovedisplayskip}{4pt plus 1pt minus 1pt}%
+  \setlength{\belowdisplayskip}{\abovedisplayskip}%
+  \setlength{\abovedisplayshortskip}{2pt plus 1pt}%
+  \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}
+
+\renewcommand{\footnotesize}{%
+  \@setfontsize{\footnotesize}{8pt}{9pt}%
+  \setlength{\abovedisplayskip}{4pt plus 1pt minus .5pt}%
+  \setlength{\belowdisplayskip}{\abovedisplayskip}%
+  \setlength{\abovedisplayshortskip}{2pt plus 1pt}%
+  \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}
+
+\renewcommand{\large}{\@setfontsize{\large}{11pt}{13pt}}
+
+\renewcommand{\Large}{\@setfontsize{\Large}{14pt}{18pt}}
+
+\renewcommand{\LARGE}{\@setfontsize{\LARGE}{18pt}{20pt}}
+
+\renewcommand{\huge}{\@setfontsize{\huge}{20pt}{25pt}}
+
+\renewcommand{\Huge}{\@setfontsize{\Huge}{25pt}{30pt}}
+
+\else\if \@tenpoint
+
+\relax
+
+\else
+
+\relax
+
+\fi\fi
+
+%                       Abstract
+%                       --------
+
+
+\renewenvironment{abstract}{%
+  \section*{Abstract}%
+  \normalsize}{%
+  }
+
+%                       Bibliography
+%                       ------------
+
+
+\renewenvironment{thebibliography}[1]
+     {\section*{\refname
+        \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
+      \list{\@biblabel{\@arabic\c at enumiv}}%
+           {\settowidth\labelwidth{\@biblabel{#1}}%
+            \leftmargin\labelwidth
+            \advance\leftmargin\labelsep
+            \@openbib at code
+            \usecounter{enumiv}%
+            \let\p at enumiv\@empty
+            \renewcommand\theenumiv{\@arabic\c at enumiv}}%
+      \bibfont
+      \clubpenalty4000
+      \@clubpenalty \clubpenalty
+      \widowpenalty4000%
+      \sfcode`\.\@m}
+     {\def\@noitemerr
+       {\@latex at warning{Empty `thebibliography' environment}}%
+      \endlist}
+
+\if \@natbib
+
+\if \@authoryear
+  \typeout{Using natbib package with 'authoryear' citation style.}
+  \usepackage[authoryear,sort,square]{natbib}
+  \bibpunct{[}{]}{;}{a}{}{,}    % Change citation separator to semicolon,
+                                % eliminate comma between author and year.
+  \let \cite = \citep
+\else
+  \typeout{Using natbib package with 'numbers' citation style.}
+  \usepackage[numbers,sort&compress,square]{natbib}
+\fi
+\setlength{\bibsep}{3pt plus .5pt minus .25pt}
+
+\fi
+
+\def \bibfont {\small}
+
+%                       Categories
+%                       ----------
+
+
+\@setflag \@firstcategory = \@true
+
+\newcommand{\category}[3]{%
+  \if \@firstcategory
+    \paragraph*{Categories and Subject Descriptors}%
+    \@setflag \@firstcategory = \@false
+  \else
+    \unskip ;\hspace{.75em}%
+  \fi
+  \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}}
+
+\def \@category #1#2#3[#4]{%
+  {\let \and = \relax
+   #1 [\textit{#2}]%
+   \if \@emptyargp{#4}%
+     \if \@notp{\@emptyargp{#3}}: #3\fi
+   \else
+     :\space
+     \if \@notp{\@emptyargp{#3}}#3---\fi
+     \textrm{#4}%
+   \fi}}
+
+%                       Copyright Notice
+%                       --------- ------
+
+
+\def \ftype at copyrightbox {8}
+\def \@toappear {}
+\def \@permission {}
+\def \@reprintprice {}
+
+\def \@copyrightspace {%
+  \@float{copyrightbox}[b]%
+  \vbox to 1in{%
+    \vfill
+    \parbox[b]{20pc}{%
+      \scriptsize
+      \if \@preprint
+        [Copyright notice will appear here
+         once 'preprint' option is removed.]\par
+      \else
+        \@toappear
+      \fi
+      \if \@reprint
+        \noindent Reprinted from \@conferencename,
+        \@proceedings,
+        \@conferenceinfo,
+        pp.~\number\thepage--\pageref{sigplanconf at finalpage}.\par
+      \fi}}%
+  \end at float}
+
+\long\def \toappear #1{%
+  \def \@toappear {#1}}
+
+\toappear{%
+  \noindent \@permission \par
+  \vspace{2pt}
+  \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par
+  \noindent Copyright \copyright\ \@copyrightyear\ ACM \@copyrightdata
+    \dots \@reprintprice\par}
+
+\newcommand{\permission}[1]{%
+  \gdef \@permission {#1}}
+
+\permission{%
+  Permission to make digital or hard copies of all or
+  part of this work for personal or classroom use is granted without
+  fee provided that copies are not made or distributed for profit or
+  commercial advantage and that copies bear this notice and the full
+  citation on the first page.  To copy otherwise, to republish, to
+  post on servers or to redistribute to lists, requires prior specific
+  permission and/or a fee.}
+
+% Here we have some alternate permission statements and copyright lines:
+
+\newcommand{\ACMCanadapermission}{%
+  \permission{%
+    Copyright \@copyrightyear\ Association for Computing Machinery.
+    ACM acknowledges that
+    this contribution was authored or co-authored by an affiliate of the
+    National Research Council of Canada (NRC).
+    As such, the Crown in Right of
+    Canada retains an equal interest in the copyright, however granting
+    nonexclusive, royalty-free right to publish or reproduce this article,
+    or to allow others to do so, provided that clear attribution
+    is also given to the authors and the NRC.}}
+
+\newcommand{\ACMUSpermission}{%
+  \permission{%
+    Copyright \@copyrightyear\ Association for
+    Computing Machinery. ACM acknowledges that
+    this contribution was authored or co-authored
+    by a contractor or affiliate
+    of the U.S. Government. As such, the Government retains a nonexclusive,
+    royalty-free right to publish or reproduce this article,
+    or to allow others to do so, for Government purposes only.}}
+
+\newcommand{\authorpermission}{%
+  \permission{%
+    Copyright is held by the author/owner(s).}
+  \toappear{%
+    \noindent \@permission \par
+    \vspace{2pt}
+    \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par
+    ACM \@copyrightdata.}}
+
+\newcommand{\Sunpermission}{%
+  \permission{%
+    Copyright is held by Sun Microsystems, Inc.}%
+  \toappear{%
+    \noindent \@permission \par
+    \vspace{2pt}
+    \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par
+    ACM \@copyrightdata.}}
+
+\newcommand{\USpublicpermission}{%
+  \permission{%
+    This paper is authored by an employee(s) of the United States
+    Government and is in the public domain.}%
+  \toappear{%
+    \noindent \@permission \par
+    \vspace{2pt}
+    \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par
+    ACM \@copyrightdata.}}
+
+\newcommand{\reprintprice}[1]{%
+  \gdef \@reprintprice {#1}}
+
+\reprintprice{\$10.00}
+
+%                       Enunciations
+%                       ------------
+
+
+\def \@begintheorem #1#2{%                      {name}{number}
+  \trivlist
+  \item[\hskip \labelsep \textsc{#1 #2.}]%
+  \itshape\selectfont
+  \ignorespaces}
+
+\def \@opargbegintheorem #1#2#3{%               {name}{number}{title}
+  \trivlist
+  \item[%
+    \hskip\labelsep \textsc{#1\ #2}%
+    \if \@notp{\@emptyargp{#3}}\nut (#3).\fi]%
+  \itshape\selectfont
+  \ignorespaces}
+
+%                       Figures
+%                       -------
+
+
+\@setflag \@caprule = \@true
+
+\long\def \@makecaption #1#2{%
+  \addvspace{4pt}
+  \if \@caprule
+    \hrule width \hsize height .33pt
+    \vspace{4pt}
+  \fi
+  \setbox \@tempboxa = \hbox{\@setfigurenumber{#1.}\nut #2}%
+  \if \@dimgtrp{\wd\@tempboxa}{\hsize}%
+    \noindent \@setfigurenumber{#1.}\nut #2\par
+  \else
+    \centerline{\box\@tempboxa}%
+  \fi}
+
+\newcommand{\nocaptionrule}{%
+  \@setflag \@caprule = \@false}
+
+\def \@setfigurenumber #1{%
+  {\rmfamily \bfseries \selectfont #1}}
+
+%                       Hierarchy
+%                       ---------
+
+
+\setcounter{secnumdepth}{\@numheaddepth}
+
+\newskip{\@sectionaboveskip}
+\setvspace{\@sectionaboveskip}{10pt plus 3pt minus 2pt}
+
+\newskip{\@sectionbelowskip}
+\if \@blockstyle
+  \setlength{\@sectionbelowskip}{0.1pt}%
+\else
+  \setlength{\@sectionbelowskip}{4pt}%
+\fi
+
+\renewcommand{\section}{%
+  \@startsection
+    {section}%
+    {1}%
+    {0pt}%
+    {-\@sectionaboveskip}%
+    {\@sectionbelowskip}%
+    {\large \bfseries \raggedright}}
+
+\newskip{\@subsectionaboveskip}
+\setvspace{\@subsectionaboveskip}{8pt plus 2pt minus 2pt}
+
+\newskip{\@subsectionbelowskip}
+\if \@blockstyle
+  \setlength{\@subsectionbelowskip}{0.1pt}%
+\else
+  \setlength{\@subsectionbelowskip}{4pt}%
+\fi
+
+\renewcommand{\subsection}{%
+  \@startsection%
+    {subsection}%
+    {2}%
+    {0pt}%
+    {-\@subsectionaboveskip}%
+    {\@subsectionbelowskip}%
+    {\normalsize \bfseries \raggedright}}
+
+\renewcommand{\subsubsection}{%
+  \@startsection%
+    {subsubsection}%
+    {3}%
+    {0pt}%
+    {-\@subsectionaboveskip}
+    {\@subsectionbelowskip}%
+    {\normalsize \bfseries \raggedright}}
+
+\newskip{\@paragraphaboveskip}
+\setvspace{\@paragraphaboveskip}{6pt plus 2pt minus 2pt}
+
+\renewcommand{\paragraph}{%
+  \@startsection%
+    {paragraph}%
+    {4}%
+    {0pt}%
+    {\@paragraphaboveskip}
+    {-1em}%
+    {\normalsize \bfseries \if \@times \itshape \fi}}
+
+\renewcommand{\subparagraph}{%
+  \@startsection%
+    {subparagraph}%
+    {4}%
+    {0pt}%
+    {\@paragraphaboveskip}
+    {-1em}%
+    {\normalsize \itshape}}
+
+% Standard headings:
+
+\newcommand{\acks}{\section*{Acknowledgments}}
+
+\newcommand{\keywords}{\paragraph*{Keywords}}
+
+\newcommand{\terms}{\paragraph*{General Terms}}
+
+%                       Identification
+%                       --------------
+
+
+\def \@conferencename {}
+\def \@conferenceinfo {}
+\def \@copyrightyear {}
+\def \@copyrightdata {[to be supplied]}
+\def \@proceedings {[Unknown Proceedings]}
+
+
+\newcommand{\conferenceinfo}[2]{%
+  \gdef \@conferencename {#1}%
+  \gdef \@conferenceinfo {#2}}
+
+\newcommand{\copyrightyear}[1]{%
+  \gdef \@copyrightyear {#1}}
+
+\let \CopyrightYear = \copyrightyear
+
+\newcommand{\copyrightdata}[1]{%
+  \gdef \@copyrightdata {#1}}
+
+\let \crdata = \copyrightdata
+
+\newcommand{\proceedings}[1]{%
+  \gdef \@proceedings {#1}}
+
+%                       Lists
+%                       -----
+
+
+\setlength{\leftmargini}{13pt}
+\setlength\leftmarginii{13pt}
+\setlength\leftmarginiii{13pt}
+\setlength\leftmarginiv{13pt}
+\setlength{\labelsep}{3.5pt}
+
+\setlength{\topsep}{\standardvspace}
+\if \@blockstyle
+  \setlength{\itemsep}{1pt}
+  \setlength{\parsep}{3pt}
+\else
+  \setlength{\itemsep}{1pt}
+  \setlength{\parsep}{3pt}
+\fi
+
+\renewcommand{\labelitemi}{{\small \centeroncapheight{\textbullet}}}
+\renewcommand{\labelitemii}{\centeroncapheight{\rule{2.5pt}{2.5pt}}}
+\renewcommand{\labelitemiii}{$-$}
+\renewcommand{\labelitemiv}{{\Large \textperiodcentered}}
+
+\renewcommand{\@listi}{%
+  \leftmargin = \leftmargini
+  \listparindent = 0pt}
+%%%  \itemsep = 1pt
+%%%  \parsep = 3pt}
+%%%  \listparindent = \parindent}
+
+\let \@listI = \@listi
+
+\renewcommand{\@listii}{%
+  \leftmargin = \leftmarginii
+  \topsep = 1pt
+  \labelwidth = \leftmarginii
+  \advance \labelwidth by -\labelsep
+  \listparindent = \parindent}
+
+\renewcommand{\@listiii}{%
+  \leftmargin = \leftmarginiii
+  \labelwidth = \leftmarginiii
+  \advance \labelwidth by -\labelsep
+  \listparindent = \parindent}
+
+\renewcommand{\@listiv}{%
+  \leftmargin = \leftmarginiv
+  \labelwidth = \leftmarginiv
+  \advance \labelwidth by -\labelsep
+  \listparindent = \parindent}
+
+%                       Mathematics
+%                       -----------
+
+
+\def \theequation {\arabic{equation}}
+
+%                       Miscellaneous
+%                       -------------
+
+
+\newcommand{\balancecolumns}{%
+  \vfill\eject
+  \global\@colht = \textheight
+  \global\ht\@cclv = \textheight}
+
+\newcommand{\nut}{\hspace{.5em}}
+
+\newcommand{\softraggedright}{%
+  \let \\ = \@centercr
+  \leftskip = 0pt
+  \rightskip = 0pt plus 10pt}
+
+%                       Program Code
+%                       ------- ----
+
+
+\newcommand{\mono}[1]{%
+  {\@tempdima = \fontdimen2\font
+   \texttt{\spaceskip = 1.1\@tempdima #1}}}
+
+%                       Running Heads and Feet
+%                       ------- ----- --- ----
+
+
+\def \@preprintfooter {}
+
+\newcommand{\preprintfooter}[1]{%
+  \gdef \@preprintfooter {#1}}
+
+\if \@preprint
+
+\def \ps at plain {%
+  \let \@mkboth = \@gobbletwo
+  \let \@evenhead = \@empty
+  \def \@evenfoot {\scriptsize \textit{\@preprintfooter}\hfil \thepage \hfil
+                   \textit{\@formatyear}}%
+  \let \@oddhead = \@empty
+  \let \@oddfoot = \@evenfoot}
+
+\else\if \@reprint
+
+\def \ps at plain {%
+  \let \@mkboth = \@gobbletwo
+  \let \@evenhead = \@empty
+  \def \@evenfoot {\scriptsize \hfil \thepage \hfil}%
+  \let \@oddhead = \@empty
+  \let \@oddfoot = \@evenfoot}
+
+\else
+
+\let \ps at plain = \ps at empty
+\let \ps at headings = \ps at empty
+\let \ps at myheadings = \ps at empty
+
+\fi\fi
+
+\def \@formatyear {%
+  \number\year/\number\month/\number\day}
+
+%                       Special Characters
+%                       ------- ----------
+
+
+\DeclareRobustCommand{\euro}{%
+  \protect{\rlap{=}}{\sf \kern .1em C}}
+
+%                       Title Page
+%                       ----- ----
+
+
+\@setflag \@addauthorsdone = \@false
+
+\def \@titletext {\@latex at error{No title was provided}{}}
+\def \@subtitletext {}
+
+\newcount{\@authorcount}
+
+\newcount{\@titlenotecount}
+\newtoks{\@titlenotetext}
+
+\def \@titlebanner {}
+
+\renewcommand{\title}[1]{%
+  \gdef \@titletext {#1}}
+
+\newcommand{\subtitle}[1]{%
+  \gdef \@subtitletext {#1}}
+
+\newcommand{\authorinfo}[3]{%           {names}{affiliation}{email/URL}
+  \global\@increment \@authorcount
+  \@withname\gdef {\@authorname\romannumeral\@authorcount}{#1}%
+  \@withname\gdef {\@authoraffil\romannumeral\@authorcount}{#2}%
+  \@withname\gdef {\@authoremail\romannumeral\@authorcount}{#3}}
+
+\renewcommand{\author}[1]{%
+  \@latex at error{The \string\author\space command is obsolete;
+                use \string\authorinfo}{}}
+
+\newcommand{\titlebanner}[1]{%
+  \gdef \@titlebanner {#1}}
+
+\renewcommand{\maketitle}{%
+  \pagestyle{plain}%
+  \if \@onecolumn
+    {\hsize = \standardtextwidth
+     \@maketitle}%
+  \else
+    \twocolumn[\@maketitle]%
+  \fi
+  \@placetitlenotes
+  \if \@copyrightwanted \@copyrightspace \fi}
+
+\def \@maketitle {%
+  \begin{center}
+  \@settitlebanner
+  \let \thanks = \titlenote
+  {\leftskip = 0pt plus 0.25\linewidth
+   \rightskip = 0pt plus 0.25 \linewidth
+   \parfillskip = 0pt
+   \spaceskip = .7em
+   \noindent \LARGE \bfseries \@titletext \par}
+  \vskip 6pt
+  \noindent \Large \@subtitletext \par
+  \vskip 12pt
+  \ifcase \@authorcount
+    \@latex at error{No authors were specified for this paper}{}\or
+    \@titleauthors{i}{}{}\or
+    \@titleauthors{i}{ii}{}\or
+    \@titleauthors{i}{ii}{iii}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{}{}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%
+                  \@titleauthors{vii}{}{}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%
+                  \@titleauthors{vii}{viii}{}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%
+                  \@titleauthors{vii}{viii}{ix}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%
+                  \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{}{}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%
+                  \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{}\or
+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%
+                  \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{xii}%
+  \else
+    \@latex at error{Cannot handle more than 12 authors}{}%
+  \fi
+  \vspace{1.75pc}
+  \end{center}}
+
+\def \@settitlebanner {%
+  \if \@andp{\@preprint}{\@notp{\@emptydefp{\@titlebanner}}}%
+    \vbox to 0pt{%
+      \vskip -32pt
+      \noindent \textbf{\@titlebanner}\par
+      \vss}%
+    \nointerlineskip
+  \fi}
+
+\def \@titleauthors #1#2#3{%
+  \if \@andp{\@emptyargp{#2}}{\@emptyargp{#3}}%
+    \noindent \@setauthor{40pc}{#1}{\@false}\par
+  \else\if \@emptyargp{#3}%
+    \noindent \@setauthor{17pc}{#1}{\@false}\hspace{3pc}%
+              \@setauthor{17pc}{#2}{\@false}\par
+  \else
+    \noindent \@setauthor{12.5pc}{#1}{\@false}\hspace{2pc}%
+              \@setauthor{12.5pc}{#2}{\@false}\hspace{2pc}%
+              \@setauthor{12.5pc}{#3}{\@true}\par
+    \relax
+  \fi\fi
+  \vspace{20pt}}
+
+\def \@setauthor #1#2#3{%                       {width}{text}{unused}
+  \vtop{%
+    \def \and {%
+      \hspace{16pt}}
+    \hsize = #1
+    \normalfont
+    \centering
+    \large \@name{\@authorname#2}\par
+    \vspace{5pt}
+    \normalsize \@name{\@authoraffil#2}\par
+    \vspace{2pt}
+    \textsf{\@name{\@authoremail#2}}\par}}
+
+\def \@maybetitlenote #1{%
+  \if \@andp{#1}{\@gtrp{\@authorcount}{3}}%
+    \titlenote{See page~\pageref{@addauthors} for additional authors.}%
+  \fi}
+
+\newtoks{\@fnmark}
+
+\newcommand{\titlenote}[1]{%
+  \global\@increment \@titlenotecount
+  \ifcase \@titlenotecount \relax \or
+    \@fnmark = {\ast}\or
+    \@fnmark = {\dagger}\or
+    \@fnmark = {\ddagger}\or
+    \@fnmark = {\S}\or
+    \@fnmark = {\P}\or
+    \@fnmark = {\ast\ast}%
+  \fi
+  \,$^{\the\@fnmark}$%
+  \edef \reserved at a {\noexpand\@appendtotext{%
+                       \noexpand\@titlefootnote{\the\@fnmark}}}%
+  \reserved at a{#1}}
+
+\def \@appendtotext #1#2{%
+  \global\@titlenotetext = \expandafter{\the\@titlenotetext #1{#2}}}
+
+\newcount{\@authori}
+
+\iffalse
+\def \additionalauthors {%
+  \if \@gtrp{\@authorcount}{3}%
+    \section{Additional Authors}%
+    \label{@addauthors}%
+    \noindent
+    \@authori = 4
+    {\let \\ = ,%
+     \loop 
+       \textbf{\@name{\@authorname\romannumeral\@authori}},
+       \@name{\@authoraffil\romannumeral\@authori},
+       email: \@name{\@authoremail\romannumeral\@authori}.%
+       \@increment \@authori
+     \if \@notp{\@gtrp{\@authori}{\@authorcount}} \repeat}%
+    \par
+  \fi
+  \global\@setflag \@addauthorsdone = \@true}
+\fi
+
+\let \addauthorsection = \additionalauthors
+
+\def \@placetitlenotes {
+  \the\@titlenotetext}
+
+%                       Utilities
+%                       ---------
+
+
+\newcommand{\centeroncapheight}[1]{%
+  {\setbox\@tempboxa = \hbox{#1}%
+   \@measurecapheight{\@tempdima}%         % Calculate ht(CAP) - ht(text)
+   \advance \@tempdima by -\ht\@tempboxa   %           ------------------
+   \divide \@tempdima by 2                 %                   2
+   \raise \@tempdima \box\@tempboxa}}
+
+\newbox{\@measbox}
+
+\def \@measurecapheight #1{%                            {\dimen}
+  \setbox\@measbox = \hbox{ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
+  #1 = \ht\@measbox}
+
+\long\def \@titlefootnote #1#2{%
+  \insert\footins{%
+    \reset at font\footnotesize
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+    \hsize\columnwidth \@parboxrestore
+%%%    \protected at edef\@currentlabel{%
+%%%       \csname p at footnote\endcsname\@thefnmark}%
+    \color at begingroup
+      \def \@makefnmark {$^{#1}$}%
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox}%
+    \color at endgroup}}
+
+%                       LaTeX Modifications
+%                       ----- -------------
+
+\def \@seccntformat #1{%
+  \@name{\the#1}%
+  \@expandaftertwice\@seccntformata \csname the#1\endcsname.\@mark
+  \quad}
+
+\def \@seccntformata #1.#2\@mark{%
+  \if \@emptyargp{#2}.\fi}
+
+%                       Revision History
+%                       -------- -------
+
+
+%  Date         Person  Ver.    Change
+%  ----         ------  ----    ------
+
+%  2004.09.12   PCA     0.1--5  Preliminary development.
+
+%  2004.11.18   PCA     0.5     Start beta testing.
+
+%  2004.11.19   PCA     0.6     Obsolete \author and replace with
+%                               \authorinfo.
+%                               Add 'nocopyrightspace' option.
+%                               Compress article opener spacing.
+%                               Add 'mathtime' option.
+%                               Increase text height by 6 points.
+
+%  2004.11.28   PCA     0.7     Add 'cm/computermodern' options.
+%                               Change default to Times text.
+
+%  2004.12.14   PCA     0.8     Remove use of mathptm.sty; it cannot
+%                               coexist with latexsym or amssymb.
+
+%  2005.01.20   PCA     0.9     Rename class file to sigplanconf.cls.
+
+%  2005.03.05   PCA     0.91    Change default copyright data.
+
+%  2005.03.06   PCA     0.92    Add at-signs to some macro names.
+
+%  2005.03.07   PCA     0.93    The 'onecolumn' option defaults to '11pt',
+%                               and it uses the full type width.
+
+%  2005.03.15   PCA     0.94    Add at-signs to more macro names.
+%                               Allow margin paragraphs during review.
+
+%  2005.03.22   PCA     0.95    Implement \euro.
+%                               Remove proof and newdef environments.
+
+%  2005.05.06   PCA     1.0     Eliminate 'onecolumn' option.
+%                               Change footer to small italic and eliminate
+%                               left portion if no \preprintfooter.
+%                               Eliminate copyright notice if preprint.
+%                               Clean up and shrink copyright box.
+
+%  2005.05.30   PCA     1.1     Add alternate permission statements.
+
+%  2005.06.29   PCA     1.1     Publish final first edition of guide.
+
+%  2005.07.14   PCA     1.2     Add \subparagraph.
+%                               Use block paragraphs in lists, and adjust
+%                               spacing between items and paragraphs.
+
+%  2006.06.22   PCA     1.3     Add 'reprint' option and associated
+%                               commands.
+
+%  2006.08.24   PCA     1.4     Fix bug in \maketitle case command.
+
+%  2007.03.13   PCA     1.5     The title banner only displays with the
+%                               'preprint' option.
+
+%  2007.06.06   PCA     1.6     Use \bibfont in \thebibliography.
+%                               Add 'natbib' option to load and configure
+%                                 the natbib package.
+
+%  2007.11.20   PCA     1.7     Balance line lengths in centered article
+%                                 title (thanks to Norman Ramsey).
+
+%  2009.01.26   PCA     1.8     Change natbib \bibpunct values.
+
+%  2009.03.24   PCA     1.9     Change natbib to use the 'numbers' option.
+%                               Change templates to use 'natbib' option.
+
+%  2009.09.01   PCA     2.0     Add \reprintprice command (suggested by
+%                                 Stephen Chong).
+
+%  2009.09.08   PCA     2.1     Make 'natbib' the default; add 'nonatbib'.
+%               SB              Add 'authoryear' and 'numbers' (default) to
+%                               control citation style when using natbib.
+%                               Add \bibpunct to change punctuation for
+%                               'authoryear' style.
+
+%  2009.09.21   PCA     2.2     Add \softraggedright to the thebibliography
+%                               environment. Also add to template so it will
+%                               happen with natbib.
+
+%  2009.09.30   PCA     2.3     Remove \softraggedright from thebibliography.  
+%                               Just include in the template.
+


More information about the pypy-commit mailing list