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

2 lines
46 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="pfd" class="pf" data-page-no="d"><div class="pc pcd"><img class="bi x2f ye0 w27 h1e" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAesAAAHBCAIAAADGpgSmAAAACXBIWXMAABYlAAAWJQFJUiTwAAAYsUlEQVR42u3dzWsb6QEHYEn+SFIpIem23jX0EtIc9pRb/wmdfAm9yQeXLZhtmxBwqXILISUsJKyzsAtt6amnBZ/UQ/+XkkAPLssSb/whWV9WD6KuKlmyrNHHOzPPc7I9klfvO9qf34xmfpM9PDz829/+lgEgbrKHh4c3b940EQCxkzMFABIcAAkOgAQHkOAASHAAJDiABAdAggMwR8umYIGazeZf/vKX7tefffZZYga1srJiLMZiLHMYizX4Iq2srHz22WeJye6u879JxmIsxjLrsehFCcI333zz61//OtKOzGY7nY6ZhHgpFApHR0cTP91RlFCcnJx0v8jn82dnZ5lMJpfLVSqV3scUi8XXr1/fv39/8Onb29vv3r0zjRAvx8fHUZ7uKErM7O7uvn37dvDnjx8/NjmQNhI8Zp4+ffrq1avBEF9bWzM5IMEJ2tra2rAQByQ4QhyQ4ERQq9WEOCDBYxnfpVLJShyQ4PFTKpXK5fKlDxPikHKu6AlC7xU9q6urjUYjk8msrKw0m83eh127dq1er1/4G86fBcTI8vJy3//m1uCx1Pmver3e/aLRaHT+3+npaWeI82ct3Ndff91JCmMxlll78+ZNpD8AonOBeputAKzB4ySRzVbA/A7CmIJAdLtQEuC818VYjCWmY8lms9lstvf/zdPT094H/OhHP+r99sOHDxd+QNVqtS79dOr777+P9FJ9khmC6N2EwHysra199913U/yFUVpFrcFDcd5NCAS1xr+wJfTevXuPHj26e/du99uNjY0L/6f+xz/+MdOX6jg4wJUFcimGBAcYali/RSDX00lwgKHxPaLf4jzEJThAiPE9ut+iG+ISHCDE+H7w4MHoRy725ioSHKDfiPiOUmMydc4HD4LzwSEcfT1xS0tL7Xb7/Nvl5eVCofDDDz/0/qTVak3239JslRBah4zFWAIZS19PXKvV6v222WweHBz0/USzVRpptgKisAZfJM1WgAQHSCOfZAbBJ5mQWpqtkkCzFYwpn89XKpVuvdQ///nPNE+FoyhAXC32ekgJDjC5xV4PKcEBkOAAEhwACQ7AbDmbMBT5fN4kwDhWV1eLxeK1a9eKxaI1OEHQOmQsxjKmL7/8stPpnJ6eJmO/SHAAR1GYL92EgDV4XOkmBKLQbBUEzVaQWlGarazBQ9Fttjo7O8tkMpX/ymQy9+7di3gXDyCpJHjonj59+urVK/MASPD4WVtbU8AGSPAYh7hJACQ4gARnNmq1mkkAJHgslUolkwCMyTWZocjn8ysrK99++21vX8/t27e7X+dyue6JhgDW4MHpdDqNRqOvr+fg4KD7Rbvd1qBkLMaSyLFIcABHUZgvzVaANXhcabYCotBsFQTNVpBOy8vLzWZz8qebwUB0m61GyOfzvaej5HK5bvXVhYrF4r179x49enT37t2+Tfv7+1tbWyYcQtBqtaI83VGUxOpWYr19+7bv5+vr6yYHkkGCx9I4l252K7EuDHFAgrOw+B7z0k0hDhKc4OK7XC6P+XghDhKcsOL7wYMH4z9LiIMEZ/EmiG8hDhKcIEwW330hbhohMVzRE4Rxrujpqycc3VZ46dbMf++qDCzQrVu3Pnz4YA0ee5d2mPXVE45uK7x06+zKDnXgGYuxjO/ly5dRcsM1mYuk2QqIwhp8kTRbAVE4Dh4EzVaQTpqtEuLSZivm4Lw+bHRx2LSc306P1NJsBZBSEhxAggMgwQGQ4DCJcerXQYJDiPE9Zv06SHAIy5Xq12GxXNETBFf0BGJpaandbvd+MVPXrl2r1+umPc0KhcLR0ZE1eOxpHQpBq9Xq/WLWYzk9PbVfUj6WL774IkpuuCZzkTRbAVFYgy+SZisgCsfBgzCL4+C3bt06PDxM9rytrq42Gg3vH+JLs1VCDDZbnbcs9apWqw8fPqxUKp1OZ/SmarVaKBRmUc9ULBZfv359//79wU1bW1s7Oztz2/Tb3/7297///cbGxt7enrcQcaTZKkVqtdrm5ubz588H43vEplnY3d298KbJz549m+emv/71r94VpJkEj1N8D7tX/YhNM9K9afJgsK6vr5fL5WGbRjxrsk2ff/65NwYSHPF9Ned3vh8M1nlu+uijj7w3kOAkML5PT0/TEOIgwUlafNdqtSdPnqRkJQ4SnETFd6lU2t7ensMrFOIgwbnYsIyuVquXbvr000/n8yKFOCyKK3qCcOEVPSsrK1FO9c/lcrlcLuLZpheaT+vTWG/fbDabzZ6dnWWz2fmcRgnTpdkqIQYrbxqNRpTGnHa73Ww2Z1r/tPDWobOzs3a73f1Cg5KxaLZirjRbAVFYgy+SZisgCsfBg+AOD5BON27cqFarEz/dUZRQnDdbDRZa5XK5EQVVo3um9vf3zS0EK+JttR1FSYIR3U8mBxJMgifhT/SI7icTCBKchcV3qVS69GGucwEJTojxXS6Xx3mwEAcJTnDxPX5nrBAHCU4s41uIgwQnCFHu2CDEIT1c0ROE3it6BnujRldc5fP5wbskA7EQ8Yoea/BQjOiNGl1xdXx8rHXIWIwlpl69ehUlN1yTuUiarYAorMEXSbMVEIXj4EHQbAXppNkqIUZ8GtnXddVXdHVhs1WxWDSlED7NVgxttgKSTYIngRPAQYIT139zuYoHJDgxiO9hVYVCHCQ4ocf3iKpCIQ4SnKDje3RZynmImzGQ4IRi/K6rboibMUgDV/QEYfQVPblcrvd88L7qq8EmLCAuNFslxIjum3a73fttX/XVYBOW1iFjMRbNVsycZisgCmvwRdJsBUThOHgQNFtBanU6nYmf6yhKKNxnB1Iin89nMplKpRK9gc5RFIC4kuAAEhwACQ6ABAeQ4ABIcACmxfngoeieIgokf+Gcy2UymWKxmM/nI14IYg0eCq1DxmIsKRlLu93u1tUdHx9//fXX1uBxpdkKsAaPK81WQBSarYKg2QqmvDj9//uiBKtQKBwdHU38dEdRQqHZCkbL5/PdUO50OtlstvvDarX68OHDSqXS1/BXrVYLhUKlUslkMt0CqY2NjVm/wr29vas+5fj4ONIfKm8LIKZqtdrm5ubz588HC1pPT09T8U8NbwIgpvE97A7gtVrtyZMnEhwgfvFdKpW2t7fTMA+OgwPxi+/Nzc0R8V0ul+/fv28NDhC/+B7cJMEBFh/fpVLpD3/4g/iW4EDMDMvoarWawvjOuKInEK7ogcvXm1e5SOfWrVvtdrt7mUU+n280Gs1mM8BBLS8vR3lh1uCh0DpkLMZyaSHU+GP58OHD8fFx9+vj4+NGoxHmoN68eRPpD4DoXCDNVkCkf5eYggXSbAVE4Th4EBwHh3TSbJUQEzRbnRf99BpW9JP5/66f0BSLxdevX194FcbW1tbOzs5CNhWLxY2NjQnqimBMmq34nxFFP91NIb/43d3dt2/fDv782bNnIWyCAEnwRMX36KaIcrkc8ut/+vTpq1evBtNzfX09hE0gwVlkfAd+scPa2tqw9AxkE0hwxHdsQtxbCwmO+I5riHt3IcER33ENcW8wJDgzlNSiHwe+YSyHh4cdAuismGDfra6uXvUp169fD/N9ePv27QBf1crKSiaTOb+pLkzd8vJylOiwBg/FBDuvXq9f9Sm1Wi3MBqWDg4MA/7Lu7u52Op2zszPNVsai2Yp+mq2AKKzBF/yPdM1WgAQHSB3dhEHQTQipNdhiND7HwUMxupuwr4Ywl8uFWTHIdBWLxXv37j169Oju3bt9m/b391+8eDH+pk6nk81mr/qshWza2tqy68fkKAoELfDCr1lsstMleJLVajWTkB7hF365kEqCc4X4LpVK5kGIC3EkeCzjO/Cab4S4EJfgDI3vmFadsNgQf/funRCX4CyM+MZKnH6arWLRbLW0tNT7bT6f99ZNgzALv5gizVYJMXo/tVqt3m+Pj4+1DqVhLFMs/LJfEtlsJcEBYruENwULpJsQsAaPK92EQBSarYKg2QpSS7NVEoxutrqqviaszKT3RB7ctNhSrSk2PUXZVCwWNzY2xnnBe3t73tvMjqMoqTCt+A7BPCuWyuWyk5SR4IjvqXGlCUhw8R3L+BbiIMHF9+SbhDhIcGIZ30EV2wpxkOCJNSyIq9VqlE0OpwhxwuF88CBM/Xzw1dXVRqMxi5d67dq1er2+qInK5/PTPe1yMktLS+122/uWqYhyPrg1eEB7cYrq9fqMinhOT08X2Do050qvYWPpKxrTBmUss+slleAAyeSazEXSbAVYg8eVZisgCp9kBkGzFaTTnTt33r9/P/HTHUUJRQinWABz071X4sHBQZRf4igKQFxJcAAJDoAEB0CCA0hwACQ4ANPifPBQdE8OBdKyfM7lMplMoVCwBk8CvXHGYiypGku73W632y9fvrQGjyvNVoA1eFxptgKi0GwVBM1WkE7Ly8vNZnPyp5vBQJycnOTz+bOzs0wmk8vlKpVKJpMpFouvX7++f/9+9zHFYtFEQZK0Wq0oT3cUJXS7u7turQtI8Fhyf3RAgsfV2tqaEAckeOxD3FQAEjxotVptWIibHECCBx3fpVJp2Erc/AASPFylUqlcLpsHYByu6AlC94qe1dXVRqORyWRyuVz3xPClpaV2u/2/vZXNZjKZTqdjxiAZCoXC0dGRNXjsdTqder1+XnnT/aLVavVW4ZydnZ2dnWkdMhZjScxYvvjiiyi54ZrMRdJsBURhDb5Imq2AKBwHD0L0Zqtbt24dHh6aSYgXzVYJcXJyMmzTeeNVr2q1+vDhw0ql0v1gs1qtFgqFbh/WhfpKsnptbW3t7Oz87ne/sxdgzjRbpVGtVtvc3Hz+/PmVzksZVpL17Nmz3d1dswqxI8FjGd/d08YfPHhwpScO61dZX193wSdIcMKN78zIkiwXfIIEZ2HxfXp6GjHEAQnOAuK7Vqs9efIk+kockODMO75LpdL29vb4v02IgwRnfobFd7Va7W769NNPr/QLhTgkgCt6gjD6ip7zxqtRf4pzuVwuN+Lc0nw+P+KU84zaLFgEzVYJMaL75rzxaoR2u91sNkc84Pj4ePRvmFZtlgYlYzEWzVapoNkKiMIafJE0WwFROA4ehOjNVkAcabZKiN6PGUdXWWWz2b4Gqwtbq4rFolmFwGm2SoVLq6yGtVYBCSbB4xHfl3ahOLkbJDixjO+MK3RAghPT+BbiIMGJcXwLcZDgxDi++0LcHIIEZzFGVFn1/WTwZNJuiJtDSDxX9ASh74qelZWVESf5Z7PZ3nMKl5eXC4XCDz/8MPiwjKYqCJtmq4ToLbtpNBqjK6h6v202mwcHB7NrqtKgZCzGotmKC2i2AqKwBl8kzVZAFI6DB0GzFaTTjRs3Bk9PGJ+jKKEYfQOdXqN7rwY/urzqplwu19ecNaZuwdbPf/7z7oeovba2tnZ2dvq6t8bZtL+/771BgtVqtShPdxQlIW+CYb1Xk22a2O7u7rt37wZ//uzZs2HdW6M32bkgwRMe36NvY3/VTVEMuyJ0fX19sk32L0hw8X2FTVFez9raWrlcvjCOR1zxrwwAJLj4ns6miK9qsqQW4iDBxfcUNkV/bUIcJDgLiO9pHRYX4iDBudiI3qvpbhLiEDJX9AThSlf0jO69im5paandbk/wxHw+P/5Z7eO/mG67izcJiRTxih5r8FCMX4UzuvcqularNdkTj4+Pp9461Gq1FtLPpQ3KWOYjYpW/azIXSbMVEIU1+CJptgKicBw8CJqtIJ00WyVE9zPAYa1VhUJhsG2q2yR1YSdUsVg0pRA+zVbJ38Gbm5vDtg7rhALSQIKHHt+jr5N06jRIcIKO7xEX2rj+BSQ4sYxvIQ4SnBjHtxAHCU6M41uIgwQnFBOXTAlxSBtX9ATh/IqeYa1SF/58RJOUQiiIBc1WCTG6VerCn3ebpEIrhNKgZCzGotkqFTRbAVFYgy+SZisgCsfBg5DOZquJbyUBiaHZKiF6P5Mc1m/18OHDv//974MVV7Mzojxra2trZ2dncFOn0/nVr3514aa+Zx0dHf3yl7/c2NjY29vzBiCdNFulZTdvbm4+f/58/v/pYeVZz549m+4mQIInM75ncSfiMQ07x3x9fX26mwAJLr6nbOq3nD/f9K9//cv+BQkuvmMZ4n/+85/tYpDg4juWIf7555/byyDBxXcsQ/yjjz6yo0GCJ1Bo8T1+Ur979278ZwGRHB4edgig56F3p6yurg7bX9lsdp5vj9u3b8/uly8tLS0vL89/UBCOGzduRIkOa/BQ9O6Ver0+bIfNua/q4OBgdq1DrVar2WzOf1DaoIxFsxVToNkKiMIafJE0WwFRaLYKQjqbrYBCoXB0dDTx0x1FCciwNqtKpdK9204ulxtda3WlIqpisWjOYbGOj4+jPN1RlHCdt1ld6WZpKqUgPSR4uPE92SnhKqVAghPL+M5MenkkIMFZcHwLcZDghBjfV7qXxzghbrZBgjOn+C6VStNdiZtwkOBMzbD4rlar3U1X/YWjQ9yEQ+xptgqk52FlZeXSnZXP5yM+oNfS0pJKKVis5eVlzVZJ0Gg0Lt1bx8fHER/QVyw1i0opDUrGYizje/PmTaQ/AKJzgTRbAVFYgy+SZivAGjwJBktRYiqfzxuLsRjLJWvnXK5er7fb7aWlpSi/RzdhEHQTQjrduXPn/fv31uCxd3JyYhIgDbr/huhWjUasCHUcHCCuJDiABAdAggMgwQFCdKWqUQkOEJCrVo0O42zCUFyplAqIr1wu9+23316/fr1YLN6+fdsaPAm0DhmLsaRkLO12u9Pp1Gq1Tqfzxz/+0Ro8rjRbAdbgcaXZCpDgAGmk2SoImq0gtTqdzsTPdRw8FElqthos/xx9E+d8Pl+pVNKwl4vF4r179x49enT37t2+Tfv7+y9evJjdpk6nc35TvYl/4dbW1sbGxugx7u3t+d95bhxFYeZGx/e0ToyNi2H3nl5fXw9/kzezBEd8929K1YSsra0Ni8jwNyHBEd+XbBLis9j07t07IS7BQXxbiSPBEd9pje+FxHG5XBbiEhzGMiyjq9Wq+LYSZ1qcDx6EhJ0Pvrq62mg0xn/8nTt3Dg4O0rCjl5aW2u2210+vKOeDW4MHtBcT0zpUr9ev9JT379+npEGp1WrFeiwLfP0JbulyFAUgjVyTuUi6CQFr8LjSTQhE4ZPMIGi2gtTSbJUEJycnvYVQuVyut+xpsBGpWCyaNEg5R1Fiw2m5gASPK9dWABI8Bmq1mhAHJHgs43tEZfZ5iJsoQIKHGN+jK7O7IW6uAAkeljFbn9bW1swV4HzwIHTPB++tDbp27Vq9Xj9/QN+3mUwml8v13YsSiCPNVgnZi721Qaenp731N33fdjqddrudkjYoYzEWzVYSHCBpXJO5SJqtAGvwuNJsBUThk8wgaLaC1NJslQQnJycm4ap6u8C6JrjDcl+JWCAGu8zO7e/vv3jx4kqbisXixsbGjF7q3t6et+KiOIpCckwQ3yEb1qCwvr4+wSYkOCQtvodV0ITA3eWR4IjvSzaFPC4hjgRHfI/aFPjohDgSHPE97iYhjgSHORkWxNVqdYJNSQ1x7xMJDiEaFsQPHz6cYFMsQnyCTd4nSeWKniC4omfCBcg0ChrDbHmc7qua6RjVZEZx69atDx8+WIPHnt64CUyloHHEL1lgB950uyfb7fbsxjL/mswkdRO+fPnSGjyuNFsBkZqRDg8PO+g7NhZjMZYYjsVRFIDYfhRkCgBiynFwAGtwACQ4ABIcQIIDIMEBkOAAEhwACQ6ABAdAggNIcAAkOAASHECCAyDBAZDgAEhwAAkOgAQHQIIDSHAAJDgAEhwACQ4gwQGQ4ABIcAAJDoAEB0CCAyDBASQ4ABIcAAkOIMEBkOAASHAAJDiABAdAggOQzgTPDlhfX0/GQPL5vH0x5xf8ySefmHAjiqPl+L70k5OT3m9jF3znzs7Oul80m83Hjx9/9dVXsRtCpVLp/bZYLAb+gn/xi19sb2//5Cc/icsL7rOxsdH77d7eXsKC6d///rd0TvIaPHmazWa5XN7Z2TEVc/D48eM//elP33//valAgjOF+H78+PFvfvObn/3sZ2ZjDm7evLm9vf3VV18JcSQ401l9i+85h7iVOBKcKfyL3up7sStxU0FMZQ8PD2/evBm7172+vt73WcfHH38cx08/Pv744++++y7WAxncF3fu3Hn//n2wL/jHP/7xwcFB709++tOf9u2FkF2/fr1er/f+5JNPPtnf349xDGWzfT+J+4gkOACXcBQFQIIDIMEBkOAAEhwACQ6ABAeQ4ABIcAAkOAASHECCAyDBAZDgABIcAAkOgAQHQIIDSHAAJDgAEhwgzZYzmcw333xjIgBiJ9vpdMwCQBw5igIgwQGQ4ABIcAAJDoAEB0CCA0hwACQ4ABIcAAkOIMEBkOAASHAACQ6ABAdAggMgwQEkOAASHIBpWM5kMtls1kQABGWc29D/B0QoTp32MsqIAAAAAElFTkSuQmCC"/><div class="c x2f y253 wb h24"><div class="t m0 x40 he y17e ff18 fsf fc0 sc0 ls0 ws0">!&quot;#<span class="_ _24"> </span>$!&quot;#<span class="_ _2d"> </span>%!&quot;#<span class="_ _10"> </span>&amp;!&quot;#<span class="_ _10"> </span>&apos;!&quot;#<span class="_ _4a"> </span>(!!&quot;#</div></div><div class="c x30 y6c w28 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">)*+,-./#0$1$23#</div></div><div class="c x52 y1c0 wd h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">)*+45678#0$1923#</div></div><div class="c x0 y255 w19 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">)*+6:;&lt;6:,/#0(1$23#</div></div><div class="c x34 y29d w29 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">:,,/==+.&gt;?:6;+&lt;6//=#0!1923#</div></div><div class="c xb9 y1be w2a h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">:,,/==+@:??A-,8#0$1$23#</div></div><div class="c x9c y256 w11 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">:,,/==+?.5*;#0%1$23#</div></div><div class="c x9c yc w12 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">:,,/==+?=&gt;/B/#0)1!23#</div></div><div class="c x6d y1eb w2b h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">.&gt;&lt;57=+).&gt;&lt;+.&gt;&lt;=+&gt;?+.;&lt;/#0$C1C23#</div></div><div class="c x37 y29e w14 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">.&gt;&lt;57=+.&gt;&lt;=+&gt;?+.;&lt;/#0&apos;1D23#</div></div><div class="c x9b y110 w1c h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">.&gt;&lt;57=+.&gt;&lt;E&gt;=/+:?*#0$C1$23#</div></div><div class="c x18 y9 w2c h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">.&gt;&lt;57=+?=&gt;/B/+.&gt;&lt;=#0$1D23#</div></div><div class="c xba y259 w2d h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">,5?&lt;65FG5E+6<span class="_ _2"></span>/,-6=&gt;B/#0(1!23#</div></div><div class="c x52 y29f w18 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">,6;7&lt;5+:/=#0(1&amp;23#</div></div><div class="c x0 y2a0 w19 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">,6;7&lt;5+4*C#0$1)23#</div></div><div class="c xbb yd7 w1b h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">,6;7&lt;5+=8:(#0C1923#</div></div><div class="c x18 y152 w16 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">*:&lt;/+@564:&lt;<span class="_ _2"></span>+&lt;5H/#0(1(23#</div></div><div class="c x37 y2a1 w14 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">*:&lt;/+@564:&lt;<span class="_ _2"></span>+27:6.#0(1!23#</div></div><div class="c xbb yd5 w2e h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">4:&lt;8+,56*&gt;,#0%1923#</div></div><div class="c x37 y2a2 w14 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">4:&lt;8+7:6I:F+=-4=#0C1923#</div></div><div class="c x9b y2a3 w20 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">4:&lt;8+=7/,&lt;6:F+?564#0D1(23#</div></div><div class="c x0 y2a4 we h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">6/J/27+*?:#0%1$23#</div></div><div class="c x9c y2a5 w2f h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">=&lt;6&gt;?J+.:=/&amp;%#0$1C23#</div></div><div class="c x0 y2a6 w30 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">=&lt;6&gt;?J+@:=&lt;:#0(1C23#</div></div><div class="c xbc y2a7 w31 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">=&lt;6&gt;?J+&lt;:J,F5-*#0(1(23#</div></div><div class="c x34 y2a8 wf h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">=&lt;6&gt;?J+-?7:,A+,5*/#0(1$23#</div></div><div class="c x66 y2a9 w20 h6"><div class="t m0 xac h16 y254 ff18 fs7 fc0 sc0 ls0 ws0">=&lt;6&gt;?J+B:F&gt;*:&lt;/+&gt;?7-&lt;#0(1923#</div></div><div class="c x30 y2aa w21 h5"><div class="t m0 xb5 he y2ab ff18 fsf fc0 sc0 ls0 ws0">K?&lt;/676/&lt;#</div></div><div class="c xbd y2aa w25 h5"><div class="t m0 xb5 he y2ab ff18 fsf fc0 sc0 ls0 ws0">L5?&gt;&lt;56#</div></div><div class="c xbe y2aa w32 h5"><div class="t m0 xb5 he y2ab ff18 fsf fc0 sc0 ls0 ws0">M/,56*#</div></div><div class="c xbf y2aa w25 h5"><div class="t m0 xb5 he y2ab ff18 fsf fc0 sc0 ls0 ws0">N547&gt;F/#</div></div><div class="c xf y2aa w33 h5"><div class="t m0 xb5 he y2ab ff18 fsf fc0 sc0 ls0 ws0">N:FF#O<span class="_ _2"></span>6:,/#</div></div><div class="c xc0 y2aa w34 h5"><div class="t m0 xb5 he y2ab ff18 fsf fc0 sc0 ls0 ws0">M-?#O<span class="_ _2"></span>6:,/#</div></div><div class="t m0 x2f h5 ye1 ff1 fs3 fc0 sc0 ls0 ws0">Figure<span class="_ _5"> </span>12.<span class="_ _1"> </span>Fraction<span class="_ _3"> </span>of<span class="_ _3"> </span>time<span class="_ _5"> </span>spent<span class="_ _3"> </span>on<span class="_ _3"> </span>major<span class="_ _5"> </span>VM<span class="_ _3"> </span>activities.<span class="_ _5"> </span><span class="ff2">The</span></div><div class="t m0 x2f h5 ye2 ff2 fs3 fc0 sc0 ls0 ws0">speedup<span class="_ _6"> </span>vs.<span class="_ _6"> </span>interpreter<span class="_ _3"> </span>is<span class="_ _6"> </span>shown<span class="_ _3"> </span>in<span class="_ _6"> </span>parentheses<span class="_ _6"> </span>next<span class="_ _3"> </span>to<span class="_ _6"> </span>each<span class="_ _6"> </span>test.</div><div class="t m0 x2f h5 ye3 ff2 fs3 fc0 sc0 ls0 ws0">Most<span class="_ _3"> </span>programs<span class="_ _5"> </span>where<span class="_ _3"> </span>the<span class="_ _5"> </span>VM<span class="_ _3"> </span>spends<span class="_ _5"> </span>the<span class="_ _3"> </span>majority<span class="_ _5"> </span>of<span class="_ _3"> </span>its<span class="_ _5"> </span>time<span class="_ _3"> </span>run-</div><div class="t m0 x2f h5 ye4 ff2 fs3 fc0 sc0 ls0 ws0">ning<span class="_ _5"> </span>native<span class="_ _5"> </span>code<span class="_ _3"> </span>ha<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _5"> </span>a<span class="_ _3"> </span>good<span class="_ _5"> </span>speedup.<span class="_ _3"> </span>Recording<span class="_ _5"> </span>and<span class="_ _5"> </span>compilation</div><div class="t m0 x2f h5 ye5 ff2 fs3 fc0 sc0 ls0 ws0">costs<span class="_ _3"> </span>can<span class="_ _5"> </span>be<span class="_ _3"> </span>substantial;<span class="_ _5"> </span>speeding<span class="_ _3"> </span>up<span class="_ _3"> </span>those<span class="_ _5"> </span>parts<span class="_ _3"> </span>of<span class="_ _5"> </span>the<span class="_ _3"> </span>implemen-</div><div class="t m0 x2f h5 ye6 ff2 fs3 fc0 sc0 ls0 ws0">tation<span class="_ _5"> </span>would<span class="_ _5"> </span>improve<span class="_ _5"> </span>SunSpider<span class="_ _5"> </span>performance.</div><div class="t m0 x2f h5 y11f ff2 fs3 fc0 sc0 ls0 ws0">inner<span class="_ _5"> </span>loops<span class="_ _3"> </span>become<span class="_ _5"> </span>hot<span class="_ _3"> </span>first),<span class="_ _5"> </span>leading<span class="_ _5"> </span>to<span class="_ _3"> </span>much<span class="_ _5"> </span>greater<span class="_ _5"> </span>tail<span class="_ _3"> </span>duplica-</div><div class="t m0 x2f h5 y120 ff2 fs3 fc0 sc0 ls0 ws0">tion.</div><div class="t m0 x34 h5 y121 ff2 fs3 fc0 sc0 ls0 ws0">YETI,<span class="_ _8"> </span>from<span class="_ _8"> </span>Zaleski<span class="_ _8"> </span>et<span class="_ _d"> </span>al.<span class="_ _8"> </span>(19)<span class="_ _8"> </span>applied<span class="_ _8"> </span>Dynamo-style<span class="_ _8"> </span>tracing</div><div class="t m0 x2f h5 y122 ff2 fs3 fc0 sc0 ls0 ws0">to<span class="_ _1"> </span>Ja<span class="_ _2"></span>v<span class="_ _2"></span>a<span class="_ _d"> </span>in<span class="_ _1"> </span>order<span class="_ _d"> </span>to<span class="_ _1"> </span>achie<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _d"> </span>inlining,<span class="_ _1"> </span>indirect<span class="_ _d"> </span>jump<span class="_ _1"> </span>elimination,</div><div class="t m0 x2f h5 y123 ff2 fs3 fc0 sc0 ls0 ws0">and<span class="_ _3"> </span>other<span class="_ _3"> </span>optimizations.<span class="_ _5"> </span>Their<span class="_ _3"> </span>primary<span class="_ _3"> </span>focus<span class="_ _3"> </span>w<span class="_ _2"></span>as<span class="_ _3"> </span>on<span class="_ _5"> </span>designing<span class="_ _3"> </span>an</div><div class="t m0 x2f h5 y124 ff2 fs3 fc0 sc0 ls0 ws0">interpreter<span class="_ _5"> </span>that<span class="_ _5"> </span>could<span class="_ _5"> </span>easily<span class="_ _5"> </span>be<span class="_ _5"> </span>gradually<span class="_ _5"> </span>re-engineered<span class="_ _5"> </span>as<span class="_ _5"> </span>a<span class="_ _5"> </span>tracing</div><div class="t m0 x2f h5 y125 ff2 fs3 fc0 sc0 ls0 ws0">VM.</div><div class="t m0 x34 h5 y126 ff2 fs3 fc0 sc0 ls0 ws0">Suganuma<span class="_ _7"> </span>et<span class="_ _5"> </span>al.<span class="_ _7"> </span>(18)<span class="_ _7"> </span>described<span class="_ _5"> </span>re<span class="_ _2"></span>gion-based<span class="_ _7"> </span>compilation<span class="_ _7"> </span>(RBC),</div><div class="t m0 x2f h5 y127 ff2 fs3 fc0 sc0 ls0 ws0">a<span class="_ _3"> </span>relativ<span class="_ _2"></span>e<span class="_ _3"> </span>of<span class="_ _3"> </span>tracing.<span class="_ _3"> </span>A<span class="_ _3"> </span>region<span class="_ _3"> </span>is<span class="_ _3"> </span>an<span class="_ _3"> </span>subprogram<span class="_ _3"> </span>worth<span class="_ _3"> </span>optimizing</div><div class="t m0 x2f h5 y128 ff2 fs3 fc0 sc0 ls0 ws0">that<span class="_ _5"> </span>can<span class="_ _5"> </span>include<span class="_ _5"> </span>subsets<span class="_ _5"> </span>of<span class="_ _5"> </span>any<span class="_ _5"> </span>number<span class="_ _5"> </span>of<span class="_ _5"> </span>methods.<span class="_ _5"> </span>Thus,<span class="_ _5"> </span>the<span class="_ _5"> </span>com-</div><div class="t m0 x2f h5 y129 ff2 fs3 fc0 sc0 ls0 ws0">piler<span class="_ _3"> </span>has<span class="_ _3"> </span>more<span class="_ _3"> </span>fle<span class="_ _2"></span>xibility<span class="_ _3"> </span>and<span class="_ _3"> </span>can<span class="_ _5"> </span>potentially<span class="_ _3"> </span>generate<span class="_ _3"> </span>better<span class="_ _3"> </span>code,</div><div class="t m0 x2f h5 y12a ff2 fs3 fc0 sc0 ls0 ws0">but<span class="_ _7"> </span>the<span class="_ _5"> </span>profiling<span class="_ _7"> </span>and<span class="_ _7"> </span>compilation<span class="_ _5"> </span>systems<span class="_ _7"> </span>are<span class="_ _5"> </span>correspondingly<span class="_ _7"> </span>more</div><div class="t m0 x2f h5 y12b ff2 fs3 fc0 sc0 ls0 ws0">complex.</div><div class="t m0 x34 h5 y12c ff1 fs3 fc0 sc0 ls0 ws0">T<span class="_ _b"></span>ype<span class="_ _1"> </span>specialization<span class="_ _1"> </span>f<span class="_ _2"></span>or<span class="_ _d"> </span>dynamic<span class="_ _1"> </span>languages.<span class="_ _1"> </span><span class="ff2">Dynamic<span class="_ _d"> </span>lan-</span></div><div class="t m0 x2f h5 y12d ff2 fs3 fc0 sc0 ls0 ws0">guage<span class="_ _3"> </span>implementors<span class="_ _3"> </span>have<span class="_ _3"> </span>long<span class="_ _3"> </span>recognized<span class="_ _3"> </span>the<span class="_ _3"> </span>importance<span class="_ _3"> </span>of<span class="_ _3"> </span>type</div><div class="t m0 x2f h5 ycc ff2 fs3 fc0 sc0 ls0 ws0">specialization<span class="_ _5"> </span>for<span class="_ _7"> </span>performance.<span class="_ _5"> </span>Most<span class="_ _5"> </span>pre<span class="_ _2"></span>vious<span class="_ _5"> </span>w<span class="_ _2"></span>ork<span class="_ _5"> </span>has<span class="_ _7"> </span>focused<span class="_ _5"> </span>on</div><div class="t m0 x2f h5 ycd ff2 fs3 fc0 sc0 ls0 ws0">methods<span class="_ _5"> </span>instead<span class="_ _5"> </span>of<span class="_ _3"> </span>traces.</div><div class="t m0 x34 h5 yce ff2 fs3 fc0 sc0 ls0 ws0">Chambers<span class="_ _6"> </span>et.<span class="_ _8"> </span>al<span class="_ _6"> </span>(9)<span class="_ _8"> </span>pioneered<span class="_ _8"> </span>the<span class="_ _6"> </span>idea<span class="_ _8"> </span>of<span class="_ _6"> </span>compiling<span class="_ _8"> </span>multiple</div><div class="t m0 x2f h5 ycf ff2 fs3 fc0 sc0 ls0 ws0">versions<span class="_ _3"> </span>of<span class="_ _3"> </span>a<span class="_ _6"> </span>procedure<span class="_ _3"> </span>specialized<span class="_ _3"> </span>for<span class="_ _3"> </span>the<span class="_ _6"> </span>input<span class="_ _3"> </span>types<span class="_ _3"> </span>in<span class="_ _6"> </span>the<span class="_ _3"> </span>lan-</div><div class="t m0 x2f h5 yd0 ff2 fs3 fc0 sc0 ls0 ws0">guage<span class="_ _8"> </span>Self.<span class="_ _8"> </span>In<span class="_ _8"> </span>one<span class="_ _8"> </span>implementation,<span class="_ _8"> </span>they<span class="_ _8"> </span>generated<span class="_ _8"> </span>a<span class="_ _8"> </span>specialized</div><div class="t m0 x2f h5 yd1 ff2 fs3 fc0 sc0 ls0 ws0">method<span class="_ _5"> </span>online<span class="_ _7"> </span>each<span class="_ _5"> </span>time<span class="_ _5"> </span>a<span class="_ _7"> </span>method<span class="_ _5"> </span>w<span class="_ _2"></span>as<span class="_ _5"> </span>called<span class="_ _7"> </span>with<span class="_ _5"> </span>ne<span class="_ _2"></span>w<span class="_ _5"> </span>input<span class="_ _7"> </span>types.</div><div class="t m0 x2f h5 yd2 ff2 fs3 fc0 sc0 ls0 ws0">In<span class="_ _6"> </span>another<span class="_ _2"></span>,<span class="_ _6"> </span>they<span class="_ _6"> </span>used<span class="_ _6"> </span>an<span class="_ _8"> </span>of<span class="_ _2"></span>fline<span class="_ _6"> </span>whole-program<span class="_ _6"> </span>static<span class="_ _8"> </span>analysis<span class="_ _6"> </span>to</div><div class="t m0 x2f h5 yd3 ff2 fs3 fc0 sc0 ls0 ws0">infer<span class="_ _3"> </span>input<span class="_ _3"> </span>types<span class="_ _3"> </span>and<span class="_ _3"> </span>constant<span class="_ _3"> </span>recei<span class="_ _2"></span>v<span class="_ _2"></span>er<span class="_ _3"> </span>types<span class="_ _3"> </span>at<span class="_ _3"> </span>call<span class="_ _3"> </span>sites.<span class="_ _3"> </span>Interest-</div><div class="t m0 x2f h5 y94 ff2 fs3 fc0 sc0 ls0 ws0">ingly<span class="_ _2"></span>,<span class="_ _5"> </span>the<span class="_ _5"> </span>two<span class="_ _5"> </span>techniques<span class="_ _5"> </span>produced<span class="_ _5"> </span>nearly<span class="_ _5"> </span>the<span class="_ _5"> </span>same<span class="_ _3"> </span>performance.</div><div class="t m0 x34 h5 y95 ff2 fs3 fc0 sc0 ls0 ws0">Salib<span class="_ _5"> </span>(17)<span class="_ _5"> </span>designed<span class="_ _7"> </span>a<span class="_ _5"> </span>type<span class="_ _5"> </span>inference<span class="_ _5"> </span>algorithm<span class="_ _7"> </span>for<span class="_ _5"> </span>Python<span class="_ _5"> </span>based</div><div class="t m0 x2f h5 y96 ff2 fs3 fc0 sc0 ls0 ws0">on<span class="_ _5"> </span>the<span class="_ _5"> </span>Cartesian<span class="_ _5"> </span>Product<span class="_ _5"> </span>Algorithm<span class="_ _5"> </span>and<span class="_ _5"> </span>used<span class="_ _5"> </span>the<span class="_ _5"> </span>results<span class="_ _5"> </span>to<span class="_ _5"> </span>special-</div><div class="t m0 x2f h5 y97 ff2 fs3 fc0 sc0 ls0 ws0">ize<span class="_ _5"> </span>on<span class="_ _5"> </span>types<span class="_ _3"> </span>and<span class="_ _5"> </span>translate<span class="_ _5"> </span>the<span class="_ _5"> </span>program<span class="_ _5"> </span>to<span class="_ _5"> </span>C++.</div><div class="t m0 x34 h5 y98 ff2 fs3 fc0 sc0 ls0 ws0">McCloskey<span class="_ _8"> </span>(14)<span class="_ _d"> </span>has<span class="_ _d"> </span>work<span class="_ _d"> </span>in<span class="_ _d"> </span>progress<span class="_ _8"> </span>based<span class="_ _d"> </span>on<span class="_ _d"> </span>a<span class="_ _d"> </span>language-</div><div class="t m0 x2f h5 y99 ff2 fs3 fc0 sc0 ls0 ws0">independent<span class="_ _1"> </span>t<span class="_ _2"></span>ype<span class="_ _1"> </span>inference<span class="_ _d"> </span>that<span class="_ _1"> </span>is<span class="_ _d"> </span>used<span class="_ _1"> </span>to<span class="_ _1"> </span>generate<span class="_ _d"> </span>efficient<span class="_ _d"> </span>C</div><div class="t m0 x2f h5 y9a ff2 fs3 fc0 sc0 ls0 ws0">implementations<span class="_ _5"> </span>of<span class="_ _5"> </span>JavaScript<span class="_ _5"> </span>and<span class="_ _5"> </span>Python<span class="_ _5"> </span>programs.</div><div class="t m0 x34 h5 y9b ff1 fs3 fc0 sc0 ls0 ws0">Native<span class="_ _5"> </span>code<span class="_ _3"> </span>generation<span class="_ _5"> </span>by<span class="_ _5"> </span>interpreters.<span class="_ _3"> </span><span class="ff2">The<span class="_ _5"> </span>traditional<span class="_ _5"> </span>inter-</span></div><div class="t m0 x2f h5 y9c ff2 fs3 fc0 sc0 ls0 ws0">preter<span class="_ _6"> </span>design<span class="_ _6"> </span>is<span class="_ _6"> </span>a<span class="_ _6"> </span>virtual<span class="_ _6"> </span>machine<span class="_ _6"> </span>that<span class="_ _6"> </span>directly<span class="_ _6"> </span>ex<span class="_ _2"></span>ecutes<span class="_ _6"> </span>ASTs<span class="_ _6"> </span>or</div><div class="t m0 x2f h5 y9d ff2 fs3 fc0 sc0 ls0 ws0">machine-code-like<span class="_ _5"> </span>bytecodes.<span class="_ _7"> </span>Researchers<span class="_ _5"> </span>ha<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _5"> </span>sho<span class="_ _2"></span>wn<span class="_ _7"> </span>how<span class="_ _7"> </span>to<span class="_ _5"> </span>gen-</div><div class="t m0 x32 h5 y5b ff2 fs3 fc0 sc0 ls0 ws0">erate<span class="_ _3"> </span>nativ<span class="_ _2"></span>e<span class="_ _3"> </span>code<span class="_ _3"> </span>with<span class="_ _3"> </span>nearly<span class="_ _3"> </span>the<span class="_ _3"> </span>same<span class="_ _3"> </span>structure<span class="_ _3"> </span>but<span class="_ _3"> </span>better<span class="_ _3"> </span>perfor-</div><div class="t m0 x32 h5 y5c ff2 fs3 fc0 sc0 ls0 ws0">mance.</div><div class="t m0 x33 h5 y5d ff2 fs3 fc0 sc0 ls0 ws0">Call<span class="_ _6"> </span>threading,<span class="_ _6"> </span>also<span class="_ _3"> </span>known<span class="_ _6"> </span>as<span class="_ _6"> </span>conte<span class="_ _2"></span>xt<span class="_ _6"> </span>threading<span class="_ _6"> </span>(8),<span class="_ _3"> </span>compiles</div><div class="t m0 x32 h5 y5e ff2 fs3 fc0 sc0 ls0 ws0">methods<span class="_ _8"> </span>by<span class="_ _8"> </span>generating<span class="_ _d"> </span>a<span class="_ _8"> </span>nativ<span class="_ _2"></span>e<span class="_ _8"> </span>call<span class="_ _8"> </span>instruction<span class="_ _d"> </span>to<span class="_ _6"> </span>an<span class="_ _d"> </span>interpreter</div><div class="t m0 x32 h5 y5f ff2 fs3 fc0 sc0 ls0 ws0">method<span class="_ _3"> </span>for<span class="_ _6"> </span>each<span class="_ _6"> </span>interpreter<span class="_ _3"> </span>bytecode.<span class="_ _6"> </span>A<span class="_ _3"> </span>call-return<span class="_ _6"> </span>pair<span class="_ _3"> </span>has<span class="_ _6"> </span>been</div><div class="t m0 x32 h5 y60 ff2 fs3 fc0 sc0 ls0 ws0">shown<span class="_ _5"> </span>to<span class="_ _5"> </span>be<span class="_ _5"> </span>a<span class="_ _5"> </span>potentially<span class="_ _5"> </span>much<span class="_ _5"> </span>more<span class="_ _5"> </span>efficient<span class="_ _5"> </span>dispatch<span class="_ _5"> </span>mechanism</div><div class="t m0 x32 h5 y61 ff2 fs3 fc0 sc0 ls0 ws0">than<span class="_ _5"> </span>the<span class="_ _5"> </span>indirect<span class="_ _3"> </span>jumps<span class="_ _5"> </span>used<span class="_ _5"> </span>in<span class="_ _5"> </span>standard<span class="_ _5"> </span>bytecode<span class="_ _5"> </span>interpreters.</div><div class="t m0 x33 h5 y62 ff2 fs3 fc0 sc0 ls0 ws0">Inline<span class="_ _6"> </span>threading<span class="_ _6"> </span>(15)<span class="_ _6"> </span>copies<span class="_ _6"> </span>chunks<span class="_ _8"> </span>of<span class="_ _6"> </span>interpreter<span class="_ _6"> </span>nativ<span class="_ _2"></span>e<span class="_ _6"> </span>code</div><div class="t m0 x32 h5 y63 ff2 fs3 fc0 sc0 ls0 ws0">which<span class="_ _3"> </span>implement<span class="_ _5"> </span>the<span class="_ _3"> </span>required<span class="_ _3"> </span>bytecodes<span class="_ _3"> </span>into<span class="_ _5"> </span>a<span class="_ _3"> </span>nati<span class="_ _2"></span>ve<span class="_ _3"> </span>code<span class="_ _5"> </span>cache,</div><div class="t m0 x32 h5 y7 ff2 fs3 fc0 sc0 ls0 ws0">thus<span class="_ _5"> </span>acting<span class="_ _5"> </span>as<span class="_ _5"> </span>a<span class="_ _5"> </span>simple<span class="_ _7"> </span>per-method<span class="_ _5"> </span>JIT<span class="_ _5"> </span>compiler<span class="_ _5"> </span>that<span class="_ _5"> </span>eliminates<span class="_ _7"> </span>the</div><div class="t m0 x32 h5 y64 ff2 fs3 fc0 sc0 ls0 ws0">dispatch<span class="_ _5"> </span>overhead.</div><div class="t m0 x33 h5 y66 ff2 fs3 fc0 sc0 ls0 ws0">Neither<span class="_ _5"> </span>call<span class="_ _7"> </span>threading<span class="_ _5"> </span>nor<span class="_ _7"> </span>inline<span class="_ _5"> </span>threading<span class="_ _5"> </span>perform<span class="_ _7"> </span>type<span class="_ _5"> </span>special-</div><div class="t m0 x32 h5 y67 ff2 fs3 fc0 sc0 ls0 ws0">ization.</div><div class="t m0 x33 h5 y68 ff2 fs3 fc0 sc0 ls0 ws0">Apple<span class="_ _2"></span>s<span class="_ _3"> </span>SquirrelFish<span class="_ _6"> </span>Extreme<span class="_ _6"> </span>(5)<span class="_ _6"> </span>is<span class="_ _6"> </span>a<span class="_ _6"> </span>Ja<span class="_ _2"></span>vaScript<span class="_ _3"> </span>implementa-</div><div class="t m0 x32 h5 y69 ff2 fs3 fc0 sc0 ls0 ws0">tion<span class="_ _3"> </span>based<span class="_ _3"> </span>on<span class="_ _3"> </span>call<span class="_ _3"> </span>threading<span class="_ _3"> </span>with<span class="_ _6"> </span>selecti<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _3"> </span>inline<span class="_ _3"> </span>threading.<span class="_ _3"> </span>Com-</div><div class="t m0 x32 h5 y6a ff2 fs3 fc0 sc0 ls0 ws0">bined<span class="_ _6"> </span>with<span class="_ _6"> </span>ef<span class="_ _2"></span>ficient<span class="_ _6"> </span>interpreter<span class="_ _6"> </span>engineering,<span class="_ _6"> </span>these<span class="_ _6"> </span>threading<span class="_ _3"> </span>tech-</div><div class="t m0 x32 h5 y6b ff2 fs3 fc0 sc0 ls0 ws0">niques<span class="_ _5"> </span>ha<span class="_ _2"></span>ve<span class="_ _5"> </span>gi<span class="_ _2"></span>v<span class="_ _2"></span>en<span class="_ _5"> </span>SFX<span class="_ _5"> </span>e<span class="_ _2"></span>xcellent<span class="_ _5"> </span>performance<span class="_ _7"> </span>on<span class="_ _5"> </span>the<span class="_ _5"> </span>standard<span class="_ _5"> </span>Sun-</div><div class="t m0 x32 h5 y6c ff2 fs3 fc0 sc0 ls0 ws0">Spider<span class="_ _5"> </span>benchmarks.</div><div class="t m0 x33 h5 y6d ff2 fs3 fc0 sc0 ls0 ws0">Google<span class="_ _2"></span>s<span class="_ _8"> </span>V8<span class="_ _d"> </span>is<span class="_ _d"> </span>a<span class="_ _d"> </span>Ja<span class="_ _2"></span>v<span class="_ _2"></span>aScript<span class="_ _d"> </span>implementation<span class="_ _d"> </span>primarily<span class="_ _8"> </span>based</div><div class="t m0 x32 h5 y6e ff2 fs3 fc0 sc0 ls0 ws0">on<span class="_ _1"> </span>inline<span class="_ _d"> </span>threading,<span class="_ _1"> </span>with<span class="_ _d"> </span>call<span class="_ _1"> </span>threading<span class="_ _d"> </span>only<span class="_ _1"> </span>for<span class="_ _d"> </span>very<span class="_ _1"> </span>comple<span class="_ _2"></span>x</div><div class="t m0 x32 h5 y6f ff2 fs3 fc0 sc0 ls0 ws0">operations.</div><div class="t m0 x32 h9 y116 ff1 fs1 fc0 sc0 ls0 ws0">9.<span class="_ _a"> </span>Conclusions</div><div class="t m0 x32 h5 y2ac ff2 fs3 fc0 sc0 ls0 ws0">This<span class="_ _3"> </span>paper<span class="_ _5"> </span>described<span class="_ _3"> </span>how<span class="_ _5"> </span>to<span class="_ _3"> </span>run<span class="_ _3"> </span>dynamic<span class="_ _5"> </span>languages<span class="_ _3"> </span>efficiently<span class="_ _5"> </span>by</div><div class="t m0 x32 h5 y2ad ff2 fs3 fc0 sc0 ls0 ws0">recording<span class="_ _6"> </span>hot<span class="_ _6"> </span>traces<span class="_ _6"> </span>and<span class="_ _6"> </span>generating<span class="_ _8"> </span>type-specialized<span class="_ _6"> </span>nativ<span class="_ _2"></span>e<span class="_ _6"> </span>code.</div><div class="t m0 x32 h5 y2ae ff2 fs3 fc0 sc0 ls0 ws0">Our<span class="_ _3"> </span>technique<span class="_ _3"> </span>focuses<span class="_ _5"> </span>on<span class="_ _3"> </span>aggressiv<span class="_ _2"></span>ely<span class="_ _3"> </span>inlined<span class="_ _3"> </span>loops,<span class="_ _5"> </span>and<span class="_ _3"> </span>for<span class="_ _3"> </span>each</div><div class="t m0 x32 h5 y14 ff2 fs3 fc0 sc0 ls0 ws0">loop,<span class="_ _1"> </span>it<span class="_ _d"> </span>generates<span class="_ _1"> </span>a<span class="_ _d"> </span>tree<span class="_ _1"> </span>of<span class="_ _1"> </span>nati<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _1"> </span>code<span class="_ _d"> </span>traces<span class="_ _1"> </span>representing<span class="_ _d"> </span>the</div><div class="t m0 x32 h5 y37 ff2 fs3 fc0 sc0 ls0 ws0">paths<span class="_ _6"> </span>and<span class="_ _3"> </span>value<span class="_ _6"> </span>types<span class="_ _3"> </span>through<span class="_ _6"> </span>the<span class="_ _6"> </span>loop<span class="_ _6"> </span>observed<span class="_ _3"> </span>at<span class="_ _6"> </span>run<span class="_ _6"> </span>time.<span class="_ _3"> </span>W<span class="_ _2"></span>e</div><div class="t m0 x32 h5 y38 ff2 fs3 fc0 sc0 ls0 ws0">explained<span class="_ _3"> </span>how<span class="_ _3"> </span>to<span class="_ _3"> </span>identify<span class="_ _6"> </span>loop<span class="_ _3"> </span>nesting<span class="_ _3"> </span>relationships<span class="_ _6"> </span>and<span class="_ _3"> </span>generate</div><div class="t m0 x32 h5 y39 ff2 fs3 fc0 sc0 ls0 ws0">nested<span class="_ _1"> </span>traces<span class="_ _d"> </span>in<span class="_ _1"> </span>order<span class="_ _1"> </span>to<span class="_ _1"> </span>a<span class="_ _2"></span>v<span class="_ _2"></span>oid<span class="_ _1"> </span>e<span class="_ _2"></span>xcessi<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _1"> </span>code<span class="_ _d"> </span>duplication<span class="_ _1"> </span>due</div><div class="t m0 x32 h5 y3a ff2 fs3 fc0 sc0 ls0 ws0">to<span class="_ _d"> </span>the<span class="_ _1"> </span>man<span class="_ _2"></span>y<span class="_ _d"> </span>paths<span class="_ _d"> </span>through<span class="_ _d"> </span>a<span class="_ _1"> </span>loop<span class="_ _d"> </span>nest.<span class="_ _d"> </span>W<span class="_ _b"></span>e<span class="_ _1"> </span>described<span class="_ _d"> </span>our<span class="_ _d"> </span>type</div><div class="t m0 x32 h5 y3b ff2 fs3 fc0 sc0 ls0 ws0">specialization<span class="_ _d"> </span>algorithm.<span class="_ _1"> </span>W<span class="_ _b"></span>e<span class="_ _1"> </span>also<span class="_ _d"> </span>described<span class="_ _d"> </span>our<span class="_ _1"> </span>trace<span class="_ _d"> </span>compiler<span class="_ _2"></span>,</div><div class="t m0 x32 h5 y3c ff2 fs3 fc0 sc0 ls0 ws0">which<span class="_ _1"> </span>translates<span class="_ _d"> </span>a<span class="_ _d"> </span>trace<span class="_ _1"> </span>from<span class="_ _d"> </span>an<span class="_ _1"> </span>intermediate<span class="_ _d"> </span>representation<span class="_ _1"> </span>to</div><div class="t m0 x32 h5 y3d ff2 fs3 fc0 sc0 ls0 ws0">optimized<span class="_ _5"> </span>nativ<span class="_ _2"></span>e<span class="_ _5"> </span>code<span class="_ _5"> </span>in<span class="_ _3"> </span>tw<span class="_ _2"></span>o<span class="_ _5"> </span>linear<span class="_ _5"> </span>passes.</div><div class="t m0 x33 h5 y3e ff2 fs3 fc0 sc0 ls0 ws0">Our<span class="_ _6"> </span>experimental<span class="_ _3"> </span>results<span class="_ _6"> </span>show<span class="_ _3"> </span>that<span class="_ _6"> </span>in<span class="_ _6"> </span>practice<span class="_ _6"> </span>loops<span class="_ _6"> </span>typically</div><div class="t m0 x32 h5 y3f ff2 fs3 fc0 sc0 ls0 ws0">are<span class="_ _3"> </span>entered<span class="_ _3"> </span>with<span class="_ _3"> </span>only<span class="_ _6"> </span>a<span class="_ _3"> </span>fe<span class="_ _2"></span>w<span class="_ _3"> </span>different<span class="_ _3"> </span>combinations<span class="_ _3"> </span>of<span class="_ _3"> </span>value<span class="_ _3"> </span>types</div><div class="t m0 x32 h5 y40 ff2 fs3 fc0 sc0 ls0 ws0">of<span class="_ _3"> </span>variables.<span class="_ _3"> </span>Thus,<span class="_ _3"> </span>a<span class="_ _3"> </span>small<span class="_ _6"> </span>number<span class="_ _3"> </span>of<span class="_ _3"> </span>traces<span class="_ _3"> </span>per<span class="_ _6"> </span>loop<span class="_ _3"> </span>is<span class="_ _3"> </span>sufficient</div><div class="t m0 x32 h5 y41 ff2 fs3 fc0 sc0 ls0 ws0">to<span class="_ _8"> </span>run<span class="_ _8"> </span>a<span class="_ _8"> </span>program<span class="_ _8"> </span>efficiently<span class="_ _b"></span>.<span class="_ _8"> </span>Our<span class="_ _8"> </span>experiments<span class="_ _8"> </span>also<span class="_ _8"> </span>show<span class="_ _6"> </span>that<span class="_ _8"> </span>on</div><div class="t m0 x32 h5 y42 ff2 fs3 fc0 sc0 ls0 ws0">programs<span class="_ _5"> </span>amenable<span class="_ _5"> </span>to<span class="_ _3"> </span>tracing,<span class="_ _5"> </span>we<span class="_ _5"> </span>achie<span class="_ _2"></span>ve<span class="_ _5"> </span>speedups<span class="_ _5"> </span>of<span class="_ _5"> </span>2x<span class="_ _5"> </span>to<span class="_ _5"> </span>20x.</div><div class="t m0 x32 h9 y2af ff1 fs1 fc0 sc0 ls0 ws0">10.<span class="_ _a"> </span>Future<span class="_ _3"> </span>W<span class="_ _b"></span>ork</div><div class="t m0 x32 h5 y2b0 ff2 fs3 fc0 sc0 ls0 ws0">W<span class="_ _b"></span>ork<span class="_ _d"> </span>is<span class="_ _d"> </span>underway<span class="_ _8"> </span>in<span class="_ _d"> </span>a<span class="_ _d"> </span>number<span class="_ _d"> </span>of<span class="_ _d"> </span>areas<span class="_ _8"> </span>to<span class="_ _d"> </span>further<span class="_ _d"> </span>improv<span class="_ _2"></span>e<span class="_ _d"> </span>the</div><div class="t m0 x32 h5 y2b1 ff2 fs3 fc0 sc0 ls0 ws0">performance<span class="_ _3"> </span>of<span class="_ _3"> </span>our<span class="_ _3"> </span>trace-based<span class="_ _3"> </span>Ja<span class="_ _2"></span>v<span class="_ _2"></span>aScript<span class="_ _3"> </span>compiler<span class="_ _2"></span>.<span class="_ _5"> </span>W<span class="_ _2"></span>e<span class="_ _3"> </span>currently</div><div class="t m0 x32 h5 y2b2 ff2 fs3 fc0 sc0 ls0 ws0">do<span class="_ _8"> </span>not<span class="_ _d"> </span>trace<span class="_ _8"> </span>across<span class="_ _d"> </span>recursi<span class="_ _2"></span>v<span class="_ _2"></span>e<span class="_ _8"> </span>function<span class="_ _d"> </span>calls,<span class="_ _8"> </span>but<span class="_ _8"> </span>plan<span class="_ _d"> </span>to<span class="_ _8"> </span>add<span class="_ _8"> </span>the</div><div class="t m0 x32 h5 y25 ff2 fs3 fc0 sc0 ls0 ws0">support<span class="_ _3"> </span>for<span class="_ _3"> </span>this<span class="_ _3"> </span>capability<span class="_ _3"> </span>in<span class="_ _3"> </span>the<span class="_ _3"> </span>near<span class="_ _3"> </span>term.<span class="_ _3"> </span>W<span class="_ _b"></span>e<span class="_ _3"> </span>are<span class="_ _3"> </span>also<span class="_ _3"> </span>exploring</div><div class="t m0 x32 h5 y26 ff2 fs3 fc0 sc0 ls0 ws0">adoption<span class="_ _3"> </span>of<span class="_ _3"> </span>the<span class="_ _3"> </span>e<span class="_ _2"></span>xisting<span class="_ _3"> </span>w<span class="_ _2"></span>ork<span class="_ _3"> </span>on<span class="_ _5"> </span>tree<span class="_ _3"> </span>recompilation<span class="_ _3"> </span>in<span class="_ _3"> </span>the<span class="_ _3"> </span>conte<span class="_ _2"></span>xt</div><div class="t m0 x32 h5 y2b3 ff2 fs3 fc0 sc0 ls0 ws0">of<span class="_ _3"> </span>the<span class="_ _5"> </span>presented<span class="_ _3"> </span>dynamic<span class="_ _5"> </span>compiler<span class="_ _3"> </span>in<span class="_ _5"> </span>order<span class="_ _3"> </span>to<span class="_ _5"> </span>minimize<span class="_ _3"> </span>JIT<span class="_ _5"> </span>pause</div><div class="t m0 x32 h5 y2b4 ff2 fs3 fc0 sc0 ls0 ws0">times<span class="_ _3"> </span>and<span class="_ _5"> </span>obtain<span class="_ _5"> </span>the<span class="_ _3"> </span>best<span class="_ _5"> </span>of<span class="_ _3"> </span>both<span class="_ _5"> </span>worlds,<span class="_ _5"> </span>fast<span class="_ _3"> </span>tree<span class="_ _5"> </span>stitching<span class="_ _5"> </span>as<span class="_ _3"> </span>well</div><div class="t m0 x32 h5 y2b5 ff2 fs3 fc0 sc0 ls0 ws0">as<span class="_ _5"> </span>the<span class="_ _5"> </span>improved<span class="_ _5"> </span>code<span class="_ _5"> </span>quality<span class="_ _5"> </span>due<span class="_ _3"> </span>to<span class="_ _5"> </span>tree<span class="_ _5"> </span>recompilation.</div><div class="t m0 x33 h5 y2b6 ff2 fs3 fc0 sc0 ls0 ws0">W<span class="_ _b"></span>e<span class="_ _6"> </span>also<span class="_ _6"> </span>plan<span class="_ _6"> </span>on<span class="_ _6"> </span>adding<span class="_ _3"> </span>support<span class="_ _6"> </span>for<span class="_ _6"> </span>tracing<span class="_ _6"> </span>across<span class="_ _6"> </span>regular<span class="_ _3"> </span>ex-</div><div class="t m0 x32 h5 y2b7 ff2 fs3 fc0 sc0 ls0 ws0">pression<span class="_ _d"> </span>substitutions<span class="_ _d"> </span>using<span class="_ _d"> </span>lambda<span class="_ _d"> </span>functions,<span class="_ _d"> </span>function<span class="_ _d"> </span>applica-</div><div class="t m0 x32 h5 y2b8 ff2 fs3 fc0 sc0 ls0 ws0">tions<span class="_ _d"> </span>and<span class="_ _d"> </span>e<span class="_ _2"></span>xpression<span class="_ _d"> </span>e<span class="_ _2"></span>valuation<span class="_ _8"> </span>using<span class="_ _d"> </span><span class="ff7">eval</span>.<span class="_ _d"> </span>All<span class="_ _d"> </span>these<span class="_ _d"> </span>language</div><div class="t m0 x32 h5 y2b9 ff2 fs3 fc0 sc0 ls0 ws0">constructs<span class="_ _8"> </span>are<span class="_ _6"> </span>currently<span class="_ _8"> </span>executed<span class="_ _6"> </span>via<span class="_ _8"> </span>interpretation,<span class="_ _8"> </span>which<span class="_ _8"> </span>limits</div><div class="t m0 x32 h5 y2ba ff2 fs3 fc0 sc0 ls0 ws0">our<span class="_ _5"> </span>performance<span class="_ _5"> </span>for<span class="_ _3"> </span>applications<span class="_ _5"> </span>that<span class="_ _5"> </span>use<span class="_ _5"> </span>those<span class="_ _5"> </span>features.</div><div class="t m0 x32 h9 yff ff1 fs1 fc0 sc0 ls0 ws0">Acknowledgments</div><div class="t m0 x32 h5 y96 ff2 fs3 fc0 sc0 ls0 ws0">Parts<span class="_ _6"> </span>of<span class="_ _6"> </span>this<span class="_ _6"> </span>effort<span class="_ _6"> </span>hav<span class="_ _2"></span>e<span class="_ _6"> </span>been<span class="_ _6"> </span>sponsored<span class="_ _6"> </span>by<span class="_ _8"> </span>the<span class="_ _6"> </span>National<span class="_ _6"> </span>Science</div><div class="t m0 x32 h5 y97 ff2 fs3 fc0 sc0 ls0 ws0">Foundation<span class="_ _5"> </span>under<span class="_ _5"> </span>grants<span class="_ _7"> </span>CNS-0615443<span class="_ _5"> </span>and<span class="_ _5"> </span>CNS-0627747,<span class="_ _5"> </span>as<span class="_ _5"> </span>well</div><div class="t m0 x32 h5 y98 ff2 fs3 fc0 sc0 ls0 ws0">as<span class="_ _3"> </span>by<span class="_ _6"> </span>the<span class="_ _6"> </span>California<span class="_ _3"> </span>MICR<span class="_ _2"></span>O<span class="_ _3"> </span>Program<span class="_ _6"> </span>and<span class="_ _6"> </span>industrial<span class="_ _3"> </span>sponsor<span class="_ _6"> </span>Sun</div><div class="t m0 x32 h5 y99 ff2 fs3 fc0 sc0 ls0 ws0">Microsystems<span class="_ _5"> </span>under<span class="_ _5"> </span>Project<span class="_ _3"> </span>No.<span class="_ _5"> </span>07-127.</div><div class="t m0 x33 h5 y9a ff2 fs3 fc0 sc0 ls0 ws0">The<span class="_ _3"> </span>U.S.<span class="_ _5"> </span>Gov<span class="_ _2"></span>ernment<span class="_ _5"> </span>is<span class="_ _3"> </span>authorized<span class="_ _5"> </span>to<span class="_ _3"> </span>reproduce<span class="_ _5"> </span>and<span class="_ _3"> </span>distrib<span class="_ _2"></span>ute</div><div class="t m0 x32 h5 y9b ff2 fs3 fc0 sc0 ls0 ws0">reprints<span class="_ _5"> </span>for<span class="_ _5"> </span>Governmental<span class="_ _5"> </span>purposes<span class="_ _5"> </span>notwithstanding<span class="_ _5"> </span>any<span class="_ _5"> </span>copyright</div><div class="t m0 x32 h5 y9c ff2 fs3 fc0 sc0 ls0 ws0">annotation<span class="_ _5"> </span>thereon.<span class="_ _5"> </span>An<span class="_ _2"></span>y<span class="_ _5"> </span>opinions,<span class="_ _7"> </span>findings,<span class="_ _5"> </span>and<span class="_ _5"> </span>conclusions<span class="_ _7"> </span>or<span class="_ _5"> </span>rec-</div><div class="t m0 x32 h5 y9d ff2 fs3 fc0 sc0 ls0 ws0">ommendations<span class="_ _6"> </span>expressed<span class="_ _3"> </span>here<span class="_ _6"> </span>are<span class="_ _6"> </span>those<span class="_ _3"> </span>of<span class="_ _6"> </span>the<span class="_ _6"> </span>author<span class="_ _6"> </span>and<span class="_ _3"> </span>should</div></div><div class="pi" data-data='{"ctm":[1.673203,0.000000,0.000000,1.673203,0.000000,0.000000]}'></div></div></div>