CINXE.COM

Just-in-time compilation - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Just-in-time compilation - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"eb25f35b-6b0d-4e7d-9b1e-2a29b79ed1b0","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Just-in-time_compilation","wgTitle":"Just-in-time compilation","wgCurRevisionId":1272920435,"wgRevisionId":1272920435,"wgArticleId":220632,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 errors: missing periodical","CS1: unfit URL","Articles with short description","Short description matches Wikidata","Articles needing additional references from June 2021","All articles needing additional references","Webarchive template wayback links","Compiler construction","Emulation software","Virtualization"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Just-in-time_compilation", "wgRelevantArticleId":220632,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q110546","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true, "wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.scribunto.logs","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader", "ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.18"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Just-in-time compilation - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Just-in-time_compilation"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Just-in-time_compilation&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Just-in-time_compilation"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Just-in-time_compilation rootpage-Just-in-time_compilation skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="Main menu" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages"><span>Special pages</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Just-in-time+compilation" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Just-in-time+compilation" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Just-in-time+compilation" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Just-in-time+compilation" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Design" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Design"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Design</span> </div> </a> <ul id="toc-Design-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Performance" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Performance"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Performance</span> </div> </a> <ul id="toc-Performance-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Security" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Security"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Security</span> </div> </a> <ul id="toc-Security-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Uses" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Uses"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Uses</span> </div> </a> <ul id="toc-Uses-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Notes" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Notes"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Notes</span> </div> </a> <ul id="toc-Notes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bibliography" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Bibliography"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Bibliography</span> </div> </a> <ul id="toc-Bibliography-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="Table of Contents" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Just-in-time compilation</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 27 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-27" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">27 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%AA%D8%B1%D8%AC%D9%85%D8%A9_%D9%81%D9%8A_%D8%A7%D9%84%D9%88%D9%82%D8%AA_%D8%A7%D9%84%D9%85%D9%86%D8%A7%D8%B3%D8%A8" title="ترجمة في الوقت المناسب – Arabic" lang="ar" hreflang="ar" data-title="ترجمة في الوقت المناسب" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Compilaci%C3%B3_just-in-time" title="Compilació just-in-time – Catalan" lang="ca" hreflang="ca" data-title="Compilació just-in-time" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Just-in-time_kompilace" title="Just-in-time kompilace – Czech" lang="cs" hreflang="cs" data-title="Just-in-time kompilace" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Just-in-time-Kompilierung" title="Just-in-time-Kompilierung – German" lang="de" hreflang="de" data-title="Just-in-time-Kompilierung" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Compilaci%C3%B3n_en_tiempo_de_ejecuci%C3%B3n" title="Compilación en tiempo de ejecución – Spanish" lang="es" hreflang="es" data-title="Compilación en tiempo de ejecución" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D8%AF%D8%B1%D8%AC%D8%A7" title="کامپایل درجا – Persian" lang="fa" hreflang="fa" data-title="کامپایل درجا" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Compilation_%C3%A0_la_vol%C3%A9e" title="Compilation à la volée – French" lang="fr" hreflang="fr" data-title="Compilation à la volée" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/JIT_%EC%BB%B4%ED%8C%8C%EC%9D%BC" title="JIT 컴파일 – Korean" lang="ko" hreflang="ko" data-title="JIT 컴파일" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/JIT_%D5%AF%D5%B8%D5%B4%D5%BA%D5%AB%D5%AC%D5%B5%D5%A1%D6%81%D5%AB%D5%A1" title="JIT կոմպիլյացիա – Armenian" lang="hy" hreflang="hy" data-title="JIT կոմպիլյացիա" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Kompilasi_tepat_waktu" title="Kompilasi tepat waktu – Indonesian" lang="id" hreflang="id" data-title="Kompilasi tepat waktu" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Compilatore_just-in-time" title="Compilatore just-in-time – Italian" lang="it" hreflang="it" data-title="Compilatore just-in-time" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Fut%C3%A1sidej%C5%B1_ford%C3%ADt%C3%A1s" title="Futásidejű fordítás – Hungarian" lang="hu" hreflang="hu" data-title="Futásidejű fordítás" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%9C%E0%B4%B8%E0%B5%8D%E0%B4%B1%E0%B5%8D%E0%B4%B1%E0%B5%8D-%E0%B4%87%E0%B5%BB-%E0%B4%9F%E0%B5%88%E0%B4%82_%E0%B4%95%E0%B4%82%E0%B4%AA%E0%B5%88%E0%B4%B2%E0%B5%87%E0%B4%B7%E0%B5%BB" title="ജസ്റ്റ്-ഇൻ-ടൈം കംപൈലേഷൻ – Malayalam" lang="ml" hreflang="ml" data-title="ജസ്റ്റ്-ഇൻ-ടൈം കംപൈലേഷൻ" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Pengkompilan_sempat" title="Pengkompilan sempat – Malay" lang="ms" hreflang="ms" data-title="Pengkompilan sempat" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Just-in-timecompilatie" title="Just-in-timecompilatie – Dutch" lang="nl" hreflang="nl" data-title="Just-in-timecompilatie" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9" title="実行時コンパイラ – Japanese" lang="ja" hreflang="ja" data-title="実行時コンパイラ" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Just-in-time-kompilering" title="Just-in-time-kompilering – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Just-in-time-kompilering" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/JIT_(informatyka)" title="JIT (informatyka) – Polish" lang="pl" hreflang="pl" data-title="JIT (informatyka)" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/JIT" title="JIT – Portuguese" lang="pt" hreflang="pt" data-title="JIT" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F" title="JIT-компиляция – Russian" lang="ru" hreflang="ru" data-title="JIT-компиляция" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Just-in-time_compilation" title="Just-in-time compilation – Simple English" lang="en-simple" hreflang="en-simple" data-title="Just-in-time compilation" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Sprotni_prevajalnik" title="Sprotni prevajalnik – Slovenian" lang="sl" hreflang="sl" data-title="Sprotni prevajalnik" data-language-autonym="Slovenščina" data-language-local-name="Slovenian" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Ajonaikainen_k%C3%A4%C3%A4nt%C3%A4minen" title="Ajonaikainen kääntäminen – Finnish" lang="fi" hreflang="fi" data-title="Ajonaikainen kääntäminen" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/JIT" title="JIT – Turkish" lang="tr" hreflang="tr" data-title="JIT" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%86%D1%96%D1%8F" title="JIT-компіляція – Ukrainian" lang="uk" hreflang="uk" data-title="JIT-компіляція" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E5%8D%B3%E6%99%82%E7%B7%A8%E8%AD%AF" title="即時編譯 – Cantonese" lang="yue" hreflang="yue" data-title="即時編譯" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E5%8D%B3%E6%99%82%E7%B7%A8%E8%AD%AF" title="即時編譯 – Chinese" lang="zh" hreflang="zh" data-title="即時編譯" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q110546#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Just-in-time_compilation" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Just-in-time_compilation" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Just-in-time_compilation"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Just-in-time_compilation"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Just-in-time_compilation" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Just-in-time_compilation" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;oldid=1272920435" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Just-in-time_compilation&amp;id=1272920435&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJust-in-time_compilation"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJust-in-time_compilation"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Just-in-time_compilation&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Just-in-time_compilation&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q110546" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Dynamically compiling bytecode to machine code during runtime</div> <style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1246091330">.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}</style><table class="sidebar nomobile nowraplinks" style="margin-top: 0.5em;"><tbody><tr><th class="sidebar-title"><a href="/wiki/Execution_(computing)" title="Execution (computing)">Program execution</a></th></tr><tr><th class="sidebar-heading"> General concepts</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a href="/wiki/Computer_program" title="Computer program">Code</a></li> <li><a href="/wiki/Translator_(computing)" title="Translator (computing)">Translation</a> <ul><li><a href="/wiki/Compiler" title="Compiler">Compiler</a> <ul><li><a href="/wiki/Compile_time" title="Compile time">Compile time</a></li></ul></li> <li><a href="/wiki/Optimizing_compiler" title="Optimizing compiler">Optimizing compiler</a></li></ul></li> <li><a href="/wiki/Intermediate_representation" title="Intermediate representation">Intermediate representation</a> (IR)</li> <li><a href="/wiki/Execution_(computing)" title="Execution (computing)">Execution</a> <ul><li><a href="/wiki/Runtime_system" title="Runtime system">Runtime system</a> <ul><li><a href="/wiki/Execution_(computing)#Runtime" title="Execution (computing)">Runtime</a></li></ul></li> <li><a href="/wiki/Executable" title="Executable">Executable</a></li> <li><a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">Interpreter</a></li> <li><a href="/wiki/Virtual_machine" title="Virtual machine">Virtual machine</a></li></ul></li></ul></td> </tr><tr><th class="sidebar-heading"> Types of code</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a href="/wiki/Source_code" title="Source code">Source code</a></li> <li><a href="/wiki/Object_code" title="Object code">Object code</a></li> <li><a href="/wiki/Bytecode" title="Bytecode">Bytecode</a></li> <li><a href="/wiki/Machine_code" title="Machine code">Machine code</a></li> <li><a href="/wiki/Microcode" title="Microcode">Microcode</a></li></ul></td> </tr><tr><th class="sidebar-heading"> Compilation strategies</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a href="/wiki/Ahead-of-time_compilation" title="Ahead-of-time compilation">Ahead-of-time</a> (AOT)</li> <li><a class="mw-selflink selflink">Just-in-time</a> (JIT) <ul><li><a href="/wiki/Tracing_just-in-time_compilation" title="Tracing just-in-time compilation">Tracing just-in-time</a></li> <li><a href="/wiki/Compile_and_go_system" title="Compile and go system">Compile and go system</a></li></ul></li> <li><a href="/wiki/Precompilation" class="mw-redirect" title="Precompilation">Precompilation</a></li> <li><a href="/wiki/Source-to-source_compiler" title="Source-to-source compiler">Transcompilation</a></li> <li><a href="/wiki/Dynamic_recompilation" title="Dynamic recompilation">Recompilation</a></li></ul></td> </tr><tr><th class="sidebar-heading"> Notable runtimes</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a href="/wiki/Android_Runtime" title="Android Runtime">Android Runtime</a> (ART)</li> <li><a href="/wiki/BEAM_(Erlang_virtual_machine)" title="BEAM (Erlang virtual machine)">BEAM</a> (Erlang)</li> <li><a href="/wiki/Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a> (CLR) and&#160;<a href="/wiki/Mono_(software)#Code_Execution_Engine" title="Mono (software)">Mono</a></li> <li><a href="/wiki/CPython" title="CPython">CPython</a> and&#160;<a href="/wiki/PyPy" title="PyPy">PyPy</a></li> <li><a href="/wiki/Crt0" title="Crt0">crt0</a> (<a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> target-specific initializer)</li> <li><a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java virtual machine</a> (JVM)</li> <li><a href="/wiki/LuaJIT" title="LuaJIT">LuaJIT</a></li> <li><a href="/wiki/Objective-C" title="Objective-C">Objective-C</a> and&#160;<a href="/wiki/Swift_(programming_language)" title="Swift (programming language)">Swift</a>'s</li> <li><a href="/wiki/V8_(JavaScript_engine)" title="V8 (JavaScript engine)">V8</a> and&#160;<a href="/wiki/Node.js" title="Node.js">Node.js</a></li> <li><a href="/wiki/Zend_Engine" title="Zend Engine">Zend Engine</a> (PHP)</li></ul></td> </tr><tr><th class="sidebar-heading"> Notable compilers &amp; toolchains</th></tr><tr><td class="sidebar-content" style="text-align: left;"> <ul><li><a href="/wiki/GNU_Compiler_Collection" title="GNU Compiler Collection">GNU Compiler Collection</a> (GCC)</li> <li><a href="/wiki/LLVM" title="LLVM">LLVM</a> and&#160;<a href="/wiki/Clang" title="Clang">Clang</a></li> <li><a href="/wiki/Microsoft_Visual_C%2B%2B" title="Microsoft Visual C++">MSVC</a></li></ul></td> </tr><tr><td class="sidebar-navbar"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Program_execution" title="Template:Program execution"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Program_execution" title="Template talk:Program execution"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Program_execution" title="Special:EditPage/Template:Program execution"><abbr title="Edit this template">e</abbr></a></li></ul></div></td></tr></tbody></table> <p>In <a href="/wiki/Computing" title="Computing">computing</a>, <b>just-in-time</b> (<b>JIT</b>) <b>compilation</b> (also <b>dynamic translation</b> or <b>run-time compilations</b>)<sup id="cite_ref-Michigan_1-0" class="reference"><a href="#cite_note-Michigan-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup> is <a href="/wiki/Compiler" title="Compiler">compilation</a> (of <a href="/wiki/Source_code" title="Source code">computer code</a>) during execution of a program (at <a href="/wiki/Run_time_(program_lifecycle_phase)" class="mw-redirect" title="Run time (program lifecycle phase)">run time</a>) rather than before execution.<sup id="cite_ref-FOOTNOTEAycock2003_2-0" class="reference"><a href="#cite_note-FOOTNOTEAycock2003-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> This may consist of <a href="/wiki/Source_code_translation" class="mw-redirect" title="Source code translation">source code translation</a> but is more commonly <a href="/wiki/Bytecode" title="Bytecode">bytecode</a> translation to <a href="/wiki/Machine_code" title="Machine code">machine code</a>, which is then executed directly. A system implementing a JIT compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code. </p><p>JIT compilation is a combination of the two traditional approaches to translation to machine code&#8212;<a href="/wiki/Ahead-of-time_compilation" title="Ahead-of-time compilation">ahead-of-time compilation (AOT)</a>, and <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpretation</a>&#8212;and combines some advantages and drawbacks of both.<sup id="cite_ref-FOOTNOTEAycock2003_2-1" class="reference"><a href="#cite_note-FOOTNOTEAycock2003-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> Roughly, JIT compilation combines the speed of compiled code with the flexibility of interpretation, with the overhead of an interpreter and the additional overhead of compiling and <a href="/wiki/Linker_(computing)" title="Linker (computing)">linking</a> (not just interpreting). JIT compilation is a form of <a href="/wiki/Dynamic_compilation" title="Dynamic compilation">dynamic compilation</a>, and allows <a href="/wiki/Adaptive_optimization" title="Adaptive optimization">adaptive optimization</a> such as <a href="/wiki/Dynamic_recompilation" title="Dynamic recompilation">dynamic recompilation</a> and <a href="/wiki/Microarchitecture" title="Microarchitecture">microarchitecture</a>-specific speedups.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">&#91;</span>nb 1<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-Notario_4-0" class="reference"><a href="#cite_note-Notario-4"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> Interpretation and JIT compilation are particularly suited for <a href="/wiki/Dynamic_programming_language" title="Dynamic programming language">dynamic programming languages</a>, as the runtime system can handle <a href="/wiki/Late_binding" title="Late binding">late-bound</a> data types and enforce security guarantees. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The earliest published JIT compiler is generally attributed to work on <a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">LISP</a> by <a href="/wiki/John_McCarthy_(computer_scientist)" title="John McCarthy (computer scientist)">John McCarthy</a> in 1960.<sup id="cite_ref-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98_5-0" class="reference"><a href="#cite_note-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98-5"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> In his seminal paper <i>Recursive functions of symbolic expressions and their computation by machine, Part I</i>, he mentions functions that are translated during runtime, thereby sparing the need to save the compiler output to <a href="/wiki/Punch_card" class="mw-redirect" title="Punch card">punch cards</a><sup id="cite_ref-McCarthy1960_6-0" class="reference"><a href="#cite_note-McCarthy1960-6"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup> (although this would be more accurately known as a "<a href="/wiki/Compile_and_go_system" title="Compile and go system">Compile and go system</a>"). Another early example was by <a href="/wiki/Ken_Thompson" title="Ken Thompson">Ken Thompson</a>, who in 1968 gave one of the first applications of <a href="/wiki/Regular_expression" title="Regular expression">regular expressions</a>, here for <a href="/wiki/Pattern_matching" title="Pattern matching">pattern matching</a> in the text editor <a href="/wiki/QED_(text_editor)" title="QED (text editor)">QED</a>.<sup id="cite_ref-FOOTNOTEThompson1968_7-0" class="reference"><a href="#cite_note-FOOTNOTEThompson1968-7"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> For speed, Thompson implemented regular expression matching by JITing to <a href="/wiki/IBM_7094" class="mw-redirect" title="IBM 7094">IBM 7094</a> code on the <a href="/wiki/Compatible_Time-Sharing_System" title="Compatible Time-Sharing System">Compatible Time-Sharing System</a>.<sup id="cite_ref-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98_5-1" class="reference"><a href="#cite_note-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98-5"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> An influential technique for deriving compiled code from interpretation was pioneered by <a href="/wiki/James_G._Mitchell" title="James G. Mitchell">James G. Mitchell</a> in 1970, which he implemented for the experimental language <i>LC²</i>.<sup id="cite_ref-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.2_LC²,_p._98–99_8-0" class="reference"><a href="#cite_note-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.2_LC²,_p._98–99-8"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-Mitchell1970_9-0" class="reference"><a href="#cite_note-Mitchell1970-9"><span class="cite-bracket">&#91;</span>8<span class="cite-bracket">&#93;</span></a></sup> </p><p><a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a> (c. 1983) pioneered new aspects of JIT compilations. For example, translation to machine code was done on demand, and the result was cached for later use. When memory became scarce, the system would delete some of this code and regenerate it when it was needed again.<sup id="cite_ref-FOOTNOTEAycock2003_2-2" class="reference"><a href="#cite_note-FOOTNOTEAycock2003-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-Schiffman1984_10-0" class="reference"><a href="#cite_note-Schiffman1984-10"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup> Sun's <a href="/wiki/Self_(programming_language)" title="Self (programming language)">Self</a> language improved these techniques extensively and was at one point the fastest Smalltalk system in the world, achieving up to half the speed of optimized C<sup id="cite_ref-Self_11-0" class="reference"><a href="#cite_note-Self-11"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup> but with a fully object-oriented language. </p><p>Self was abandoned by Sun, but the research went into the Java language. The term "Just-in-time compilation" was borrowed from the manufacturing term "<a href="/wiki/Just_in_time_(business)" class="mw-redirect" title="Just in time (business)">Just in time</a>" and popularized by Java, with James Gosling using the term from 1993.<sup id="cite_ref-FOOTNOTEAycock20032.14_Java,_p._107,_footnote_13_12-0" class="reference"><a href="#cite_note-FOOTNOTEAycock20032.14_Java,_p._107,_footnote_13-12"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup> Currently JITing is used by most implementations of the <a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java Virtual Machine</a>, as <a href="/wiki/HotSpot_(virtual_machine)" title="HotSpot (virtual machine)">HotSpot</a> builds on, and extensively uses, this research base. </p><p>The HP project Dynamo was an experimental JIT compiler where the "bytecode" format and the machine code format were the same; the system optimized <a href="/wiki/PA-8000" title="PA-8000">PA-8000</a> machine code.<sup id="cite_ref-Bala_13-0" class="reference"><a href="#cite_note-Bala-13"><span class="cite-bracket">&#91;</span>12<span class="cite-bracket">&#93;</span></a></sup> Counterintuitively, this resulted in speed ups, in some cases of 30% since doing this permitted optimizations at the machine code level, for example, inlining code for better cache usage and optimizations of calls to dynamic libraries and many other run-time optimizations which conventional compilers are not able to attempt.<sup id="cite_ref-Jannotti_14-0" class="reference"><a href="#cite_note-Jannotti-14"><span class="cite-bracket">&#91;</span>13<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-Dynamo_15-0" class="reference"><a href="#cite_note-Dynamo-15"><span class="cite-bracket">&#91;</span>14<span class="cite-bracket">&#93;</span></a></sup> </p><p>In November 2020, <a href="/wiki/PHP" title="PHP">PHP</a> 8.0 introduced a JIT compiler.<sup id="cite_ref-Tung_16-0" class="reference"><a href="#cite_note-Tung-16"><span class="cite-bracket">&#91;</span>15<span class="cite-bracket">&#93;</span></a></sup> In October 2024, <a href="/wiki/CPython" title="CPython">CPython</a> introduced an experimental JIT compiler.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">&#91;</span>16<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Design">Design</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=2" title="Edit section: Design"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In a bytecode-compiled system, <a href="/wiki/Source_code" title="Source code">source code</a> is translated to an <a href="/wiki/Intermediate_representation" title="Intermediate representation">intermediate representation</a> known as <a href="/wiki/Bytecode" title="Bytecode">bytecode</a>. Bytecode is not the machine code for any particular computer, and may be <a href="/wiki/Software_portability" title="Software portability">portable</a> among computer architectures. The bytecode may then be interpreted by, or run on a <a href="/wiki/Virtual_machine" title="Virtual machine">virtual machine</a>. The JIT compiler reads the bytecodes in many sections (or in full, rarely) and compiles them dynamically into machine code so the program can run faster. This can be done per-file, per-function or even on any arbitrary code fragment; the code can be compiled when it is about to be executed (hence the name "just-in-time"), and then cached and reused later without needing to be recompiled. </p><p>By contrast, a traditional <i>interpreted virtual machine</i> will simply interpret the bytecode, generally with much lower performance. Some <i>interpreter</i>s even interpret source code, without the step of first compiling to bytecode, with even worse performance. <i>Statically-compiled code</i> or <i>native code</i> is compiled prior to deployment. A <i>dynamic compilation environment</i> is one in which the compiler can be used during execution. A common goal of using JIT techniques is to reach or surpass the performance of <a href="/wiki/Static_compilation" class="mw-redirect" title="Static compilation">static compilation</a>, while maintaining the advantages of bytecode interpretation: Much of the "heavy lifting" of parsing the original source code and performing basic optimization is often handled at compile time, prior to deployment: compilation from bytecode to machine code is much faster than compiling from source. The deployed bytecode is portable, unlike native code. Since the runtime has control over the compilation, like interpreted bytecode, it can run in a secure sandbox. Compilers from bytecode to machine code are easier to write, because the portable bytecode compiler has already done much of the work. </p><p>JIT code generally offers far better performance than interpreters. In addition, it can in some cases offer better performance than static compilation, as many optimizations are only feasible at run-time:<sup id="cite_ref-Croce_18-0" class="reference"><a href="#cite_note-Croce-18"><span class="cite-bracket">&#91;</span>17<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-stackoverflow-1_19-0" class="reference"><a href="#cite_note-stackoverflow-1-19"><span class="cite-bracket">&#91;</span>18<span class="cite-bracket">&#93;</span></a></sup> </p> <ol><li>The compilation can be optimized to the targeted CPU and the operating system model where the application runs. For example, JIT can choose <a href="/wiki/SSE2" title="SSE2">SSE2</a> vector CPU instructions when it detects that the CPU supports them. To obtain this level of optimization specificity with a static compiler, one must either compile a binary for each intended platform/architecture, or else include multiple versions of portions of the code within a single binary.</li> <li>The system is able to collect statistics about how the program is actually running in the environment it is in, and it can rearrange and recompile for optimum performance. However, some static compilers can also take profile information as input.</li> <li>The system can do global code optimizations (e.g. <a href="/wiki/Inline_expansion" title="Inline expansion">inlining</a> of library functions) without losing the advantages of dynamic linking and without the overheads inherent to static compilers and linkers. Specifically, when doing global inline substitutions, a static compilation process may need run-time checks and ensure that a virtual call would occur if the actual class of the object overrides the inlined method, and boundary condition checks on array accesses may need to be processed within loops. With just-in-time compilation in many cases this processing can be moved out of loops, often giving large increases of speed.</li> <li>Although this is possible with statically compiled garbage collected languages, a bytecode system can more easily rearrange executed code for better cache utilization.</li></ol> <p>Because a JIT must render and execute a native binary image at runtime, true machine-code JITs necessitate platforms that allow for data to be executed at runtime, making using such JITs on a <a href="/wiki/Harvard_architecture" title="Harvard architecture">Harvard architecture</a>-based machine impossible; the same can be said for certain operating systems and virtual machines as well. However, a special type of "JIT" may potentially <i>not</i> target the physical machine's CPU architecture, but rather an optimized VM bytecode where limitations on raw machine code prevail, especially where that bytecode's VM eventually leverages a JIT to native code.<sup id="cite_ref-stackoverflow-2_20-0" class="reference"><a href="#cite_note-stackoverflow-2-20"><span class="cite-bracket">&#91;</span>19<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Performance">Performance</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=3" title="Edit section: Performance"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>JIT causes a slight to noticeable delay in the initial execution of an application, due to the time taken to load and compile the input code. Sometimes this delay is called "startup time delay" or "warm-up time". In general, the more optimization JIT performs, the better the code it will generate, but the initial delay will also increase. A JIT compiler therefore has to make a trade-off between the compilation time and the quality of the code it hopes to generate. Startup time can include increased IO-bound operations in addition to JIT compilation: for example, the <i>rt.jar</i> class data file for the <a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java Virtual Machine</a> (JVM) is 40 MB and the JVM must seek a lot of data in this contextually huge file.<sup id="cite_ref-Haase_21-0" class="reference"><a href="#cite_note-Haase-21"><span class="cite-bracket">&#91;</span>20<span class="cite-bracket">&#93;</span></a></sup> </p><p>One possible optimization, used by Sun's <a href="/wiki/HotSpot_(virtual_machine)" title="HotSpot (virtual machine)">HotSpot</a> Java Virtual Machine, is to combine interpretation and JIT compilation. The application code is initially interpreted, but the JVM monitors which sequences of <a href="/wiki/Bytecode" title="Bytecode">bytecode</a> are frequently executed and translates them to machine code for direct execution on the hardware. For bytecode which is executed only a few times, this saves the compilation time and reduces the initial latency; for frequently executed bytecode, JIT compilation is used to run at high speed, after an initial phase of slow interpretation. Additionally, since a program spends most time executing a minority of its code, the reduced compilation time is significant. Finally, during the initial code interpretation, execution statistics can be collected before compilation, which helps to perform better optimization.<sup id="cite_ref-HotSpot_22-0" class="reference"><a href="#cite_note-HotSpot-22"><span class="cite-bracket">&#91;</span>21<span class="cite-bracket">&#93;</span></a></sup> </p><p>The correct tradeoff can vary due to circumstances. For example, Sun's Java Virtual Machine has two major modes—client and server. In client mode, minimal compilation and optimization is performed, to reduce startup time. In server mode, extensive compilation and optimization is performed, to maximize performance once the application is running by sacrificing startup time. Other Java just-in-time compilers have used a runtime measurement of the number of times a method has executed combined with the bytecode size of a method as a heuristic to decide when to compile.<sup id="cite_ref-Schilling_23-0" class="reference"><a href="#cite_note-Schilling-23"><span class="cite-bracket">&#91;</span>22<span class="cite-bracket">&#93;</span></a></sup> Still another uses the number of times executed combined with the detection of loops.<sup id="cite_ref-Suganuma_24-0" class="reference"><a href="#cite_note-Suganuma-24"><span class="cite-bracket">&#91;</span>23<span class="cite-bracket">&#93;</span></a></sup> In general, it is much harder to accurately predict which methods to optimize in short-running applications than in long-running ones.<sup id="cite_ref-Arnold-2000_25-0" class="reference"><a href="#cite_note-Arnold-2000-25"><span class="cite-bracket">&#91;</span>24<span class="cite-bracket">&#93;</span></a></sup> </p><p><a href="/wiki/Native_Image_Generator" title="Native Image Generator">Native Image Generator</a> (Ngen) by <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a> is another approach at reducing the initial delay.<sup id="cite_ref-MSDN_26-0" class="reference"><a href="#cite_note-MSDN-26"><span class="cite-bracket">&#91;</span>25<span class="cite-bracket">&#93;</span></a></sup> Ngen pre-compiles (or "pre-JITs") bytecode in a <a href="/wiki/Common_Intermediate_Language" title="Common Intermediate Language">Common Intermediate Language</a> image into machine native code. As a result, no runtime compilation is needed. <a href="/wiki/.NET_Framework" title=".NET Framework">.NET Framework</a> 2.0 shipped with <a href="/wiki/Visual_Studio_2005" class="mw-redirect" title="Visual Studio 2005">Visual Studio 2005</a> runs Ngen on all of the Microsoft library DLLs right after the installation. Pre-jitting provides a way to improve the startup time. However, the quality of code it generates might not be as good as the one that is JITed, for the same reasons why code compiled statically, without <a href="/wiki/Profile-guided_optimization" title="Profile-guided optimization">profile-guided optimization</a>, cannot be as good as JIT compiled code in the extreme case: the lack of profiling data to drive, for instance, inline caching.<sup id="cite_ref-Arnold-2005_27-0" class="reference"><a href="#cite_note-Arnold-2005-27"><span class="cite-bracket">&#91;</span>26<span class="cite-bracket">&#93;</span></a></sup> </p><p>There also exist Java implementations that combine an <a href="/wiki/Ahead-of-time_compilation" title="Ahead-of-time compilation">AOT (ahead-of-time) compiler</a> with either a JIT compiler (<a href="/wiki/Excelsior_JET" title="Excelsior JET">Excelsior JET</a>) or interpreter (<a href="/wiki/GNU_Compiler_for_Java" title="GNU Compiler for Java">GNU Compiler for Java</a>). </p><p>JIT compilation may not reliably achieve its goal, namely entering a steady state of improved performance after a short initial warmup period.<sup id="cite_ref-FOOTNOTEBarrettBolz-TereickKillickMount20173_28-0" class="reference"><a href="#cite_note-FOOTNOTEBarrettBolz-TereickKillickMount20173-28"><span class="cite-bracket">&#91;</span>27<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-FOOTNOTETrainiCortellessaDi_PompeoTucci20221_29-0" class="reference"><a href="#cite_note-FOOTNOTETrainiCortellessaDi_PompeoTucci20221-29"><span class="cite-bracket">&#91;</span>28<span class="cite-bracket">&#93;</span></a></sup> Across eight different virtual machines, <a href="#CITEREFBarrettBolz-TereickKillickMount2017">Barrett et al. (2017)</a> measured six widely-used <a href="/w/index.php?title=Microbenchmarks&amp;action=edit&amp;redlink=1" class="new" title="Microbenchmarks (page does not exist)">microbenchmarks</a> which are commonly used by virtual machine implementors as optimisation targets, running them repeatedly within a single process execution.<sup id="cite_ref-FOOTNOTEBarrettBolz-TereickKillickMount20175-6_30-0" class="reference"><a href="#cite_note-FOOTNOTEBarrettBolz-TereickKillickMount20175-6-30"><span class="cite-bracket">&#91;</span>29<span class="cite-bracket">&#93;</span></a></sup> On <a href="/wiki/Linux" title="Linux">Linux</a>, they found that 8.7% to 9.6% of process executions failed to reach a steady state of performance, 16.7% to 17.9% entered a steady state of <i>reduced</i> performance after a warmup period, and 56.5% pairings of a specific virtual machine running a specific benchmark failed to consistently see a steady-state non-degradation of performance across multiple executions (i.e., at least one execution failed to reach a steady state or saw reduced performance in the steady state). Even where an improved steady-state was reached, it sometimes took many hundreds of iterations.<sup id="cite_ref-FOOTNOTEBarrettBolz-TereickKillickMount201712-13_31-0" class="reference"><a href="#cite_note-FOOTNOTEBarrettBolz-TereickKillickMount201712-13-31"><span class="cite-bracket">&#91;</span>30<span class="cite-bracket">&#93;</span></a></sup> <a href="#CITEREFTrainiCortellessaDi_PompeoTucci2022">Traini et al. (2022)</a> instead focused on the HotSpot virtual machine but with a much wider array of benchmarks,<sup id="cite_ref-FOOTNOTETrainiCortellessaDi_PompeoTucci202217-23_32-0" class="reference"><a href="#cite_note-FOOTNOTETrainiCortellessaDi_PompeoTucci202217-23-32"><span class="cite-bracket">&#91;</span>31<span class="cite-bracket">&#93;</span></a></sup> finding that 10.9% of process executions failed to reach a steady state of performance, and 43.5% of benchmarks did not consistently attain a steady state across multiple executions.<sup id="cite_ref-FOOTNOTETrainiCortellessaDi_PompeoTucci202226-29_33-0" class="reference"><a href="#cite_note-FOOTNOTETrainiCortellessaDi_PompeoTucci202226-29-33"><span class="cite-bracket">&#91;</span>32<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Security">Security</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=4" title="Edit section: Security"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>JIT compilation fundamentally uses executable data, and thus poses security challenges and possible exploits. </p><p>Implementation of JIT compilation consists of compiling source code or byte code to machine code and executing it. This is generally done directly in memory: the JIT compiler outputs the machine code directly into memory and immediately executes it, rather than outputting it to disk and then invoking the code as a separate program, as in usual ahead of time compilation. In modern architectures this runs into a problem due to <a href="/wiki/Executable_space_protection" class="mw-redirect" title="Executable space protection">executable space protection</a>: arbitrary memory cannot be executed, as otherwise there is a potential security hole. Thus memory must be marked as executable; for security reasons this should be done <i>after</i> the code has been written to memory, and marked read-only, as writable/executable memory is a security hole (see <a href="/wiki/W%5EX" title="W^X">W^X</a>).<sup id="cite_ref-Bendersky_34-0" class="reference"><a href="#cite_note-Bendersky-34"><span class="cite-bracket">&#91;</span>33<span class="cite-bracket">&#93;</span></a></sup> For instance Firefox's JIT compiler for Javascript introduced this protection in a release version with Firefox 46.<sup id="cite_ref-De_Mooij_35-0" class="reference"><a href="#cite_note-De_Mooij-35"><span class="cite-bracket">&#91;</span>34<span class="cite-bracket">&#93;</span></a></sup> </p><p><a href="/wiki/JIT_spraying" title="JIT spraying">JIT spraying</a> is a class of <a href="/wiki/Computer_security_exploit" class="mw-redirect" title="Computer security exploit">computer security exploits</a> that use JIT compilation for <a href="/wiki/Heap_spraying" title="Heap spraying">heap spraying</a>: the resulting memory is then executable, which allows an exploit if execution can be moved into the heap. </p> <div class="mw-heading mw-heading2"><h2 id="Uses">Uses</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=5" title="Edit section: Uses"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Unreferenced_section plainlinks metadata ambox ambox-content ambox-Unreferenced" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">sources</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Just-in-time_compilation" title="Special:EditPage/Just-in-time compilation">improve this section</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <span class="date-container"><i>(<span class="date">June 2021</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p>JIT compilation can be applied to some programs, or can be used for certain capacities, particularly dynamic capacities such as <a href="/wiki/Regular_expression" title="Regular expression">regular expressions</a>. For example, a text editor may compile a regular expression provided at runtime to machine code to allow faster matching: this cannot be done ahead of time, as the pattern is only provided at runtime. Several modern <a href="/wiki/Runtime_environment" class="mw-redirect" title="Runtime environment">runtime environments</a> rely on JIT compilation for high-speed code execution, including most implementations of <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>, together with <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>'s <a href="/wiki/.NET" title=".NET">.NET</a>. Similarly, many regular-expression libraries feature JIT compilation of regular expressions, either to bytecode or to machine code. JIT compilation is also used in some emulators, in order to translate machine code from one CPU architecture to another. </p><p>A common implementation of JIT compilation is to first have AOT compilation to bytecode (<a href="/wiki/Virtual_machine" title="Virtual machine">virtual machine</a> code), known as <i>bytecode compilation</i>, and then have JIT compilation to machine code (dynamic compilation), rather than interpretation of the bytecode. This improves the runtime performance compared to interpretation, at the cost of lag due to compilation. JIT compilers translate continuously, as with interpreters, but caching of compiled code minimizes lag on future execution of the same code during a given run. Since only part of the program is compiled, there is significantly less lag than if the entire program were compiled prior to execution. </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=6" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1266661725">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright"> <li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:Octicons-terminal.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/24px-Octicons-terminal.svg.png" decoding="async" width="24" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/37px-Octicons-terminal.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/49px-Octicons-terminal.svg.png 2x" data-file-width="896" data-file-height="1024" /></a></span></span><span class="portalbox-link"><a href="/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a></span></li></ul> <ul><li><a href="/wiki/Binary_translation" title="Binary translation">Binary translation</a></li> <li><a href="/wiki/Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a></li> <li><a href="/wiki/Copy-and-patch" title="Copy-and-patch">Copy-and-patch</a></li> <li><a href="/wiki/Dynamic_compilation" title="Dynamic compilation">Dynamic compilation</a></li> <li><a href="/wiki/GNU_lightning" title="GNU lightning">GNU lightning</a></li> <li><a href="/wiki/LLVM" title="LLVM">LLVM</a></li> <li><a href="/wiki/OVPsim" title="OVPsim">OVPsim</a></li> <li><a href="/wiki/Self-modifying_code" title="Self-modifying code">Self-modifying code</a></li> <li><a href="/wiki/Tracing_just-in-time_compilation" title="Tracing just-in-time compilation">Tracing just-in-time compilation</a></li> <li><a href="/wiki/Transmeta_Crusoe" title="Transmeta Crusoe">Transmeta Crusoe</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=7" title="Edit section: Notes"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">Ahead-of-Time compilers can target specific microarchitectures as well, but the difference between AOT and JIT in that matter is one of portability. A JIT can render code tailored to the currently running CPU at runtime, whereas an AOT, in lieu of optimizing for a generalized subset of uarches, must know the target CPU in advance: such code may not only be not performant on other CPU types but may be outright unstable.</span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=8" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239543626" /><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-Michigan-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-Michigan_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation cs2"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20180326105004/http://eecs.umich.edu/eecs/research/area.html?areaname=languages-compilers"><i>Languages, Compilers, and Runtime Systems</i></a>, University of Michigan, Computer Science and Engineering, archived from <a rel="nofollow" class="external text" href="https://www.eecs.umich.edu/eecs/research/area.html?areaname=languages-compilers">the original</a> on March 26, 2018<span class="reference-accessdate">, retrieved <span class="nowrap">March 15,</span> 2018</span></cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Languages%2C+Compilers%2C+and+Runtime+Systems&amp;rft.pub=University+of+Michigan%2C+Computer+Science+and+Engineering&amp;rft_id=https%3A%2F%2Fwww.eecs.umich.edu%2Feecs%2Fresearch%2Farea.html%3Fareaname%3Dlanguages-compilers&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEAycock2003-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEAycock2003_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEAycock2003_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-FOOTNOTEAycock2003_2-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFAycock2003">Aycock 2003</a>.</span> </li> <li id="cite_note-Notario-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-Notario_4-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation news cs1"><a rel="nofollow" class="external text" href="https://blogs.msdn.microsoft.com/davidnotario/2005/08/15/does-the-jit-take-advantage-of-my-cpu/">"Does the JIT take advantage of my CPU?"</a>. <i>David Notario's WebLog</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2018-12-03</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=David+Notario%27s+WebLog&amp;rft.atitle=Does+the+JIT+take+advantage+of+my+CPU%3F&amp;rft_id=https%3A%2F%2Fblogs.msdn.microsoft.com%2Fdavidnotario%2F2005%2F08%2F15%2Fdoes-the-jit-take-advantage-of-my-cpu%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.1_Genesis,_p._98_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFAycock2003">Aycock 2003</a>, 2. JIT Compilation Techniques, 2.1 Genesis, p. 98.</span> </li> <li id="cite_note-McCarthy1960-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-McCarthy1960_6-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFMcCarthy1960" class="citation journal cs1"><a href="/wiki/John_McCarthy_(computer_scientist)" title="John McCarthy (computer scientist)">McCarthy, J.</a> (April 1960). "Recursive functions of symbolic expressions and their computation by machine, Part I". <i>Communications of the ACM</i>. <b>3</b> (4): <span class="nowrap">184–</span>195. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&#160;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.111.8833">10.1.1.111.8833</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F367177.367199">10.1145/367177.367199</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1489409">1489409</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Communications+of+the+ACM&amp;rft.atitle=Recursive+functions+of+symbolic+expressions+and+their+computation+by+machine%2C+Part+I&amp;rft.volume=3&amp;rft.issue=4&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E184-%3C%2Fspan%3E195&amp;rft.date=1960-04&amp;rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.111.8833%23id-name%3DCiteSeerX&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A1489409%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F367177.367199&amp;rft.aulast=McCarthy&amp;rft.aufirst=J.&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEThompson1968-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEThompson1968_7-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFThompson1968">Thompson 1968</a>.</span> </li> <li id="cite_note-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.2_LC²,_p._98–99-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEAycock20032._JIT_Compilation_Techniques,_2.2_LC²,_p._98–99_8-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFAycock2003">Aycock 2003</a>, 2. JIT Compilation Techniques, 2.2 LC², p. 98–99.</span> </li> <li id="cite_note-Mitchell1970-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-Mitchell1970_9-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFMitchell1970" class="citation journal cs1">Mitchell, J.G. (1970). "The design and construction of flexible and efficient interactive programming systems".</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=The+design+and+construction+of+flexible+and+efficient+interactive+programming+systems&amp;rft.date=1970&amp;rft.aulast=Mitchell&amp;rft.aufirst=J.G.&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_journal" title="Template:Cite journal">cite journal</a>}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">&#124;journal=</code> (<a href="/wiki/Help:CS1_errors#missing_periodical" title="Help:CS1 errors">help</a>)</span></span> </li> <li id="cite_note-Schiffman1984-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-Schiffman1984_10-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFDeutschSchiffman1984" class="citation book cs1">Deutsch, L.P.; Schiffman, A.M. (1984). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20040618105930/http://webpages.charter.net/allanms/popl84.pdf">"Efficient implementation of the smalltalk-80 system"</a> <span class="cs1-format">(PDF)</span>. <i>Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages - POPL '84</i>. pp.&#160;<span class="nowrap">297–</span>302. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F800017.800542">10.1145/800017.800542</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-89791-125-3" title="Special:BookSources/0-89791-125-3"><bdi>0-89791-125-3</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:3045432">3045432</a>. Archived from <a rel="nofollow" class="external text" href="http://webpages.charter.net/allanms/popl84.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2004-06-18.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.atitle=Efficient+implementation+of+the+smalltalk-80+system&amp;rft.btitle=Proceedings+of+the+11th+ACM+SIGACT-SIGPLAN+symposium+on+Principles+of+programming+languages+-+POPL+%2784&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E297-%3C%2Fspan%3E302&amp;rft.date=1984&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A3045432%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F800017.800542&amp;rft.isbn=0-89791-125-3&amp;rft.aulast=Deutsch&amp;rft.aufirst=L.P.&amp;rft.au=Schiffman%2C+A.M.&amp;rft_id=http%3A%2F%2Fwebpages.charter.net%2Fallanms%2Fpopl84.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Self-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-Self_11-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20061124224739/http://research.sun.com/jtech/pubs/97-pep.ps">"97-pep.ps"</a>. <i>research.sun.com</i>. Archived from <a rel="nofollow" class="external text" href="http://research.sun.com/jtech/pubs/97-pep.ps">the original</a> on 24 November 2006<span class="reference-accessdate">. Retrieved <span class="nowrap">15 January</span> 2022</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=research.sun.com&amp;rft.atitle=97-pep.ps&amp;rft_id=http%3A%2F%2Fresearch.sun.com%2Fjtech%2Fpubs%2F97-pep.ps&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEAycock20032.14_Java,_p._107,_footnote_13-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEAycock20032.14_Java,_p._107,_footnote_13_12-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFAycock2003">Aycock 2003</a>, 2.14 Java, p. 107, footnote 13.</span> </li> <li id="cite_note-Bala-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-Bala_13-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://cseweb.ucsd.edu/classes/sp00/cse231/dynamopldi.pdf">"Dynamo: A Transparent Dynamic Optimization System". Vasanth Bala, Evelyn Duesterwald, Sanjeev Banerjia. PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation. pages 1 to 12. DOI 10.1145/349299.349303. Retrieved March 28, 2012</a></span> </li> <li id="cite_note-Jannotti-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-Jannotti_14-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFJohn_Jannotti" class="citation web cs1">John Jannotti. <a rel="nofollow" class="external text" href="https://arstechnica.com/reviews/1q00/dynamo/dynamo-1.html">"HP's Dynamo"</a>. <i>Ars Technica</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2013-07-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Ars+Technica&amp;rft.atitle=HP%27s+Dynamo&amp;rft.au=John+Jannotti&amp;rft_id=https%3A%2F%2Farstechnica.com%2Freviews%2F1q00%2Fdynamo%2Fdynamo-1.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Dynamo-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-Dynamo_15-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1 cs1-prop-unfit"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20021019114947/http://www.hpl.hp.com/cambridge/projects/Dynamo/">"The HP Dynamo Project"</a>. Archived from the original on October 19, 2002<span class="reference-accessdate">. Retrieved <span class="nowrap">2016-04-12</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=The+HP+Dynamo+Project&amp;rft_id=http%3A%2F%2Fwww.hpl.hp.com%2Fcambridge%2Fprojects%2FDynamo%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Tung-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-Tung_16-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFTung2020" class="citation web cs1">Tung, Liam (27 November 2020). <a rel="nofollow" class="external text" href="https://www.zdnet.com/article/programming-language-php-8-is-out-this-new-jit-compiler-points-to-better-performance/">"Programming language PHP 8 is out: This new JIT compiler points to better performance"</a>. <i><a href="/wiki/ZDNet" class="mw-redirect" title="ZDNet">ZDNet</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">28 November</span> 2020</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=ZDNet&amp;rft.atitle=Programming+language+PHP+8+is+out%3A+This+new+JIT+compiler+points+to+better+performance&amp;rft.date=2020-11-27&amp;rft.aulast=Tung&amp;rft.aufirst=Liam&amp;rft_id=https%3A%2F%2Fwww.zdnet.com%2Farticle%2Fprogramming-language-php-8-is-out-this-new-jit-compiler-points-to-better-performance%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.python.org/3/whatsnew/3.13.html#whatsnew313-jit-compiler">"What's New In Python 3.13"</a>. <i>Python documentation</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-11-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Python+documentation&amp;rft.atitle=What%27s+New+In+Python+3.13&amp;rft_id=https%3A%2F%2Fdocs.python.org%2F3%2Fwhatsnew%2F3.13.html%23whatsnew313-jit-compiler&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Croce-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-Croce_18-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFCroce" class="citation web cs1">Croce, Louis. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180503145240/http://www.cs.columbia.edu/~aho/cs6998/Lectures/14-09-22_Croce_JIT.pdf">"Just in Time Compilation"</a> <span class="cs1-format">(PDF)</span>. <i>Columbia University</i>. Archived from <a rel="nofollow" class="external text" href="https://www.cs.columbia.edu/~aho/cs6998/Lectures/14-09-22_Croce_JIT.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2018-05-03.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Columbia+University&amp;rft.atitle=Just+in+Time+Compilation&amp;rft.aulast=Croce&amp;rft.aufirst=Louis&amp;rft_id=https%3A%2F%2Fwww.cs.columbia.edu%2F~aho%2Fcs6998%2FLectures%2F14-09-22_Croce_JIT.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-stackoverflow-1-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-stackoverflow-1_19-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://stackoverflow.com/q/2106380">"What are the advantages of JIT vs. AOT compilation"</a>. <i>Stack Overflow</i>. Jan 21, 2010.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Stack+Overflow&amp;rft.atitle=What+are+the+advantages+of+JIT+vs.+AOT+compilation&amp;rft.date=2010-01-21&amp;rft_id=https%3A%2F%2Fstackoverflow.com%2Fq%2F2106380&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-stackoverflow-2-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-stackoverflow-2_20-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://stackoverflow.com/q/42919339">"Compile a JIT based lang to Webassembly"</a>. <i>Stack Overflow</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2018-12-04</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Stack+Overflow&amp;rft.atitle=Compile+a+JIT+based+lang+to+Webassembly&amp;rft_id=https%3A%2F%2Fstackoverflow.com%2Fq%2F42919339&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Haase-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-Haase_21-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFHaase2007" class="citation web cs1">Haase, Chet (May 2007). <a rel="nofollow" class="external text" href="http://java.sun.com/developer/technicalArticles/javase/consumerjre#Quickstarter">"Consumer JRE: Leaner, Meaner Java Technology"</a>. Sun Microsystems<span class="reference-accessdate">. Retrieved <span class="nowrap">2007-07-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Consumer+JRE%3A+Leaner%2C+Meaner+Java+Technology&amp;rft.pub=Sun+Microsystems&amp;rft.date=2007-05&amp;rft.aulast=Haase&amp;rft.aufirst=Chet&amp;rft_id=http%3A%2F%2Fjava.sun.com%2Fdeveloper%2FtechnicalArticles%2Fjavase%2Fconsumerjre%23Quickstarter&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-HotSpot-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-HotSpot_22-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/whitepaper-135217.html">"The Java HotSpot Performance Engine Architecture"</a>. Oracle.com<span class="reference-accessdate">. Retrieved <span class="nowrap">2013-07-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=The+Java+HotSpot+Performance+Engine+Architecture&amp;rft.pub=Oracle.com&amp;rft_id=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fwhitepaper-135217.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Schilling-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-Schilling_23-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFSchilling2003" class="citation journal cs1">Schilling, Jonathan L. (February 2003). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150924095409/http://www.sco.com/developers/java/news/jit-heur.pdf">"The simplest heuristics may be the best in Java JIT compilers"</a> <span class="cs1-format">(PDF)</span>. <i><a href="/wiki/SIGPLAN_Notices" class="mw-redirect" title="SIGPLAN Notices">SIGPLAN Notices</a></i>. <b>38</b> (2): <span class="nowrap">36–</span>46. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F772970.772975">10.1145/772970.772975</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15117148">15117148</a>. Archived from <a rel="nofollow" class="external text" href="http://www.sco.com/developers/java/news/jit-heur.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2015-09-24.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=SIGPLAN+Notices&amp;rft.atitle=The+simplest+heuristics+may+be+the+best+in+Java+JIT+compilers&amp;rft.volume=38&amp;rft.issue=2&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E36-%3C%2Fspan%3E46&amp;rft.date=2003-02&amp;rft_id=info%3Adoi%2F10.1145%2F772970.772975&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A15117148%23id-name%3DS2CID&amp;rft.aulast=Schilling&amp;rft.aufirst=Jonathan+L.&amp;rft_id=http%3A%2F%2Fwww.sco.com%2Fdevelopers%2Fjava%2Fnews%2Fjit-heur.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Suganuma-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-Suganuma_24-0">^</a></b></span> <span class="reference-text">Toshio Suganuma, Toshiaki Yasue, Motohiro Kawahito, Hideaki Komatsu, Toshio Nakatani, "A dynamic optimization framework for a Java just-in-time compiler", <i>Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications</i> (OOPSLA '01), pp. 180–195, October 14–18, 2001.</span> </li> <li id="cite_note-Arnold-2000-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-Arnold-2000_25-0">^</a></b></span> <span class="reference-text">Matthew Arnold, Michael Hind, Barbara G. Ryder, "An Empirical Study of Selective Optimization", <i>Proceedings of the 13th International Workshop on Languages and Compilers for Parallel Computing-Revised Papers</i>, pp. 49–67, August 10–12, 2000.</span> </li> <li id="cite_note-MSDN-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-MSDN_26-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://msdn2.microsoft.com/en-us/library/6t9t5wcf(VS.80).aspx">"Native Image Generator (Ngen.exe)"</a>. Msdn2.microsoft.com. 5 December 2006<span class="reference-accessdate">. Retrieved <span class="nowrap">2013-07-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Native+Image+Generator+%28Ngen.exe%29&amp;rft.pub=Msdn2.microsoft.com&amp;rft.date=2006-12-05&amp;rft_id=http%3A%2F%2Fmsdn2.microsoft.com%2Fen-us%2Flibrary%2F6t9t5wcf%28VS.80%29.aspx&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-Arnold-2005-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-Arnold-2005_27-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFSweeney2005" class="citation journal cs1">Sweeney, Arnold (February 2005). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160629150108/http://researcher.ibm.com/researcher/files/us-hindm/RC23429.pdf">"A Survey of Adaptive Optimization in Virtual Machines"</a> <span class="cs1-format">(PDF)</span>. <i><a href="/wiki/Proceedings_of_the_IEEE" title="Proceedings of the IEEE">Proceedings of the IEEE</a></i>. <b>92</b> (2): <span class="nowrap">449–</span>466. Archived from <a rel="nofollow" class="external text" href="http://researcher.ibm.com/researcher/files/us-hindm/RC23429.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2016-06-29.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Proceedings+of+the+IEEE&amp;rft.atitle=A+Survey+of+Adaptive+Optimization+in+Virtual+Machines&amp;rft.volume=92&amp;rft.issue=2&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E449-%3C%2Fspan%3E466&amp;rft.date=2005-02&amp;rft.aulast=Sweeney&amp;rft.aufirst=Arnold&amp;rft_id=http%3A%2F%2Fresearcher.ibm.com%2Fresearcher%2Ffiles%2Fus-hindm%2FRC23429.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEBarrettBolz-TereickKillickMount20173-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEBarrettBolz-TereickKillickMount20173_28-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFBarrettBolz-TereickKillickMount2017">Barrett et al. 2017</a>, p.&#160;3.</span> </li> <li id="cite_note-FOOTNOTETrainiCortellessaDi_PompeoTucci20221-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTETrainiCortellessaDi_PompeoTucci20221_29-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFTrainiCortellessaDi_PompeoTucci2022">Traini et al. 2022</a>, p.&#160;1.</span> </li> <li id="cite_note-FOOTNOTEBarrettBolz-TereickKillickMount20175-6-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEBarrettBolz-TereickKillickMount20175-6_30-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFBarrettBolz-TereickKillickMount2017">Barrett et al. 2017</a>, p.&#160;5-6.</span> </li> <li id="cite_note-FOOTNOTEBarrettBolz-TereickKillickMount201712-13-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEBarrettBolz-TereickKillickMount201712-13_31-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFBarrettBolz-TereickKillickMount2017">Barrett et al. 2017</a>, p.&#160;12-13.</span> </li> <li id="cite_note-FOOTNOTETrainiCortellessaDi_PompeoTucci202217-23-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTETrainiCortellessaDi_PompeoTucci202217-23_32-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFTrainiCortellessaDi_PompeoTucci2022">Traini et al. 2022</a>, p.&#160;17-23.</span> </li> <li id="cite_note-FOOTNOTETrainiCortellessaDi_PompeoTucci202226-29-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTETrainiCortellessaDi_PompeoTucci202226-29_33-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFTrainiCortellessaDi_PompeoTucci2022">Traini et al. 2022</a>, p.&#160;26-29.</span> </li> <li id="cite_note-Bendersky-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-Bendersky_34-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://eli.thegreenplace.net/2013/11/05/how-to-jit-an-introduction/">"How to JIT&#160;– an introduction", Eli Bendersky, November 5th, 2013 at 5:59 am</a></span> </li> <li id="cite_note-De_Mooij-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-De_Mooij_35-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFDe_Mooij" class="citation web cs1">De Mooij, Jan. <a rel="nofollow" class="external text" href="http://jandemooij.nl/blog/2015/12/29/wx-jit-code-enabled-in-firefox/">"W^X JIT-code enabled in Firefox"</a>. <i>Jan De Mooij</i><span class="reference-accessdate">. Retrieved <span class="nowrap">11 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Jan+De+Mooij&amp;rft.atitle=W%5EX+JIT-code+enabled+in+Firefox&amp;rft.aulast=De+Mooij&amp;rft.aufirst=Jan&amp;rft_id=http%3A%2F%2Fjandemooij.nl%2Fblog%2F2015%2F12%2F29%2Fwx-jit-code-enabled-in-firefox%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Bibliography">Bibliography</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=9" title="Edit section: Bibliography"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFBarrettBolz-TereickKillickMount2017" class="citation journal cs1">Barrett, Ed; Bolz-Tereick, Carl Friedrich; Killick, Rebecca; Mount, Sarah; Tratt, Laurence (12 October 2017). "Virtual machine warmup blows hot and cold". <i>Proceedings of the ACM on Programming Languages</i>. <b>1</b>: <span class="nowrap">1–</span>27. <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1602.00602">1602.00602</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3133876">10.1145/3133876</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1036324">1036324</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Proceedings+of+the+ACM+on+Programming+Languages&amp;rft.atitle=Virtual+machine+warmup+blows+hot+and+cold&amp;rft.volume=1&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E1-%3C%2Fspan%3E27&amp;rft.date=2017-10-12&amp;rft_id=info%3Aarxiv%2F1602.00602&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A1036324%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F3133876&amp;rft.aulast=Barrett&amp;rft.aufirst=Ed&amp;rft.au=Bolz-Tereick%2C+Carl+Friedrich&amp;rft.au=Killick%2C+Rebecca&amp;rft.au=Mount%2C+Sarah&amp;rft.au=Tratt%2C+Laurence&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFTrainiCortellessaDi_PompeoTucci2022" class="citation journal cs1">Traini, Luca; Cortellessa, Vittorio; Di Pompeo, Daniele; Tucci, Michele (30 September 2022). "Towards effective assessment of steady state performance in Java software: Are we there yet?". <i>Empirical Software Engineering</i>. <b>28</b>. <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/2209.15369">2209.15369</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2Fs10664-022-10247-x">10.1007/s10664-022-10247-x</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:252668652">252668652</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Empirical+Software+Engineering&amp;rft.atitle=Towards+effective+assessment+of+steady+state+performance+in+Java+software%3A+Are+we+there+yet%3F&amp;rft.volume=28&amp;rft.date=2022-09-30&amp;rft_id=info%3Aarxiv%2F2209.15369&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A252668652%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1007%2Fs10664-022-10247-x&amp;rft.aulast=Traini&amp;rft.aufirst=Luca&amp;rft.au=Cortellessa%2C+Vittorio&amp;rft.au=Di+Pompeo%2C+Daniele&amp;rft.au=Tucci%2C+Michele&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFAycock2003" class="citation journal cs1">Aycock, J. (June 2003). "A brief history of just-in-time". <i>ACM Computing Surveys</i>. <b>35</b> (2): <span class="nowrap">97–</span>113. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&#160;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.97.3985">10.1.1.97.3985</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F857076.857077">10.1145/857076.857077</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15345671">15345671</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=ACM+Computing+Surveys&amp;rft.atitle=A+brief+history+of+just-in-time&amp;rft.volume=35&amp;rft.issue=2&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E97-%3C%2Fspan%3E113&amp;rft.date=2003-06&amp;rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.97.3985%23id-name%3DCiteSeerX&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A15345671%23id-name%3DS2CID&amp;rft_id=info%3Adoi%2F10.1145%2F857076.857077&amp;rft.aulast=Aycock&amp;rft.aufirst=J.&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFThompson1968" class="citation journal cs1"><a href="/wiki/Ken_Thompson" title="Ken Thompson">Thompson, K.</a> (1968). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F363347.363387">"Programming Techniques: Regular expression search algorithm"</a>. <i>Communications of the ACM</i>. <b>11</b> (6): <span class="nowrap">419–</span>422. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F363347.363387">10.1145/363347.363387</a></span>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&#160;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:21260384">21260384</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Communications+of+the+ACM&amp;rft.atitle=Programming+Techniques%3A+Regular+expression+search+algorithm&amp;rft.volume=11&amp;rft.issue=6&amp;rft.pages=%3Cspan+class%3D%22nowrap%22%3E419-%3C%2Fspan%3E422&amp;rft.date=1968&amp;rft_id=info%3Adoi%2F10.1145%2F363347.363387&amp;rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A21260384%23id-name%3DS2CID&amp;rft.aulast=Thompson&amp;rft.aufirst=K.&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1145%252F363347.363387&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AJust-in-time+compilation" class="Z3988"></span></li></ul> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Just-in-time_compilation&amp;action=edit&amp;section=10" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20020905042721/http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?just-in-time">Free Online Dictionary of Computing entry</a></li> <li><a rel="nofollow" class="external text" href="https://developer.mozilla.org/En/Nanojit">Mozilla Nanojit</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120509215101/https://developer.mozilla.org/En/Nanojit">Archived</a> 2012-05-09 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>: A small, cross-platform C++ library that emits machine code. It is used as the JIT for the Mozilla <a href="/wiki/Tamarin_(JavaScript_engine)" class="mw-redirect" title="Tamarin (JavaScript engine)">Tamarin</a> and <a href="/wiki/SpiderMonkey_(JavaScript_engine)" class="mw-redirect" title="SpiderMonkey (JavaScript engine)">SpiderMonkey</a> Javascript engines.</li> <li><a rel="nofollow" class="external text" href="http://software.intel.com/sites/products/documentation/hpc/vtune/windows/jit_profiling.pdf">Profiling Runtime Generated and Interpreted Code using the VTune Performance Analyzer</a></li></ul> <!-- NewPP limit report Parsed by mw‐api‐int.codfw.main‐5f44755944‐hf4wv Cached time: 20250302033353 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.463 seconds Real time usage: 1.008 seconds Preprocessor visited node count: 2730/1000000 Post‐expand include size: 62407/2097152 bytes Template argument size: 3191/2097152 bytes Highest expansion depth: 12/100 Expensive parser function count: 3/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 99767/5000000 bytes Lua time usage: 0.306/10.000 seconds Lua memory usage: 7654782/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 935.922 1 -total 64.23% 601.176 2 Template:Reflist 53.44% 500.162 1 Template:Citation 8.59% 80.415 1 Template:Program_execution 7.85% 73.423 14 Template:Sfn 7.42% 69.452 1 Template:Short_description 5.49% 51.349 1 Template:Unreferenced_section 5.00% 46.785 1 Template:Unreferenced 4.76% 44.578 1 Template:Ambox 4.35% 40.668 8 Template:Cite_journal --> <!-- Saved in parser cache with key enwiki:pcache:220632:|#|:idhash:canonical and timestamp 20250302033353 and revision id 1272920435. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&amp;type=1x1&amp;usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Just-in-time_compilation&amp;oldid=1272920435">https://en.wikipedia.org/w/index.php?title=Just-in-time_compilation&amp;oldid=1272920435</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Compiler_construction" title="Category:Compiler construction">Compiler construction</a></li><li><a href="/wiki/Category:Emulation_software" title="Category:Emulation software">Emulation software</a></li><li><a href="/wiki/Category:Virtualization" title="Category:Virtualization">Virtualization</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:CS1_errors:_missing_periodical" title="Category:CS1 errors: missing periodical">CS1 errors: missing periodical</a></li><li><a href="/wiki/Category:CS1:_unfit_URL" title="Category:CS1: unfit URL">CS1: unfit URL</a></li><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_June_2021" title="Category:Articles needing additional references from June 2021">Articles needing additional references from June 2021</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li><li><a href="/wiki/Category:Webarchive_template_wayback_links" title="Category:Webarchive template wayback links">Webarchive template wayback links</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 30 January 2025, at 21:20<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Just-in-time_compilation&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" lang="en" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">Just-in-time compilation</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>27 languages</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="mw-portlet mw-portlet-dock-bottom emptyPortlet" id="p-dock-bottom"> <ul> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.next-6567bdfc66-gtqb9","wgBackendResponseTime":171,"wgPageParseReport":{"limitreport":{"cputime":"0.463","walltime":"1.008","ppvisitednodes":{"value":2730,"limit":1000000},"postexpandincludesize":{"value":62407,"limit":2097152},"templateargumentsize":{"value":3191,"limit":2097152},"expansiondepth":{"value":12,"limit":100},"expensivefunctioncount":{"value":3,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":99767,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 935.922 1 -total"," 64.23% 601.176 2 Template:Reflist"," 53.44% 500.162 1 Template:Citation"," 8.59% 80.415 1 Template:Program_execution"," 7.85% 73.423 14 Template:Sfn"," 7.42% 69.452 1 Template:Short_description"," 5.49% 51.349 1 Template:Unreferenced_section"," 5.00% 46.785 1 Template:Unreferenced"," 4.76% 44.578 1 Template:Ambox"," 4.35% 40.668 8 Template:Cite_journal"]},"scribunto":{"limitreport-timeusage":{"value":"0.306","limit":"10.000"},"limitreport-memusage":{"value":7654782,"limit":52428800},"limitreport-logs":"anchor_id_list = table#1 {\n [\"CITEREFAycock2003\"] = 1,\n [\"CITEREFBarrettBolz-TereickKillickMount2017\"] = 1,\n [\"CITEREFCroce\"] = 1,\n [\"CITEREFDe_Mooij\"] = 1,\n [\"CITEREFDeutschSchiffman1984\"] = 1,\n [\"CITEREFHaase2007\"] = 1,\n [\"CITEREFJohn_Jannotti\"] = 1,\n [\"CITEREFMcCarthy1960\"] = 1,\n [\"CITEREFMitchell1970\"] = 1,\n [\"CITEREFSchilling2003\"] = 1,\n [\"CITEREFSweeney2005\"] = 1,\n [\"CITEREFThompson1968\"] = 1,\n [\"CITEREFTrainiCortellessaDi_PompeoTucci2022\"] = 1,\n [\"CITEREFTung2020\"] = 1,\n}\ntemplate_list = table#1 {\n [\"Citation\"] = 1,\n [\"Cite book\"] = 1,\n [\"Cite journal\"] = 8,\n [\"Cite news\"] = 1,\n [\"Cite web\"] = 12,\n [\"Harvtxt\"] = 2,\n [\"Portal\"] = 1,\n [\"Program execution\"] = 1,\n [\"Reflist\"] = 2,\n [\"Refn\"] = 1,\n [\"Sfn\"] = 14,\n [\"Short description\"] = 1,\n [\"Unreferenced section\"] = 1,\n [\"Webarchive\"] = 1,\n}\narticle_whitelist = table#1 {\n}\nciteref_patterns = table#1 {\n}\n"},"cachereport":{"origin":"mw-api-int.codfw.main-5f44755944-hf4wv","timestamp":"20250302033353","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Just-in-time compilation","url":"https:\/\/en.wikipedia.org\/wiki\/Just-in-time_compilation","sameAs":"http:\/\/www.wikidata.org\/entity\/Q110546","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q110546","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2003-05-03T13:07:15Z","dateModified":"2025-01-30T21:20:23Z","headline":"dynamically compiling bytecode to machine code during runtime"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10