Thèse soutenue

Traduction et optimisation globale dans les langages de classes

FR
Auteur / Autrice : Olivier Zendra
Direction : Dominique Colnet
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2000
Etablissement(s) : Nancy 1
Partenaire(s) de recherche : autre partenaire : Université Henri Poincaré Nancy 1. Faculté des sciences et techniques

Mots clés

FR

Résumé

FR

Ce travail s'inscrit dans le cadre des recherches menées autour de la compilation des langages de classes, notamment Eiffel, et plus généralement des langages à objets à typage statique. Le but de cette thèse revient à tenter de répondreàa une question fondamentale : comment mieux compiler les langages à objets, comment avoir des programmes plus rapides et plus surs ? Ce travail de recherche est basé sur l'analyse statique, abordée via deux axes principaux. Le premier consiste à effectuer des contrôles de validité et de cohérence du programme dès le début du développement, pour assister les développeurs durant la phase de conception et d'implantation. Le second axe, qui est la substance même de cette thèse, considère l'utilisation des informations apportées par l'analyse statique du système pour améliorer la qualité du code généré. Ces informations offrent des possibilités importantes en termes d'optimisation du code généré. Nous proposons et expérimentons une approche basée sur la duplication et la spécialisation du code par analyse globale du système, afin d'implanter de façon efficace les structures de données et le code du programme compilé, notamment la liaison dynamique. Nous introduisons une nouvelle méthode de liaison dynamique, basée sur des arbres de branchement directs, dont les performances sont supérieures à celles des systèmes actuels classiques à base de tables d'indirection. Cette approche est étendue à la génération par le compilateur d'un ramasse-miettes automatiquement adapté à l'application compilée. Nous menons aussi une étude sur les optimisations permises par l'utilisation de l'aliasing dans un compilateur écrit dans un langage de classes, ainsi que les moyens de mieux maitriser cette technique. Ces travaux sont validés entre autres par le développement d'un compilateur Eiffel nomme smalleiffel et de ses bibliothèques, qui, très largement diffusés et utilisés, sont devenus the Gnu Eiffel compiler.