1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-12-22 13:00:08 +00:00
pdf2htmlEX/demo/demo7.page
2013-09-28 13:30:57 +08:00

2 lines
86 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="pd w0 h0"><div id="pf7" class="pf" data-page-no="7"><div class="pc pc7"><img class="bi x2f y13e w8 h18" alt="" src="data:image/png;base64,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fWNjY2ZmZnFxcWdeM76+vv5nP/tZqwkwCxYsmDVr1tkGy+ND7+vWrdu3b1/LT4VD70OGDDnjgpIpKSnTpk0LL+fm5roXoeM5X7FY7De/+U34Zt8jjzwyatSo0ydyVFVVbdmy5cknn/zrv/7r+fPnL1q06JINzLd6d7I7yM/Pj18Ig/7S/Nx33nmn6x60pKSkqVOn+u8Ml1J6evqUKVP27NlTXV19+lq3mZmZw4YN68zD8EEQ7Nu37+mnnw6faPLz8+NR/tJLL3388ccLFixoVfxtH3oHHX8lGDt27LJly8rLyzvnr3fo0KEvf/nLO3fuHD9+/He+853MzMwzfllOTk5OTs6ECRP+8R//ccmSJcuXL1+yZMmlGUvYuHFj0I3PBIpEIjU1NRUVFZdmA6Zrrrmmix6orVu3erSBSy8hIWHw4MGDBw8Ol4cPz6Tftm3b2WbadCp/+ctfwlkuGRkZixcvDsdQTp48+dZbb7300kuvv/56YWHhddddd7ah95EjR86YMeOaa66xlxM6/opVXFwcBMGOHTtisVhnm1wei8XCiH/kkUduvPHGT/36zMzMH/3oR2+88cYLL7wwf/78N9544xL8i8IpPd152Zza2trdu3f36dMnPk4P0AmDPt7uXSLigyBYuXJlmOP/8i//8t///d8tP/X444+//vrrP//5z3/+85+3vD4jI2PWrFkjR44sLCw09E4XZa5tOwwaNCi88PHHH3e23+03v/lN2yM+7sYbb/zmN79ZU1PzT//0Txf7N4xvkDF27NhuexcaMmRISkrKunXrOrYhFABntH379iAIPve5z53+qbvvvrvl0MnIkSO/9rWvPf/8888999wdd9wxfPhwEY+O7xbiE0J+9atfdapfrLKy8qmnnho/fny7Ij40efLkWbNmLVmyZMeOHRf1l1y+fHl4oX///t33/1ti4uzZs/Py8vxvAriAwmnxZ9ziukePHuHc0c9+9rP//u///q1vfWvKlCnmz6Dju6OHH344CIJLUL1tF4vFHnjggSAIvvOd73TsFhYtWpSVlXXffffFYrGL+kojCIL777+/m693mZKSMnHixJSUlLVr17777rvl5eXx038N0gN0QPzBMyUl5RxfNmDAAEPvXGHMj2+fO++883e/+92OHTvuu+++SzOn/FNt3rw5nFFzthNbP1WvXr2++c1vPvzwwytXrpwxY8bFeKXx4IMPBkEQjUa/8pWvuBeFcnJyNm/eXF1dHQTB3Llzjx8//tZbb4Wfys7Ovv7669euXVtRURFeM2vWrLS0tNdeey18ukpJSbn55pv37NmzadOm8AvGjBlTWFj47rvvhjdoW0Gg+6ivrw8vtFppJxqNrl27NgiCcFEa74Wi47v98YpEnnvuuVtvvbWmpubGG2+8NEuwf//73583b97ZflA4KXDChAnn8yMmT54cBMHF6PjKysoHH3wwfPviF7/4hc2n4vLz8/Pz8xsbG48fP56SkpKUlBT/I4Zv+A4fPjy+bGjv3r0TExPHjx9/4sSJIAiSkpIikUheXl58Ied+/foFQTB06NDwLI7du3c7wkAHvP3223/4wx/iHy5cuDAIgu9+97udedHJ7OzskSNHbtu27Sc/+UnL62tqaoIgiP9zuso5u6DjL6Lc3Nyf/vSnX//612tqasIl2L/whS9c1HUblyxZsmTJkmg0et99991xxx2pqaktPxsu5tjhwfi4goKCNWvWXMBf+9ChQ8uXL4/vXH3//ffbdup0KSkp4RvBiYmJrRaxycjIyMjIaHlNq90AUlJSWn1L/At0PNAxw4YNW7p0afzDpUuX9u3bt5OvHB8EwaJFix566KG6urp77rln4cKFkyZNCq//wQ9+EG4LNXLkSG9UouMJgiCYMWPG8uXLw2HmMLKDIJg8efINN9zQKrzapXfv3oWFhWf7bE1NzVNPPfXUU0/NmTPn7rvvHj16dDi2vWzZslmzZp3/P2rs2LGvvPLK3r17zzZ98MCBA/v372/LTb3zzjvhEpMhe8cCdBV5eXlFRUWlpaXxa77+9a93/l+7R48eTzzxxAMPPLBv375FixbFrw8j/nOf+9wdd9zhj4uO5//Jzc19+eWX45unBkGwevXqVtvCXSTLli1btmxZNBq96667brnlliAIRo0adf43G66Of9ttt13Y33b+/PkPPvhgq/cQAOi0vvrVrz700EPxDz/zmc90iV/7qquueuSRR5588slW1z/yyCMGktDxnHbsIpF77rnnnnvuqaysLC8v37p16wcffPCp31VeXn5B1rqJRqMZGRnHjh0LgqB3797nf4Pp6ekd+K7hw4ef8T2EmTNnjh07tn///ibEA3QtN910U/zytGnTOv+kmpZPSS+++GIQBAUFBeE1zz//vCUm0fGcS25ubm5u7sVY6SXUcgPUcBh+9uzZLUcXVq1a1YGV41spKysLguDPf/6zsXOA7iw1NfX2228PZ8l/8Ytf7NL/FhGPjqdTmD9//i233BKfFh83efLk999///xvf+/evdFoVMRfGZKSkrZu3dp1f3l/Qbi8vvCFL4QdP336dEcDdDwd99Of/nTChAlnK+zx48evXr365MmT57m9xVtvvTVnzhxH+8owdepUBwHosLFjx/bt2/e2224zN/JsDh06FL984MCB/Pz8xER7a3Kpuc91ATNmzDjHMPk111wT/N8p+R0W7p0xc+ZMRxuASCQyb968z372sw7FGR07duzAgQPxD0tLS1etWuWwcBn+qzoEXd2ECROi0ehjjz3229/+tmND8idPnnzkkUeCIJgyZYrjCdBtrVu3buXKlWvWrFm5cmUQBL/4xS/69u07ZcqUWbNmXX/99V3ohNeLqqmpacWKFa2uPHr06JEjRy7IshPQdsbju7zU1NTHH3/88OHDL7zwQsdu4Y9//OPu3bsffvhhe2QAdE+ffPLJwoUL77zzzmeeeebEiRP33Xff448//vjjj48fP3779u0PPfTQxIkTX3zxxVgs5ljt3bv3jNfbgI9Lz3j8lWDGjBlz5sx55ZVXbrvttvhiW21UVVX13HPPDRs27M4773QkAbqht99++1vf+tbBgwcXLVo0b968lnPib7311iAIjh079uSTT37ve9/7j//4j3/913/Ny8vrzofrxIkTZ7z+6NGj7ktcYsbjrxD/8A//EI1GFy1aFM50b6Pa2tqnn346CILnn3/eyUwA3TPiv/SlL2VmZv7hD3+48847z/hc0KtXryeeeOLHP/7xwYMH582bV1FR0Z2PWE5Ozhmvt9sUOp4OSk1N/fGPf3z48OG7777797///cmTJz/1W954443Pfe5zGzZs+P73v5+bm+sYAnQ3NTU1X/rSlyZOnPjLX/5y4MCB5/7iadOm/frXv25ubv7KV77SnSfYZGVlJScnn3698wfQ8XTcuHHj3nnnncmTJz/33HP33XffOQbma2tr//7v//7JJ58cNmzY8uXLb7vttm5yiFrupLtx48bzWXe/pqam5Yfr1q0zbRTochYuXBgEwRNPPNHGt2SzsrIeffTRsrKyJUuWdOfjNmHChJZnlKWnp0+dOtW6k1x6Cc3NzY7CFeZ//ud/vv3tb4cPuOPGjRs1atTQoUPT0tJ27969atWq999///Dhw0EQPPzww2d7C/WKdOjQoVWrVoVHJu773/9+B17GfPLJJ9u2bWt1RsG999772GOPufsBXUU4o+bxxx8PJ8G33aOPPvraa6+tXbu2vSPQFRUV4d7nF/uU0PipYhf1BzU1NR08eDArK6tXr17uTuh4LmSzLl++fOPGjcuWLQuC4Pjx4ydPnoxEIikpKXPmzBkyZMhf/dVfdau5NLFY7MYbb2w1iB4EwfDhw3/3u9+199bmzp1bWlp6+vVbtmyxIS7QVSxYsODAgQO//vWv2/uNhw8fvuWWW3784x+3d4H50tLSuXPnXjEdD5ed94CuTH369Lnnnnt++MMfbt68+Z133gkXhv+Hf/iHzZs3//CHP/y7v/u77jYhfuXKladHfBAEO3bsaDnZpi0qKirOGPFBELz++uvue0AXemCcNWtWB74xKysrGo2+9dZb7f3G1157LQiCoqKiS/ZvbO8abqDj6XRNn5WVFQRBWlpad366Otundu7c2a6bOsfXb9y40f0N6BLCNWeKi4s79u0lJSXt2sH0k08++a//+q9nnnkmCILFixdf1H+as5XoPiw1SLcwb968s52VdcMNN7TrpiZNmnS2T3WfM4aBri4ckhgyZEjHvv36669/7bXXOjDaXVRUNH369Iv37zIAT7diPJ5uYfjw4Wdc2XfOnDntndGempr6jW984/Tr+/btO2HCBIca6BLq6+uDILiUJ2j27dv3G9/4xn/+53/argQuFP+X6C4effTRhx56qOUs+Wg0+uUvf7kDNzVv3ryXXnrp4MGDLa/8wQ9+4CADXUVJSUkQBHv37g0nXrbX1q1bgyBYsWJF278lJydHwYOOh44YN27cG2+8sXLlymeffbZPnz7333//uHHjOnZTeXl5a9asWbdu3a9+9audO3cuXrx4+vTpnp+ALiTclLSsrOzaa6/twLevX7/+9ttvz8vLcyThMrLu5JWsoqLi6aefDoJg1apVBw8eHDduXPiY++yzzzo4AN3cnDlzrrrqqp/+9Kft/cZYLDZ16tTHHnvs3nvvdRjhMjI//kqWk5OzdOnSpUuXhjNA3n///aVLlxYWFjoyAHz+859fu3btrl272vuN4WDQ7NmzHUPQ8VwskUjk9DMy582b58gAMH/+/L59+z7wwAPtWqhx165dL7/88r333mtSDeh4Lq6bb7655YdFRUUeeQEIgiASifzyl7+sqalp+2TLWCz2wAMP9O3b92KvAQ/oeIKioqK+ffvGP/TIC0DL54h777335Zdf/tGPfvSpo/KHDx9euHBhTU3ND37wg/au2AvoeDpiwYIF8csXdfcNALqc8HTVl19++fbbbz/HXPnly5ffcssta9eu/bd/+7f2bp8HXCTWq7nylZaWzp07NwiCb3zjGw8++KADAsDpzxR/8zd/c/DgwYkTJ86cOTM3Nzfc6nXTpk1bt25dv379rl27pk6d+uyzz0ajUYcLdDyXzty5c0tLS1esWGFyPABnFIvFXnjhhWXLlpWVlbX61O23337HHXcYhgcdz2Xw4osvvvzyy6+++qpDAcCnqqio2LlzZ+/evYcMGWIAHnQ8l1NNTc2mTZsMpQAA6HgAAOCysV4NAADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAKD7iTgEAHyqhIQEBwGgcz0yNzc3OwoAANC1mFcDAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQBAxwMAADoeAADQ8QAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AALRNJBaLJSUlORAAnUpzc7ODAMA5JHiqAACALse8GgAA0PEAAICOBwAAdDwAAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAAOh4AANDxAACAjgcAAB0PAADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQBAxwMAADoeAADQ8QAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AADQ8QAAgI4HAAB0PAAA6HgAAEDHAwAAOh4AAHQ8AACg4wEAAB0PAADoeAAA0PEAAICOBwAAdDwAAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAAOh4AANDxAACAjgcAAHQ8AADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACAjgcAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQBAxwMAADoeAADQ8QAAoOMBAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AADQ8QAAgI4HAAB0PAAA6HgAAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAA0PEAAICOBwAAdDwAAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwAAOh4AAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAAAdDwAAOh4AANDxAACAjgcAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQBAxwMAADoeAADQ8QAAoOMBAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AADQ8QAAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAA0PEAAICOBwAAdDwAAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAB0PAAA6HgAAEDHAwAAOh4AAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAAOh4AANDxAACAjgcAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQBAxwMAADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAA0PEAAICOBwAAdDwAAOh4AABAxwMAADoeAADQ8QAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AAOh4AADQ8QAAgI4HAAB0PAAA6HgAAEDHAwAAOh4AAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAAOh4AANDxAACAjgcAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAA0PEAAICOBwAAdDwAAKDjAQBAxwMAADoeABnsuoQAAAlySURBVADQ8QAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AADoeAAAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AADQ8QAAgI4HAAB0PAAA6HgAAEDHAwAAOh4AAHQ8AACg4wEAAB0PAAA6HgAA0PEAAICOBwAAdDwAAOh4AABAxwMAADoeAAB0PAAAoOMBAAAdDwAAOh4AANDxAACAjgcAAB0PAADoeAAAQMcDAAA6HgAAdDwAAKDjAQAAHQ8AADoeAADQ8QAAgI4HAAAdDwAA6HgAAEDHAwCAjgcAAHQ8AACg4wEAQMcDAAA6HgAA0PEAAICOBwAAHQ8AAOh4AABAxwMAgI4HAAB0PAAAoOMBAEDHAwAAOh4AANDxAACg4wEAAB0PAADoeAAAQMcDAICOBwAAdDwAAKDjAQBAxwMAADoeAADQ8QAAoOMBAAAdDwAA6HgAANDxAACAjgcAAHQ8AADoeAAAQMcDAAA6HgAA0PEAAKDjAQAAHQ8AAOh4AADQ8QAAgI4HAAB0PAAA6HgAAEDHAwAAOh4AAHQ8AACg4wEAAB0PAADoeAAA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"/><div class="c xd yc w9 h19"><div class="t m0 x8e h1a y13e ff13 fsb fc0 sc0 ls0 ws0">i<span class="fs9">2</span></div><div class="t m0 x8f h1a y33 ff13 fsb fc0 sc0 ls0 ws0">i<span class="fs9">3<span class="_ _25"> </span></span>i<span class="fs9">4</span></div><div class="t m0 x8e h1a y18c ff13 fsb fc0 sc0 ls0 ws0">i<span class="fs9">5</span></div><div class="t m0 x8e h1a y18d ff13 fsb fc0 sc0 ls0 ws0">i<span class="fs9">1</span></div><div class="t m0 x51 h1a y18e ff13 fsb fc0 sc0 ls0 ws0">i<span class="fs9">6</span></div><div class="t m0 x8e h1a y17d ff13 fsb fc0 sc0 ls0 ws0">i<span class="fs9">7</span></div><div class="t m0 x31 h1a y18f ff13 fsb fc0 sc0 ls0 ws0">t<span class="fs9">1</span></div><div class="t m0 x90 h1a y190 ff13 fsb fc0 sc0 ls0 ws0">t<span class="fs9">2</span></div><div class="t m0 x91 h14 y191 ff13 fsc fc0 sc0 ls0 ws0">Tr<span class="_ _2"></span>eeCall</div><div class="t m0 x92 h14 y97 ff13 fsc fc0 sc0 ls0 ws0">OuterT<span class="_ _2"></span>ree</div><div class="t m0 x91 h14 y192 ff13 fsc fc0 sc0 ls0 ws0">NestedT<span class="_ _2"></span>ree</div><div class="t m0 x64 h14 y193 ff13 fsc fc0 sc0 ls0 ws0">ExitGuard</div><div class="t m0 x93 h8 y194 ff13 fsa fc0 sc0 ls0 ws0">(a)</div><div class="t m0 x94 h8 y195 ff13 fsa fc0 sc0 ls0 ws0">(b)</div></div><div class="t m0 x2f h5 y196 ff1 fs3 fc0 sc0 ls0 ws0">Figure<span class="_ _5"> </span>7.<span class="_ _1"> </span><span class="ff2">Control<span class="_ _5"> </span>flow<span class="_ _5"> </span>graph<span class="_ _5"> </span>of<span class="_ _5"> </span>a<span class="_ _5"> </span>nested<span class="_ _5"> </span>loop<span class="_ _3"> </span>with<span class="_ _5"> </span>an<span class="_ _5"> </span>if<span class="_ _5"> </span>statement</span></div><div class="t m0 x2f h5 y197 ff2 fs3 fc0 sc0 ls0 ws0">inside<span class="_ _8"> </span>the<span class="_ _d"> </span>inner<span class="_ _8"> </span>most<span class="_ _d"> </span>loop<span class="_ _8"> </span>(a).<span class="_ _d"> </span>An<span class="_ _8"> </span>inner<span class="_ _d"> </span>tree<span class="_ _8"> </span>captures<span class="_ _d"> </span>the<span class="_ _8"> </span>inner</div><div class="t m0 x2f h5 y198 ff2 fs3 fc0 sc0 ls0 ws0">loop,<span class="_ _5"> </span>and<span class="_ _5"> </span>is<span class="_ _5"> </span>nested<span class="_ _5"> </span>inside<span class="_ _5"> </span>an<span class="_ _5"> </span>outer<span class="_ _5"> </span>tree<span class="_ _5"> </span>which<span class="_ _5"> </span>“calls”<span class="_ _5"> </span>the<span class="_ _5"> </span>inner<span class="_ _5"> </span>tree.</div><div class="t m0 x2f h5 y199 ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _3"> </span>inner<span class="_ _3"> </span>tree<span class="_ _3"> </span>returns<span class="_ _3"> </span>to<span class="_ _3"> </span>the<span class="_ _3"> </span>outer<span class="_ _3"> </span>tree<span class="_ _3"> </span>once<span class="_ _3"> </span>it<span class="_ _3"> </span>exits<span class="_ _3"> </span>along<span class="_ _3"> </span>its<span class="_ _3"> </span>loop</div><div class="t m0 x2f h5 y19a ff2 fs3 fc0 sc0 ls0 ws0">condition<span class="_ _5"> </span>guard<span class="_ _5"> </span>(b).</div><div class="t m0 x2f h5 y116 ff2 fs3 fc0 sc0 ls0 ws0">In<span class="_ _5"> </span>general,<span class="_ _5"> </span>if<span class="_ _5"> </span>loops<span class="_ _7"> </span>are<span class="_ _5"> </span>nested<span class="_ _5"> </span>to<span class="_ _5"> </span>depth<span class="_ _7"> </span><span class="fff">k<span class="_ _4"></span></span>,<span class="_ _5"> </span>and<span class="_ _5"> </span>each<span class="_ _5"> </span>loop<span class="_ _7"> </span>has<span class="_ _5"> </span><span class="fff">n<span class="_ _5"> </span></span>paths</div><div class="t m0 x2f h5 y15c ff2 fs3 fc0 sc0 ls0 ws0">(on<span class="_ _8"> </span>geometric<span class="_ _d"> </span>a<span class="_ _2"></span>verage),<span class="_ _6"> </span>this<span class="_ _d"> </span>na</div><div class="t m0 x95 h5 y15c ff2 fs3 fc0 sc0 ls0 ws0">¨</div><div class="t m0 x95 h7 y15c ff2 fs3 fc0 sc0 ls0 ws0">ıve<span class="_ _8"> </span>strategy<span class="_ _8"> </span>yields<span class="_ _8"> </span><span class="fff">O<span class="_ _4"></span><span class="ff14">(</span>n</span></div><div class="t m0 x96 h1b ye1 ff10 fs4 fc0 sc0 ls0 ws0">k</div><div class="t m0 x1 h7 y15c ff14 fs3 fc0 sc0 ls0 ws0">)<span class="_ _8"> </span><span class="ff2">traces,</span></div><div class="t m0 x2f h5 y15d ff2 fs3 fc0 sc0 ls0 ws0">which<span class="_ _5"> </span>can<span class="_ _5"> </span>easily<span class="_ _3"> </span>fill<span class="_ _5"> </span>the<span class="_ _5"> </span>trace<span class="_ _5"> </span>cache.</div><div class="t m0 x34 h5 y15e ff2 fs3 fc0 sc0 ls0 ws0">In<span class="_ _8"> </span>order<span class="_ _d"> </span>to<span class="_ _8"> </span>execute<span class="_ _8"> </span>programs<span class="_ _8"> </span>with<span class="_ _d"> </span>nested<span class="_ _8"> </span>loops<span class="_ _8"> </span>efficiently<span class="_ _b"></span>,<span class="_ _d"> </span>a</div><div class="t m0 x2f h5 y15f ff2 fs3 fc0 sc0 ls0 ws0">tracing<span class="_ _5"> </span>system<span class="_ _7"> </span>needs<span class="_ _5"> </span>a<span class="_ _5"> </span>technique<span class="_ _7"> </span>for<span class="_ _5"> </span>cov<span class="_ _2"></span>ering<span class="_ _5"> </span>the<span class="_ _7"> </span>nested<span class="_ _5"> </span>loops<span class="_ _5"> </span>with</div><div class="t m0 x2f h5 y160 ff2 fs3 fc0 sc0 ls0 ws0">nativ<span class="_ _2"></span>e<span class="_ _5"> </span>code<span class="_ _5"> </span>without<span class="_ _5"> </span>exponential<span class="_ _5"> </span>trace<span class="_ _5"> </span>duplication.</div><div class="t m0 x2f hc y79 ff1 fs3 fc0 sc0 ls0 ws0">4.1<span class="_ _9"> </span>Nesting<span class="_ _5"> </span>Algorithm</div><div class="t m0 x2f h5 y19b ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _3"> </span>k<span class="_ _2"></span>ey<span class="_ _3"> </span>insight<span class="_ _5"> </span>is<span class="_ _3"> </span>that<span class="_ _3"> </span>if<span class="_ _5"> </span>each<span class="_ _3"> </span>loop<span class="_ _3"> </span>is<span class="_ _5"> </span>represented<span class="_ _3"> </span>by<span class="_ _3"> </span>its<span class="_ _3"> </span>o<span class="_ _2"></span>wn<span class="_ _5"> </span>trace</div><div class="t m0 x2f h5 y19c ff2 fs3 fc0 sc0 ls0 ws0">tree,<span class="_ _3"> </span>the<span class="_ _3"> </span>code<span class="_ _3"> </span>for<span class="_ _3"> </span>each<span class="_ _5"> </span>loop<span class="_ _3"> </span>can<span class="_ _3"> </span>be<span class="_ _3"> </span>contained<span class="_ _3"> </span>only<span class="_ _3"> </span>in<span class="_ _3"> </span>its<span class="_ _3"> </span>o<span class="_ _2"></span>wn<span class="_ _3"> </span>tree,</div><div class="t m0 x2f h5 y19d ff2 fs3 fc0 sc0 ls0 ws0">and<span class="_ _5"> </span>outer<span class="_ _5"> </span>loop<span class="_ _5"> </span>paths<span class="_ _7"> </span>will<span class="_ _5"> </span>not<span class="_ _5"> </span>be<span class="_ _5"> </span>duplicated.<span class="_ _5"> </span>Another<span class="_ _5"> </span>k<span class="_ _2"></span>e<span class="_ _2"></span>y<span class="_ _5"> </span>fact<span class="_ _5"> </span>is<span class="_ _7"> </span>that</div><div class="t m0 x2f h5 y19e ff2 fs3 fc0 sc0 ls0 ws0">we<span class="_ _5"> </span>are<span class="_ _5"> </span>not<span class="_ _5"> </span>tracing<span class="_ _5"> </span>arbitrary<span class="_ _5"> </span>bytecodes<span class="_ _5"> </span>that<span class="_ _5"> </span>might<span class="_ _5"> </span>hav<span class="_ _2"></span>e<span class="_ _5"> </span>irreduceable</div><div class="t m0 x2f h5 y19f ff2 fs3 fc0 sc0 ls0 ws0">control<span class="_ _3"> </span>flow<span class="_ _3"> </span>graphs,<span class="_ _3"> </span>but<span class="_ _3"> </span>rather<span class="_ _3"> </span>bytecodes<span class="_ _3"> </span>produced<span class="_ _6"> </span>by<span class="_ _3"> </span>a<span class="_ _3"> </span>compiler</div><div class="t m0 x2f h5 y1a0 ff2 fs3 fc0 sc0 ls0 ws0">for<span class="_ _3"> </span>a<span class="_ _6"> </span>language<span class="_ _3"> </span>with<span class="_ _3"> </span>structured<span class="_ _3"> </span>control<span class="_ _6"> </span>flo<span class="_ _2"></span>w<span class="_ _b"></span>.<span class="_ _6"> </span>Thus,<span class="_ _3"> </span>giv<span class="_ _2"></span>en<span class="_ _3"> </span>two<span class="_ _3"> </span>loop</div><div class="t m0 x2f h5 y1a1 ff2 fs3 fc0 sc0 ls0 ws0">edges,<span class="_ _8"> </span>the<span class="_ _d"> </span>system<span class="_ _8"> </span>can<span class="_ _d"> </span>easily<span class="_ _d"> </span>determine<span class="_ _8"> </span>whether<span class="_ _d"> </span>the<span class="_ _2"></span>y<span class="_ _8"> </span>are<span class="_ _d"> </span>nested</div><div class="t m0 x2f h5 y1a2 ff2 fs3 fc0 sc0 ls0 ws0">and<span class="_ _3"> </span>which<span class="_ _5"> </span>is<span class="_ _5"> </span>the<span class="_ _3"> </span>inner<span class="_ _5"> </span>loop.<span class="_ _3"> </span>Using<span class="_ _5"> </span>this<span class="_ _3"> </span>kno<span class="_ _2"></span>wledge,<span class="_ _5"> </span>the<span class="_ _3"> </span>system<span class="_ _5"> </span>can</div><div class="t m0 x2f h5 y1a3 ff2 fs3 fc0 sc0 ls0 ws0">compile<span class="_ _5"> </span>inner<span class="_ _7"> </span>and<span class="_ _5"> </span>outer<span class="_ _5"> </span>loops<span class="_ _7"> </span>separately<span class="_ _2"></span>,<span class="_ _5"> </span>and<span class="_ _7"> </span>make<span class="_ _5"> </span>the<span class="_ _5"> </span>outer<span class="_ _7"> </span>loop<span class="_ _2"></span>s</div><div class="t m0 x2f h5 y1a4 ff2 fs3 fc0 sc0 ls0 ws0">traces<span class="_ _5"> </span><span class="ffa">call<span class="_ _5"> </span></span>the<span class="_ _3"> </span>inner<span class="_ _5"> </span>loop<span class="_ _b"></span>s<span class="_ _3"> </span>trace<span class="_ _5"> </span>tree.</div><div class="t m0 x34 h5 y1a5 ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _3"> </span>algorithm<span class="_ _3"> </span>for<span class="_ _3"> </span>b<span class="_ _2"></span>uilding<span class="_ _3"> </span>nested<span class="_ _3"> </span>trace<span class="_ _3"> </span>trees<span class="_ _3"> </span>is<span class="_ _5"> </span>as<span class="_ _3"> </span>follows.<span class="_ _3"> </span>W<span class="_ _b"></span>e</div><div class="t m0 x2f h5 y1a6 ff2 fs3 fc0 sc0 ls0 ws0">start<span class="_ _3"> </span>tracing<span class="_ _5"> </span>at<span class="_ _3"> </span>loop<span class="_ _5"> </span>headers<span class="_ _3"> </span>exactly<span class="_ _5"> </span>as<span class="_ _3"> </span>in<span class="_ _5"> </span>the<span class="_ _3"> </span>basic<span class="_ _3"> </span>tracing<span class="_ _5"> </span>system.</div><div class="t m0 x2f h5 y1a7 ff2 fs3 fc0 sc0 ls0 ws0">When<span class="_ _8"> </span>we<span class="_ _8"> </span>exit<span class="_ _6"> </span>a<span class="_ _8"> </span>loop<span class="_ _8"> </span>(detected<span class="_ _8"> </span>by<span class="_ _8"> </span>comparing<span class="_ _8"> </span>the<span class="_ _8"> </span>interpreter<span class="_ _8"> </span>PC</div><div class="t m0 x2f h5 y1a8 ff2 fs3 fc0 sc0 ls0 ws0">with<span class="_ _d"> </span>the<span class="_ _8"> </span>range<span class="_ _d"> </span>gi<span class="_ _2"></span>ven<span class="_ _8"> </span>by<span class="_ _d"> </span>the<span class="_ _8"> </span>loop<span class="_ _d"> </span>edge),<span class="_ _8"> </span>we<span class="_ _d"> </span>stop<span class="_ _d"> </span>the<span class="_ _8"> </span>trace.<span class="_ _d"> </span>The</div><div class="t m0 x2f h5 y1a9 ff2 fs3 fc0 sc0 ls0 ws0">key<span class="_ _6"> </span>step<span class="_ _8"> </span>of<span class="_ _8"> </span>the<span class="_ _8"> </span>algorithm<span class="_ _d"> </span>occurs<span class="_ _6"> </span>when<span class="_ _8"> </span>we<span class="_ _d"> </span>are<span class="_ _6"> </span>recording<span class="_ _8"> </span>a<span class="_ _8"> </span>trace</div><div class="t m0 x2f h5 y1aa ff2 fs3 fc0 sc0 ls0 ws0">for<span class="_ _3"> </span>loop<span class="_ _3"> </span><span class="fff">L</span></div><div class="t m0 x97 h1b y47 ff10 fs4 fc0 sc0 ls0 ws0">R</div><div class="t m0 x4c h5 y1aa ff2 fs3 fc0 sc0 ls0 ws0">(<span class="fff">R<span class="_ _3"> </span></span>for<span class="_ _3"> </span>loop<span class="_ _3"> </span>being<span class="_ _3"> </span>recorded)<span class="_ _3"> </span>and<span class="_ _5"> </span>we<span class="_ _3"> </span>reach<span class="_ _3"> </span>the<span class="_ _3"> </span>header</div><div class="t m0 x2f h5 y1ab ff2 fs3 fc0 sc0 ls0 ws0">of<span class="_ _5"> </span>a<span class="_ _5"> </span>different<span class="_ _5"> </span>loop<span class="_ _5"> </span><span class="fff">L</span></div><div class="t m0 x46 h1b y48 ff10 fs4 fc0 sc0 ls0 ws0">O</div><div class="t m0 x65 h5 y1ab ff2 fs3 fc0 sc0 ls0 ws0">(<span class="fff">O<span class="_ _3"> </span></span>for<span class="_ _5"> </span>other<span class="_ _5"> </span>loop).<span class="_ _5"> </span>Note<span class="_ _5"> </span>that<span class="_ _5"> </span><span class="fff">L</span></div><div class="t m0 x2c h1b y48 ff10 fs4 fc0 sc0 ls0 ws0">O</div><div class="t m0 x98 h5 y1ab ff2 fs3 fc0 sc0 ls0 ws0">must<span class="_ _5"> </span>be<span class="_ _5"> </span>an</div><div class="t m0 x2f h5 y1ac ff2 fs3 fc0 sc0 ls0 ws0">inner<span class="_ _5"> </span>loop<span class="_ _5"> </span>of<span class="_ _3"> </span><span class="fff">L</span></div><div class="t m0 x94 h1b y49 ff10 fs4 fc0 sc0 ls0 ws0">R</div><div class="t m0 x92 h5 y1ac ff2 fs3 fc0 sc0 ls0 ws0">because<span class="_ _5"> </span>we<span class="_ _5"> </span>stop<span class="_ _3"> </span>the<span class="_ _5"> </span>trace<span class="_ _5"> </span>when<span class="_ _5"> </span>we<span class="_ _5"> </span>exit<span class="_ _5"> </span>a<span class="_ _5"> </span>loop.</div><div class="t m0 x36 h4 y1ad ff3 fs2 fc0 sc0 ls0 ws0">•</div><div class="t m0 x37 h5 y174 ff2 fs3 fc0 sc0 ls0 ws0">If<span class="_ _3"> </span><span class="fff">L</span></div><div class="t m0 x52 h1b y132 ff10 fs4 fc0 sc0 ls0 ws0">O</div><div class="t m0 x25 h5 y174 ff2 fs3 fc0 sc0 ls0 ws0">has<span class="_ _3"> </span>a<span class="_ _3"> </span>type-matching<span class="_ _3"> </span>compiled<span class="_ _3"> </span>trace<span class="_ _3"> </span>tree,<span class="_ _3"> </span>we<span class="_ _3"> </span>call<span class="_ _3"> </span><span class="fff">L</span></div><div class="t m0 x10 h1b y132 ff10 fs4 fc0 sc0 ls0 ws0">O</div><div class="t m0 x1c h5 y174 ff2 fs3 fc0 sc0 ls0 ws0">as</div><div class="t m0 x37 h5 y175 ff2 fs3 fc0 sc0 ls0 ws0">a<span class="_ _3"> </span>nested<span class="_ _5"> </span>trace<span class="_ _3"> </span>tree.<span class="_ _5"> </span>If<span class="_ _3"> </span>the<span class="_ _5"> </span>call<span class="_ _3"> </span>succeeds,<span class="_ _5"> </span>then<span class="_ _3"> </span>we<span class="_ _5"> </span>record<span class="_ _3"> </span>the<span class="_ _5"> </span>call</div><div class="t m0 x37 h5 y1ae ff2 fs3 fc0 sc0 ls0 ws0">in<span class="_ _5"> </span>the<span class="_ _3"> </span>trace<span class="_ _5"> </span>for<span class="_ _5"> </span><span class="fff">L</span></div><div class="t m0 x91 h1b y134 ff10 fs4 fc0 sc0 ls0 ws0">R</div><div class="t m0 x65 h5 y1ae ff2 fs3 fc0 sc0 ls0 ws0">.<span class="_ _5"> </span>On<span class="_ _3"> </span>future<span class="_ _5"> </span>ex<span class="_ _2"></span>ecutions,<span class="_ _5"> </span>the<span class="_ _3"> </span>trace<span class="_ _5"> </span>for<span class="_ _5"> </span><span class="fff">L</span></div><div class="t m0 x29 h1b y134 ff10 fs4 fc0 sc0 ls0 ws0">R</div><div class="t m0 x5e h5 y1ae ff2 fs3 fc0 sc0 ls0 ws0">will</div><div class="t m0 x37 h5 y1af ff2 fs3 fc0 sc0 ls0 ws0">call<span class="_ _5"> </span>the<span class="_ _5"> </span>inner<span class="_ _3"> </span>trace<span class="_ _5"> </span>directly<span class="_ _b"></span>.</div><div class="t m0 x36 h4 y1b0 ff3 fs2 fc0 sc0 ls0 ws0">•</div><div class="t m0 x37 h5 y1b1 ff2 fs3 fc0 sc0 ls0 ws0">If<span class="_ _6"> </span><span class="fff">L</span></div><div class="t m0 x52 h1b y1b2 ff10 fs4 fc0 sc0 ls0 ws0">O</div><div class="t m0 x25 h5 y1b1 ff2 fs3 fc0 sc0 ls0 ws0">does<span class="_ _6"> </span>not<span class="_ _3"> </span>have<span class="_ _3"> </span>a<span class="_ _6"> </span>type-matching<span class="_ _3"> </span>compiled<span class="_ _6"> </span>trace<span class="_ _3"> </span>tree<span class="_ _6"> </span>yet,</div><div class="t m0 x37 h5 y1b3 ff2 fs3 fc0 sc0 ls0 ws0">we<span class="_ _8"> </span>hav<span class="_ _2"></span>e<span class="_ _6"> </span>to<span class="_ _8"> </span>obtain<span class="_ _8"> </span>it<span class="_ _8"> </span>before<span class="_ _8"> </span>we<span class="_ _8"> </span>are<span class="_ _8"> </span>able<span class="_ _8"> </span>to<span class="_ _8"> </span>proceed.<span class="_ _8"> </span>In<span class="_ _8"> </span>order</div><div class="t m0 x37 h5 y1b4 ff2 fs3 fc0 sc0 ls0 ws0">to<span class="_ _3"> </span>do<span class="_ _3"> </span>this,<span class="_ _6"> </span>we<span class="_ _3"> </span>simply<span class="_ _3"> </span>abort<span class="_ _6"> </span>recording<span class="_ _3"> </span>the<span class="_ _3"> </span>first<span class="_ _3"> </span>trace.<span class="_ _6"> </span>The<span class="_ _3"> </span>trace</div><div class="t m0 x37 h5 y1b5 ff2 fs3 fc0 sc0 ls0 ws0">monitor<span class="_ _6"> </span>will<span class="_ _6"> </span>see<span class="_ _8"> </span>the<span class="_ _6"> </span>inner<span class="_ _6"> </span>loop<span class="_ _8"> </span>header<span class="_ _2"></span>,<span class="_ _6"> </span>and<span class="_ _6"> </span>will<span class="_ _8"> </span>immediately</div><div class="t m0 x37 h5 y1b6 ff2 fs3 fc0 sc0 ls0 ws0">start<span class="_ _5"> </span>recording<span class="_ _5"> </span>the<span class="_ _3"> </span>inner<span class="_ _5"> </span>loop.</div><div class="t m0 x3 h8 y13a ff2 fs4 fc0 sc0 ls0 ws0">2</div><div class="t m0 x34 h5 y14d ff2 fs3 fc0 sc0 ls0 ws0">If<span class="_ _5"> </span>all<span class="_ _7"> </span>the<span class="_ _5"> </span>loops<span class="_ _7"> </span>in<span class="_ _7"> </span>a<span class="_ _5"> </span>nest<span class="_ _7"> </span>are<span class="_ _5"> </span>type-stable,<span class="_ _7"> </span>then<span class="_ _5"> </span>loop<span class="_ _7"> </span>nesting<span class="_ _5"> </span>creates</div><div class="t m0 x2f h5 y14e ff2 fs3 fc0 sc0 ls0 ws0">no<span class="_ _5"> </span>duplication.<span class="_ _7"> </span>Otherwise,<span class="_ _5"> </span>if<span class="_ _7"> </span>loops<span class="_ _5"> </span>are<span class="_ _7"> </span>nested<span class="_ _5"> </span>to<span class="_ _7"> </span>a<span class="_ _5"> </span>depth<span class="_ _7"> </span><span class="fff">k<span class="_ _4"></span></span>,<span class="_ _5"> </span>and<span class="_ _7"> </span>each</div><div class="t m0 x2f h8 y9a ff2 fs4 fc0 sc0 ls0 ws0">2</div><div class="t m0 x36 h3 y31 ff2 fs2 fc0 sc0 ls0 ws0">Instead<span class="_ _5"> </span>of<span class="_ _3"> </span>aborting<span class="_ _5"> </span>the<span class="_ _5"> </span>outer<span class="_ _3"> </span>recording,<span class="_ _5"> </span>we<span class="_ _5"> </span>could<span class="_ _5"> </span>principally<span class="_ _3"> </span>merely<span class="_ _5"> </span>sus-</div><div class="t m0 x2f h3 y14f ff2 fs2 fc0 sc0 ls0 ws0">pend<span class="_ _3"> </span>the<span class="_ _3"> </span>recording,<span class="_ _3"> </span>but<span class="_ _3"> </span>that<span class="_ _3"> </span>would<span class="_ _3"> </span>require<span class="_ _3"> </span>the<span class="_ _3"> </span>implementation<span class="_ _3"> </span>to<span class="_ _3"> </span>be<span class="_ _3"> </span>able</div><div class="t m0 x2f h3 y33 ff2 fs2 fc0 sc0 ls0 ws0">to<span class="_ _3"> </span>record<span class="_ _3"> </span>se<span class="_ _2"></span>veral<span class="_ _3"> </span>traces<span class="_ _5"> </span>simultaneously<span class="_ _2"></span>,<span class="_ _3"> </span>complicating<span class="_ _3"> </span>the<span class="_ _3"> </span>implementation,</div><div class="t m0 x2f h3 y9d ff2 fs2 fc0 sc0 ls0 ws0">while<span class="_ _5"> </span>sa<span class="_ _2"></span>ving<span class="_ _5"> </span>only<span class="_ _5"> </span>a<span class="_ _7"> </span>few<span class="_ _5"> </span>iterations<span class="_ _7"> </span>in<span class="_ _5"> </span>the<span class="_ _5"> </span>interpreter<span class="_ _2"></span>.</div><div class="c x99 y1b7 wa h1c"><div class="t m0 x9a h16 y17f ff15 fs8 fc0 sc0 ls0 ws0">i<span class="fsd">2</span></div><div class="t m0 x9a h16 y1b8 ff15 fs8 fc0 sc0 ls0 ws0">i<span class="fsd">3</span></div><div class="t m0 x9a h16 y99 ff15 fs8 fc0 sc0 ls0 ws0">i<span class="fsd">1</span></div><div class="t m0 x9a h16 y1b9 ff15 fs8 fc0 sc0 ls0 ws0">i<span class="fsd">6</span></div><div class="t m0 x9a h16 y1ba ff15 fs8 fc0 sc0 ls0 ws0">i<span class="fsd">4</span></div><div class="t m0 x9a h16 yba ff15 fs8 fc0 sc0 ls0 ws0">i<span class="fsd">5</span></div><div class="t m0 x9b h16 y17f ff15 fs8 fc0 sc0 ls0 ws0">t<span class="fsd">2</span></div><div class="t m0 x68 h16 y56 ff15 fs8 fc0 sc0 ls0 ws0">t<span class="fsd">1</span></div><div class="t m0 x9b h16 y1bb ff15 fs8 fc0 sc0 ls0 ws0">t<span class="fsd">4</span></div><div class="t m0 x0 h6 y1bc ff15 fsc fc0 sc0 ls0 ws0">ExitGuard</div><div class="t m0 x9c h6 y104 ff15 fsc fc0 sc0 ls0 ws0">NestedT<span class="_ _2"></span>ree</div></div><div class="t m0 x32 h5 y1bd ff1 fs3 fc0 sc0 ls0 ws0">Figure<span class="_ _5"> </span>8.<span class="_ _1"> </span><span class="ff2">Control<span class="_ _7"> </span>flow<span class="_ _5"> </span>graph<span class="_ _5"> </span>of<span class="_ _7"> </span>a<span class="_ _5"> </span>loop<span class="_ _5"> </span>with<span class="_ _5"> </span>tw<span class="_ _2"></span>o<span class="_ _5"> </span>nested<span class="_ _5"> </span>loops<span class="_ _7"> </span>(left)</span></div><div class="t m0 x32 h5 y1be ff2 fs3 fc0 sc0 ls0 ws0">and<span class="_ _3"> </span>its<span class="_ _6"> </span>nested<span class="_ _3"> </span>trace<span class="_ _3"> </span>tree<span class="_ _3"> </span>configuration<span class="_ _6"> </span>(right).<span class="_ _3"> </span>The<span class="_ _3"> </span>outer<span class="_ _6"> </span>tree<span class="_ _3"> </span>calls</div><div class="t m0 x32 h5 y1bf ff2 fs3 fc0 sc0 ls0 ws0">the<span class="_ _3"> </span>tw<span class="_ _2"></span>o<span class="_ _5"> </span>inner<span class="_ _3"> </span>nested<span class="_ _5"> </span>trace<span class="_ _3"> </span>trees<span class="_ _5"> </span>and<span class="_ _3"> </span>places<span class="_ _5"> </span>guards<span class="_ _3"> </span>at<span class="_ _5"> </span>their<span class="_ _3"> </span>side<span class="_ _5"> </span>exit</div><div class="t m0 x32 h5 y1c0 ff2 fs3 fc0 sc0 ls0 ws0">locations.</div><div class="t m0 x32 h5 y13 ff2 fs3 fc0 sc0 ls0 ws0">loop<span class="_ _5"> </span>is<span class="_ _5"> </span>entered<span class="_ _5"> </span>with<span class="_ _5"> </span><span class="fff">m<span class="_ _5"> </span></span>dif<span class="_ _2"></span>ferent<span class="_ _5"> </span>type<span class="_ _5"> </span>maps<span class="_ _5"> </span>(on<span class="_ _5"> </span>geometric<span class="_ _5"> </span>a<span class="_ _2"></span>v<span class="_ _2"></span>erage),</div><div class="t m0 x32 h7 y1c1 ff2 fs3 fc0 sc0 ls0 ws0">then<span class="_ _3"> </span>we<span class="_ _3"> </span>compile<span class="_ _5"> </span><span class="fff">O<span class="_ _4"></span><span class="ff14">(</span>m</span></div><div class="t m0 x9d h1b y1c2 ff10 fs4 fc0 sc0 ls0 ws0">k</div><div class="t m0 x9e h7 y1c1 ff14 fs3 fc0 sc0 ls0 ws0">)<span class="_ _3"> </span><span class="ff2">copies<span class="_ _3"> </span>of<span class="_ _5"> </span>the<span class="_ _3"> </span>innermost<span class="_ _3"> </span>loop.<span class="_ _5"> </span>As<span class="_ _3"> </span>long<span class="_ _3"> </span>as</span></div><div class="t m0 x32 h5 y1c3 fff fs3 fc0 sc0 ls0 ws0">m<span class="_ _5"> </span><span class="ff2">is<span class="_ _5"> </span>close<span class="_ _3"> </span>to<span class="_ _5"> </span>1,<span class="_ _5"> </span>the<span class="_ _5"> </span>resulting<span class="_ _5"> </span>trace<span class="_ _5"> </span>trees<span class="_ _5"> </span>will<span class="_ _3"> </span>be<span class="_ _5"> </span>tractable.</span></div><div class="t m0 x33 h5 y1c4 ff2 fs3 fc0 sc0 ls0 ws0">An<span class="_ _5"> </span>important<span class="_ _7"> </span>detail<span class="_ _7"> </span>is<span class="_ _5"> </span>that<span class="_ _7"> </span>the<span class="_ _5"> </span>call<span class="_ _7"> </span>to<span class="_ _7"> </span>the<span class="_ _5"> </span>inner<span class="_ _7"> </span>trace<span class="_ _5"> </span>tree<span class="_ _7"> </span>must<span class="_ _7"> </span>act</div><div class="t m0 x32 h5 y1c5 ff2 fs3 fc0 sc0 ls0 ws0">like<span class="_ _5"> </span>a<span class="_ _5"> </span>function<span class="_ _5"> </span>call<span class="_ _5"> </span>site:<span class="_ _5"> </span>it<span class="_ _5"> </span>must<span class="_ _5"> </span>return<span class="_ _5"> </span>to<span class="_ _5"> </span>the<span class="_ _5"> </span>same<span class="_ _5"> </span>point<span class="_ _7"> </span>every<span class="_ _5"> </span>time.</div><div class="t m0 x32 h5 y1c6 ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _3"> </span>goal<span class="_ _3"> </span>of<span class="_ _5"> </span>nesting<span class="_ _3"> </span>is<span class="_ _3"> </span>to<span class="_ _3"> </span>mak<span class="_ _2"></span>e<span class="_ _3"> </span>inner<span class="_ _5"> </span>and<span class="_ _3"> </span>outer<span class="_ _3"> </span>loops<span class="_ _3"> </span>independent;</div><div class="t m0 x32 h5 y1c7 ff2 fs3 fc0 sc0 ls0 ws0">thus<span class="_ _6"> </span>when<span class="_ _6"> </span>the<span class="_ _6"> </span>inner<span class="_ _6"> </span>tree<span class="_ _6"> </span>is<span class="_ _8"> </span>called,<span class="_ _6"> </span>it<span class="_ _6"> </span>must<span class="_ _6"> </span>exit<span class="_ _6"> </span>to<span class="_ _6"> </span>the<span class="_ _6"> </span>same<span class="_ _6"> </span>point</div><div class="t m0 x32 h5 y1c8 ff2 fs3 fc0 sc0 ls0 ws0">in<span class="_ _3"> </span>the<span class="_ _6"> </span>outer<span class="_ _3"> </span>tree<span class="_ _6"> </span>e<span class="_ _2"></span>very<span class="_ _3"> </span>time<span class="_ _3"> </span>with<span class="_ _6"> </span>the<span class="_ _3"> </span>same<span class="_ _3"> </span>type<span class="_ _6"> </span>map.<span class="_ _3"> </span>Because<span class="_ _6"> </span>we</div><div class="t m0 x32 h5 y1c9 ff2 fs3 fc0 sc0 ls0 ws0">cannot<span class="_ _3"> </span>actually<span class="_ _3"> </span>guarantee<span class="_ _6"> </span>this<span class="_ _3"> </span>property<span class="_ _b"></span>,<span class="_ _6"> </span>we<span class="_ _3"> </span>must<span class="_ _3"> </span>guard<span class="_ _3"> </span>on<span class="_ _3"> </span>it<span class="_ _6"> </span>after</div><div class="t m0 x32 h5 y1ca ff2 fs3 fc0 sc0 ls0 ws0">the<span class="_ _8"> </span>call,<span class="_ _8"> </span>and<span class="_ _8"> </span>side<span class="_ _6"> </span>exit<span class="_ _8"> </span>if<span class="_ _8"> </span>the<span class="_ _8"> </span>property<span class="_ _8"> </span>does<span class="_ _8"> </span>not<span class="_ _8"> </span>hold.<span class="_ _8"> </span>A<span class="_ _8"> </span>common</div><div class="t m0 x32 h5 y1cb ff2 fs3 fc0 sc0 ls0 ws0">reason<span class="_ _d"> </span>for<span class="_ _8"> </span>the<span class="_ _d"> </span>inner<span class="_ _d"> </span>tree<span class="_ _8"> </span>not<span class="_ _d"> </span>to<span class="_ _d"> </span>return<span class="_ _d"> </span>to<span class="_ _8"> </span>the<span class="_ _d"> </span>same<span class="_ _d"> </span>point<span class="_ _d"> </span>w<span class="_ _2"></span>ould</div><div class="t m0 x32 h5 y1cc ff2 fs3 fc0 sc0 ls0 ws0">be<span class="_ _8"> </span>if<span class="_ _8"> </span>the<span class="_ _d"> </span>inner<span class="_ _8"> </span>tree<span class="_ _8"> </span>took<span class="_ _8"> </span>a<span class="_ _d"> </span>ne<span class="_ _2"></span>w<span class="_ _8"> </span>side<span class="_ _8"> </span>exit<span class="_ _8"> </span>for<span class="_ _8"> </span>which<span class="_ _d"> </span>it<span class="_ _6"> </span>had<span class="_ _d"> </span>ne<span class="_ _2"></span>ver</div><div class="t m0 x32 h5 y1cd ff2 fs3 fc0 sc0 ls0 ws0">compiled<span class="_ _6"> </span>a<span class="_ _6"> </span>trace.<span class="_ _6"> </span>At<span class="_ _6"> </span>this<span class="_ _6"> </span>point,<span class="_ _6"> </span>the<span class="_ _6"> </span>interpreter<span class="_ _6"> </span>PC<span class="_ _6"> </span>is<span class="_ _6"> </span>in<span class="_ _6"> </span>the<span class="_ _6"> </span>inner</div><div class="t m0 x32 h5 y1ce ff2 fs3 fc0 sc0 ls0 ws0">tree,<span class="_ _3"> </span>so<span class="_ _6"> </span>we<span class="_ _3"> </span>cannot<span class="_ _3"> </span>continue<span class="_ _3"> </span>recording<span class="_ _6"> </span>or<span class="_ _3"> </span>executing<span class="_ _3"> </span>the<span class="_ _3"> </span>outer<span class="_ _3"> </span>tree.</div><div class="t m0 x32 h5 y1cf ff2 fs3 fc0 sc0 ls0 ws0">If<span class="_ _3"> </span>this<span class="_ _3"> </span>happens<span class="_ _3"> </span>during<span class="_ _3"> </span>recording,<span class="_ _6"> </span>we<span class="_ _3"> </span>abort<span class="_ _3"> </span>the<span class="_ _3"> </span>outer<span class="_ _3"> </span>trace,<span class="_ _3"> </span>to<span class="_ _3"> </span>give</div><div class="t m0 x32 h5 y1d0 ff2 fs3 fc0 sc0 ls0 ws0">the<span class="_ _5"> </span>inner<span class="_ _3"> </span>tree<span class="_ _5"> </span>a<span class="_ _5"> </span>chance<span class="_ _5"> </span>to<span class="_ _3"> </span>finish<span class="_ _5"> </span>gro<span class="_ _2"></span>wing.<span class="_ _5"> </span>A<span class="_ _3"> </span>fut<span class="_ _2"></span>ure<span class="_ _5"> </span>execution<span class="_ _5"> </span>of<span class="_ _5"> </span>the</div><div class="t m0 x32 h5 y1d1 ff2 fs3 fc0 sc0 ls0 ws0">outer<span class="_ _5"> </span>tree<span class="_ _5"> </span>would<span class="_ _5"> </span>then<span class="_ _5"> </span>be<span class="_ _3"> </span>able<span class="_ _5"> </span>to<span class="_ _5"> </span>properly<span class="_ _5"> </span>finish<span class="_ _5"> </span>and<span class="_ _5"> </span>record<span class="_ _5"> </span>a<span class="_ _3"> </span>call<span class="_ _5"> </span>to</div><div class="t m0 x32 h5 y1d2 ff2 fs3 fc0 sc0 ls0 ws0">the<span class="_ _5"> </span>inner<span class="_ _5"> </span>tree.<span class="_ _5"> </span>If<span class="_ _5"> </span>an<span class="_ _5"> </span>inner<span class="_ _5"> </span>tree<span class="_ _7"> </span>side<span class="_ _5"> </span>exit<span class="_ _5"> </span>happens<span class="_ _5"> </span>during<span class="_ _5"> </span>e<span class="_ _2"></span>xecution<span class="_ _5"> </span>of</div><div class="t m0 x32 h5 y1d3 ff2 fs3 fc0 sc0 ls0 ws0">a<span class="_ _3"> </span>compiled<span class="_ _3"> </span>trace<span class="_ _3"> </span>for<span class="_ _6"> </span>the<span class="_ _3"> </span>outer<span class="_ _3"> </span>tree,<span class="_ _3"> </span>we<span class="_ _3"> </span>simply<span class="_ _6"> </span>e<span class="_ _2"></span>xit<span class="_ _3"> </span>the<span class="_ _3"> </span>outer<span class="_ _3"> </span>trace</div><div class="t m0 x32 h5 y1d4 ff2 fs3 fc0 sc0 ls0 ws0">and<span class="_ _5"> </span>start<span class="_ _5"> </span>recording<span class="_ _3"> </span>a<span class="_ _5"> </span>ne<span class="_ _2"></span>w<span class="_ _5"> </span>branch<span class="_ _5"> </span>in<span class="_ _5"> </span>the<span class="_ _5"> </span>inner<span class="_ _3"> </span>tree.</div><div class="t m0 x32 hc y22 ff1 fs3 fc0 sc0 ls0 ws0">4.2<span class="_ _9"> </span>Blacklisting<span class="_ _5"> </span>with<span class="_ _5"> </span>Nesting</div><div class="t m0 x32 h5 y1d5 ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _6"> </span>blacklisting<span class="_ _6"> </span>algorithm<span class="_ _6"> </span>needs<span class="_ _8"> </span>modification<span class="_ _6"> </span>to<span class="_ _6"> </span>work<span class="_ _6"> </span>well<span class="_ _8"> </span>with</div><div class="t m0 x32 h5 y1d6 ff2 fs3 fc0 sc0 ls0 ws0">nesting.<span class="_ _6"> </span>The<span class="_ _6"> </span>problem<span class="_ _6"> </span>is<span class="_ _6"> </span>that<span class="_ _6"> </span>outer<span class="_ _8"> </span>loop<span class="_ _6"> </span>traces<span class="_ _6"> </span>often<span class="_ _6"> </span>abort<span class="_ _6"> </span>during</div><div class="t m0 x32 h5 y1d7 ff2 fs3 fc0 sc0 ls0 ws0">startup<span class="_ _5"> </span>(because<span class="_ _3"> </span>the<span class="_ _5"> </span>inner<span class="_ _5"> </span>tree<span class="_ _3"> </span>is<span class="_ _5"> </span>not<span class="_ _3"> </span>a<span class="_ _2"></span>v<span class="_ _2"></span>ailable<span class="_ _5"> </span>or<span class="_ _3"> </span>tak<span class="_ _2"></span>es<span class="_ _5"> </span>a<span class="_ _3"> </span>side<span class="_ _5"> </span>exit),</div><div class="t m0 x32 h5 y1d8 ff2 fs3 fc0 sc0 ls0 ws0">which<span class="_ _6"> </span>would<span class="_ _6"> </span>lead<span class="_ _6"> </span>to<span class="_ _6"> </span>their<span class="_ _8"> </span>being<span class="_ _6"> </span>quickly<span class="_ _6"> </span>blacklisted<span class="_ _6"> </span>by<span class="_ _8"> </span>the<span class="_ _6"> </span>basic</div><div class="t m0 x32 h5 y1d9 ff2 fs3 fc0 sc0 ls0 ws0">algorithm.</div><div class="t m0 x33 h5 y1da ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _3"> </span>k<span class="_ _2"></span>ey<span class="_ _5"> </span>observation<span class="_ _3"> </span>is<span class="_ _5"> </span>that<span class="_ _3"> </span>when<span class="_ _3"> </span>an<span class="_ _5"> </span>outer<span class="_ _3"> </span>trace<span class="_ _3"> </span>aborts<span class="_ _5"> </span>because</div><div class="t m0 x32 h5 y1db ff2 fs3 fc0 sc0 ls0 ws0">the<span class="_ _3"> </span>inner<span class="_ _3"> </span>tree<span class="_ _3"> </span>is<span class="_ _3"> </span>not<span class="_ _3"> </span>ready<span class="_ _b"></span>,<span class="_ _3"> </span>this<span class="_ _3"> </span>is<span class="_ _3"> </span>probably<span class="_ _3"> </span>a<span class="_ _3"> </span>temporary<span class="_ _3"> </span>condition.</div><div class="t m0 x32 h5 y8e ff2 fs3 fc0 sc0 ls0 ws0">Thus,<span class="_ _3"> </span>we<span class="_ _5"> </span>should<span class="_ _3"> </span>not<span class="_ _5"> </span>count<span class="_ _3"> </span>such<span class="_ _3"> </span>aborts<span class="_ _5"> </span>toward<span class="_ _5"> </span>blacklisting<span class="_ _3"> </span>as<span class="_ _5"> </span>long</div><div class="t m0 x32 h5 y8f ff2 fs3 fc0 sc0 ls0 ws0">as<span class="_ _5"> </span>we<span class="_ _5"> </span>are<span class="_ _3"> </span>able<span class="_ _5"> </span>to<span class="_ _5"> </span>b<span class="_ _2"></span>uild<span class="_ _5"> </span>up<span class="_ _5"> </span>more<span class="_ _5"> </span>traces<span class="_ _3"> </span>for<span class="_ _5"> </span>the<span class="_ _5"> </span>inner<span class="_ _5"> </span>tree.</div><div class="t m0 x33 h5 y1dc ff2 fs3 fc0 sc0 ls0 ws0">In<span class="_ _3"> </span>our<span class="_ _6"> </span>implementation,<span class="_ _3"> </span>when<span class="_ _6"> </span>an<span class="_ _3"> </span>outer<span class="_ _3"> </span>tree<span class="_ _6"> </span>aborts<span class="_ _3"> </span>on<span class="_ _6"> </span>the<span class="_ _3"> </span>inner</div><div class="t m0 x32 h5 y1dd ff2 fs3 fc0 sc0 ls0 ws0">tree,<span class="_ _6"> </span>we<span class="_ _6"> </span>increment<span class="_ _6"> </span>the<span class="_ _6"> </span>outer<span class="_ _6"> </span>tree<span class="_ _2"></span>s<span class="_ _3"> </span>blacklist<span class="_ _6"> </span>counter<span class="_ _6"> </span>as<span class="_ _6"> </span>usual<span class="_ _6"> </span>and</div><div class="t m0 x32 h5 y1de ff2 fs3 fc0 sc0 ls0 ws0">back<span class="_ _3"> </span>off<span class="_ _3"> </span>on<span class="_ _3"> </span>compiling<span class="_ _3"> </span>it.<span class="_ _3"> </span>When<span class="_ _3"> </span>the<span class="_ _3"> </span>inner<span class="_ _6"> </span>tree<span class="_ _3"> </span>finishes<span class="_ _3"> </span>a<span class="_ _3"> </span>trace,<span class="_ _3"> </span>we</div><div class="t m0 x32 h5 y1df ff2 fs3 fc0 sc0 ls0 ws0">decrement<span class="_ _3"> </span>the<span class="_ _3"> </span>blacklist<span class="_ _3"> </span>counter<span class="_ _3"> </span>on<span class="_ _3"> </span>the<span class="_ _6"> </span>outer<span class="_ _3"> </span>loop,<span class="_ _3"> </span>“forgi<span class="_ _2"></span>ving”<span class="_ _3"> </span>the</div><div class="t m0 x32 h5 y1e0 ff2 fs3 fc0 sc0 ls0 ws0">outer<span class="_ _5"> </span>loop<span class="_ _5"> </span>for<span class="_ _7"> </span>aborting<span class="_ _5"> </span>pre<span class="_ _2"></span>viously<span class="_ _b"></span>.<span class="_ _5"> </span>W<span class="_ _b"></span>e<span class="_ _5"> </span>also<span class="_ _5"> </span>undo<span class="_ _7"> </span>the<span class="_ _5"> </span>backof<span class="_ _2"></span>f<span class="_ _5"> </span>so<span class="_ _5"> </span>that</div><div class="t m0 x32 h5 y1e1 ff2 fs3 fc0 sc0 ls0 ws0">the<span class="_ _5"> </span>outer<span class="_ _5"> </span>tree<span class="_ _5"> </span>can<span class="_ _5"> </span>start<span class="_ _5"> </span>immediately<span class="_ _5"> </span>trying<span class="_ _3"> </span>to<span class="_ _5"> </span>compile<span class="_ _5"> </span>the<span class="_ _5"> </span>ne<span class="_ _2"></span>xt<span class="_ _5"> </span>time</div><div class="t m0 x32 h5 yad ff2 fs3 fc0 sc0 ls0 ws0">we<span class="_ _5"> </span>reach<span class="_ _5"> </span>it.</div><div class="t m0 x32 h9 y103 ff1 fs1 fc0 sc0 ls0 ws0">5.<span class="_ _a"> </span>T<span class="_ _b"></span>race<span class="_ _3"> </span>T<span class="_ _b"></span>ree<span class="_ _3"> </span>Optimization</div><div class="t m0 x32 h5 y9a ff2 fs3 fc0 sc0 ls0 ws0">This<span class="_ _1"> </span>section<span class="_ _1"> </span>e<span class="_ _2"></span>xplains<span class="_ _1"> </span>ho<span class="_ _2"></span>w<span class="_ _1"> </span>a<span class="_ _d"> </span>recorded<span class="_ _1"> </span>trace<span class="_ _1"> </span>is<span class="_ _1"> </span>translated<span class="_ _1"> </span>to<span class="_ _d"> </span>an</div><div class="t m0 x32 h5 y9b ff2 fs3 fc0 sc0 ls0 ws0">optimized<span class="_ _6"> </span>machine<span class="_ _6"> </span>code<span class="_ _6"> </span>trace.<span class="_ _6"> </span>The<span class="_ _6"> </span>trace<span class="_ _6"> </span>compilation<span class="_ _8"> </span>subsystem,</div><div class="t m0 x32 h5 y9c ff2 fse fc0 sc0 ls0 ws0">NA<span class="_ _4"></span>N<span class="_ _4"></span>O<span class="_ _4"></span>J<span class="_ _4"></span>I<span class="_ _4"></span>T<span class="fs3">,<span class="_ _1"> </span>is<span class="_ _d"> </span>separate<span class="_ _1"> </span>from<span class="_ _d"> </span>the<span class="_ _1"> </span>VM<span class="_ _d"> </span>and<span class="_ _1"> </span>can<span class="_ _1"> </span>be<span class="_ _d"> </span>used<span class="_ _1"> </span>for<span class="_ _d"> </span>other</span></div><div class="t m0 x32 h5 y9d ff2 fs3 fc0 sc0 ls0 ws0">applications.</div></div><div class="pi" data-data='{"ctm":[1.673203,0.000000,0.000000,1.673203,0.000000,0.000000]}'></div></div></div>