Intégration d'optimisations globales en compilation séparée des langages à objets
Les compilateurs majoritairement utilisés sont basés sur un principe de compilation séparée, alors que la plupart des optimisations des langages à objets nécessitent une connaissance globale du programme, en particulier l'analyse de type et les techniques d'implémentation de la liaison tardive. Les deux approches ont leurs avantages et leurs inconvénients et nous proposons d'intégrer des techniques d'optimisation globales, en particulier l'analyse de types et la coloration, dans un cadre de compilation séparée. Le code généré est décoré par des balises et complété par des informations sur le schéma des classes et la circulation des types dans leurs méthodes. Une phase globale précédant l'édition de liens effectue les optimisations globales à partir de ces dernières informations et fait les substitutions nécessaires dans le code généré par la phase locale.
Mainly used compilers are based on separate compilation, whereas optimizations of object-oriented programs mostly need a complete knowledge of the whole program. This is especially the case for type analysis and late binding implementations. Both approaches have pros and cons. Therefore, this paper proposes an integration of global optimizations in a separate compilation framework. The code generated by the local step is tagged and completed with a class schema and a template abstracting the circulation of types in the class methods. Before linking, a global step makes all global computations and substitutes computed values for symbols in the code generated by the local step.
J.PRIVAT, R.DUCOURNAU
langages à objets, compilation globale, compilation séparée, édition de liens, analyse de types, coloration de méthodes, héritage multiple.
object-oriented languages, global compilation, separate compilation, linking, type analysis, selector coloring, multiple inheritance.
Français
|