Thesis defense of Nahuel Palumbo

DRUID - Métacompilation des compilateurs JIT de base

on November 28, 2025 at 10:00 am at INRIA Lille

Les machines virtuelles (VM) combinent des interprètes et des compilateurs à la volée (JIT) pour obtenir de bonnes performances. Cependant, maintenir plusieurs moteurs d'exécution augmente considérablement les coûts de développement et de maintenance. Alors que des travaux antérieurs se sont intéressés à la génération automatique de compilateurs JIT optimisants, la question de savoir si la métacompilation peut être appliquée efficacement aux compilateurs JIT de base, qui privilégient une compilation rapide et un temps de préchauffage réduit, restait ouverte. Dans cette thèse, nous présentons textbf{Druid, un métacompilateur source-à-source avant d'exécution qui génère un compilateur JIT de base} directement à partir des définitions de l'interpréteur. Les développeurs du langage guident le processus de métacompilation à l'aide d'annotations et d'intrinsèques, pendant que Druid cible une infrastructure JIT existante afin de réutiliser des optimisations et des composants d'exécution éprouvés, offrant ainsi des performances de préchauffage compétitives. Nous avons appliqué Druid à la machine virtuelle Pharo utilisée en production, et évalué les performances du compilateur JIT généré automatiquement. Le JIT de base obtenu est xTimes{1.8} plus rapide que l'interpréteur et atteint {70%} des performances d'un compilateur JIT écrit manuellement et amélioré depuis plus de dix ans. Cela n'a nécessité que 60 modifications ponctuelles dans l'interpréteur, démontrant que Druid réduit considérablement l'effort d'ingénierie requis pour maintenir et faire évoluer les VM de langage. Les compilateurs JIT de base doivent compiler rapidement tout en appliquant des optimisations essentielles. Une stratégie couramment utilisée est l'interprétation abstraite à la compilation, qui réalise en un seul passage l'allocation de registres, la propagation de constantes et l'ordonnancement des instructions. Cependant, il est difficile d'isoler et de quantifier les bénéfices de cette technique en comparant des compilateurs développés indépendamment. Avec Druid, nous avons généré automatiquement plusieurs variantes du compilateur JIT de Pharo afin d'évaluer expérimentalement l'impact de l'interprétation abstraite dans des conditions contrôlées. Nous utilisons la métacompilation pour: (a) réduire l'effort d'expérimentation et (b) produire des variantes de compilateurs comparables, réduisant le bruit lié aux différences implémentations. Nos résultats montrent que l'interprétation abstraite réduit la taille du code machine de {12%} et améliore la vitesse d'exécution de {10%} en moyenne (jusqu'à {30%}), sans augmentation mesurable du temps de compilation JIT par rapport à une approche de traduction directe.

Jury

M. Stéphane DUCASSE Université de Lille Directeur de thèse, M. Guillermo POLITO Université de Lille Co-directeur de thèse, M. Fabrice RASTELLO Université de Grenoble Alpes Examinateur, Mme Emmanuelle SAILLARD-VIROULEAU Université de Bordeaux Examinatrice, M. Wolfgang DE MEUTER Vrije Universiteit Brussel Rapporteur, M. Gaël THOMAS Inria Saclay Rapporteur, M. Björn FRANKE Université de Edinburgh Invité.

More news