{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/4331","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/4331/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/4331/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/4331/events","html_url":"https://github.com/dotnet/coreclr/issues/4331","id":148357993,"number":4331,"title":"Introduce a tiered JIT","user":{"login":"GSPP","id":12032350,"avatar_url":"https://avatars.githubusercontent.com/u/12032350?v=3","gravatar_id":"","url":"https://api.github.com/users/GSPP","html_url":"https://github.com/GSPP","followers_url":"https://api.github.com/users/GSPP/followers","following_url":"https://api.github.com/users/GSPP/following{/other_user}","gists_url":"https://api.github.com/users/GSPP/gists{/gist_id}","starred_url":"https://api.github.com/users/GSPP/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GSPP/subscriptions","organizations_url":"https://api.github.com/users/GSPP/orgs","repos_url":"https://api.github.com/users/GSPP/repos","events_url":"https://api.github.com/users/GSPP/events{/privacy}","received_events_url":"https://api.github.com/users/GSPP/received_events","type":"User","site_admin":false},"labels":[{"id":196940911,"url":"https://api.github.com/repos/dotnet/coreclr/labels/area-CodeGen","name":"area-CodeGen","color":"d4c5f9","default":false},{"id":190283555,"url":"https://api.github.com/repos/dotnet/coreclr/labels/optimization","name":"optimization","color":"0052cc","default":false},{"id":172143008,"url":"https://api.github.com/repos/dotnet/coreclr/labels/question","name":"question","color":"1d76db","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/dotnet/coreclr/milestones/5","html_url":"https://github.com/dotnet/coreclr/milestones/Future","labels_url":"https://api.github.com/repos/dotnet/coreclr/milestones/5/labels","id":1328081,"number":5,"title":"Future","description":"Milestone tracking the issues that have been triaged for after 1.0.0-rtm","creator":{"login":"joshfree","id":1302850,"avatar_url":"https://avatars.githubusercontent.com/u/1302850?v=3","gravatar_id":"","url":"https://api.github.com/users/joshfree","html_url":"https://github.com/joshfree","followers_url":"https://api.github.com/users/joshfree/followers","following_url":"https://api.github.com/users/joshfree/following{/other_user}","gists_url":"https://api.github.com/users/joshfree/gists{/gist_id}","starred_url":"https://api.github.com/users/joshfree/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joshfree/subscriptions","organizations_url":"https://api.github.com/users/joshfree/orgs","repos_url":"https://api.github.com/users/joshfree/repos","events_url":"https://api.github.com/users/joshfree/events{/privacy}","received_events_url":"https://api.github.com/users/joshfree/received_events","type":"User","site_admin":false},"open_issues":624,"closed_issues":364,"state":"open","created_at":"2015-09-29T00:26:07Z","updated_at":"2016-11-29T22:07:44Z","due_on":null,"closed_at":null},"comments":21,"created_at":"2016-04-14T13:14:30Z","updated_at":"2016-12-01T02:00:50Z","closed_at":null,"body":"Why is the .NET JIT not tiered?\n\nThe JIT has two primary design goals: Fast startup time and high steady-state throughput.\n\nAt first, these goals appear at odds. But with a two-tier JIT design they are both attainable:\n1. All code starts out interpreted. This results in extremely fast startup time (faster than RyuJIT). Example: The `Main` method is almost always cold and jitting it is a waste of time.\n2. Code that runs often is jitted using a very high quality code generator. Very few methods will be hot (1%?). Therefore, throughput of the high quality JIT does not matter much. It can spend as much time as a C compiler spends to generate very good code. Also, it can _assume_ that the code is hot. It can inline like crazy and unroll loops. Code size is not a concern.\n\nReaching this architecture does not seem too costly:\n1. Writing an interpreter seems cheap compared to a JIT.\n2. A high quality code generator must be created. This could be VC, or the LLILC project.\n3. It must be possible to transition interpreted running code to compiled code. This is possible; the JVM does it. It's called on stack replacement (OSR).\n\nIs this idea being pursued by the JIT team?\n\n.NET runs on 100's of millions of servers. I feel like a lot of performance is left on the table and millions of servers are wasted for customers because of suboptimal code gen.\n"},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/264056623","html_url":"https://github.com/dotnet/coreclr/issues/4331#issuecomment-264056623","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/4331","id":264056623,"user":{"login":"DemiMarie","id":6395399,"avatar_url":"https://avatars.githubusercontent.com/u/6395399?v=3","gravatar_id":"","url":"https://api.github.com/users/DemiMarie","html_url":"https://github.com/DemiMarie","followers_url":"https://api.github.com/users/DemiMarie/followers","following_url":"https://api.github.com/users/DemiMarie/following{/other_user}","gists_url":"https://api.github.com/users/DemiMarie/gists{/gist_id}","starred_url":"https://api.github.com/users/DemiMarie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DemiMarie/subscriptions","organizations_url":"https://api.github.com/users/DemiMarie/orgs","repos_url":"https://api.github.com/users/DemiMarie/repos","events_url":"https://api.github.com/users/DemiMarie/events{/privacy}","received_events_url":"https://api.github.com/users/DemiMarie/received_events","type":"User","site_admin":false},"created_at":"2016-12-01T02:00:50Z","updated_at":"2016-12-01T02:00:50Z","body":"Have there been any more thoughts on this? @russellhadley CoreCLR has been released and RyuJIT has been ported to (at least) x86 – what is next on the roadmap?"}}
{"actor":{"display_login":"DemiMarie"}}