Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
IL ve JIT Compiler: Tiered Compilation, Dynamic PGO, Inlining ve Escape Analysis
JIT bir method'u tek seferde değil kademeli derler: önce optimizasyonsuz Tier0, sonra sayaçlı bir kopya, en son toplanan profile göre optimize edilmiş Tier1. Bookstore koduyla IL'in stack tabanlı yapısını, OSR'ı, Dynamic PGO'nun interface çağrısını tip kontrolüyle doğrudan koda çevirmesini, bounds check eliminasyonunu ve .NET 10'un escape analysis'iyle 40 byte'lık allocation'ın sıfıra inmesini DOTNET_JitDisasm çıktılarıyla gösteriyor, V8'in hidden class ve deoptimization'ıyla karşılaştırıyoruz.
Kod Nasıl Çalışır Hâle Gelir: Compiler, Interpreter, JIT ve AOT'nin Haritası
Derlenen ya da yorumlanan dil diye bir ayrım yok; aynı aşamaların hangisinin build'de, hangisinin çalışma anında yapıldığı implementation'ın seçimi. 1.500 kez çağrılan bir C# method'u JIT tarafından yalnız üç kez derleniyor, TypeScript tipleri build'de kontrol edilip siliniyor, V8 ise kodu önce yorumlayıp sonra Maglev ve TurboFan ile derliyor. Yazı compiler pipeline'ını gerçek çıktılarla gösteriyor ve seri boyunca yazılacak Bookstore filtre dilinin grammar'ını çıkarıyor.