ZJIT derleyicisi SSA optimizasyonunda kanonikleştirme tekniğini genişletti
Öne çıkanlar
- ZJIT projesinde blok içi kanonikleştirme yaklaşımı küresel dominatör yapısına genişletildi.
- Koşullu dallanmalarda hedeflenen bloklara boolean sabitleri atanarak gereksiz dallar elendi.
- Yeniden yazma haritaları dominator ağacı boyunca aktarılarak tip koruma kodları azaltıldı.
Ruby için geliştirilen ZJIT projesinde ara kod optimizasyonlarını geliştirmek amacıyla kısmi statik tekil bilgi (SSI) ilkelerine dayanan yeni bir kanonikleştirme yöntemi uygulandı. Geliştirici ekibi, temel bloklar genelinde gereksiz tip kontrollerini ve koşullu dallanmaları temizlemek için dominator ağacı üzerinde çalışan bir yeniden yazma mekanizması kurdu.
İlk olarak blok düzeyinde geliştirilen yöntem, ardışık tip kontrollerinin birbirine bağlanmasını sağlayarak sabit katlama adımlarında gereksiz korumaların silinmesine olanak tanıdı. Çalışmanın devamında ters sonradan sıralama (RPO) ve doğrudan dominator haritası kullanılarak işlem küresel seviyeye taşındı. Böylece dominatör bloklardaki tip ve sabit bilgileri alt bloklara kopyalanarak aktarıldı.
Söz konusu yaklaşım koşullu dallanmalarda da kullanılarak dalların hedeflerine boolean sabit değerleri atandı. Bu değişiklik sayesinde sentetik olarak üretilen dallanmalardaki gereksiz kontroller elendi ve ara kod yapısı daha sade hale getirildi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.