.NET Internals
06.07.2018, 08:30 Uhr
So funktioniert der Just-in-Time-Compiler von .NET
MVP Matt Warren hat sich den Just-in-Time-Compiler (JIT) von .NET genauer angesehen. In einem Blogpost beschreibt er, was er herausgefunden hat.
Der Übersetzungsprozess von .NET ist zweistufig. Der Compiler in Visual Studio beziehungsweise Roslyn erzeugt aus dem C#-, F#- oder Visual-Basic-Quellcode die Intermediate Language (IL). Dateien mit diesem Code werden dann auf den Zielrechner verteilt. Dort sorgt die Common Language Runtime (CLR) dann für die Ausführung.
Matt war lange Zeit der Meinung, dass der JIT ein einfacher Service ist, der IL-Code entgegennimmt und Maschinencode zurückgibt. Aber die Verhältnisse sind wohl etwas komplizierter, wie er in seinem Blogpost dokumentiert. So arbeiten die CLR und der JIT intensiv zusammen. Sie sind "joined at the hip".
Zentrales Modul in der CLR ist die Execution Engine (EE). Diese exportiert genauso wie der JIT über ein Interface, dass der jeweilige Partner implementieren muss. Über diese Methoden kommunizieren die beiden während der Ausführung. Die Details finden Sie im Blogpost.