Mots clés : évaluation partielle,
langage C, spécialisation à l'exécution .
Participant : Charles
Consel.
Nous avons conÇu et développé un évaluateur partiel pour
des programmes C, nommé Tempo [2,1]. Une innovation importante apportée par ce
système est qu'il permet la spécialisation de programmes à la
compilation et à l'exécution [2]. Diverses analyses dont le but est de
préparer la phase de spécialisation ont été conÇues pour ce
système [15,16]. Etant donnée la richesse du langage C et
le fait qu'il ait été peu étudié dans le contexte de
l'évaluation partielle, le développement de ces analyses a
constitué une partie importante de notre travail.
Pour s'assurer que les transformations de programmes
offertes par Tempo produisent un programme très spécialisé,
nous avons ciblé notre travail sur les programmes système qui
sont très propices à la spécialisation. Nous avons ainsi pu
recenser les besoins principaux de spécialisation existants
dans ce domaine et introduire les analyses et transformations
correspondantes. Tempo a été notamment validé par la
spécialisation d'un code système faisant partie d'un produit
commercial, en l'occurence l'implémentation de l'appel de
procédure à distance (RPC) développé par Sun en
1984 [7]. Les gains en vitesse obtenus par
spécialisation de ce code vont jusqu'à un facteur de 3,7 sur
l'encodage des données.
Tempo est actuellement disponible via une licence
d'évaluation. Une quarantaine d'utilisateurs en disposent à
ce jour, dont Bull, France Telecom et Thomson Multimédia.
Nos travaux actuels visent à faire évoluer Tempo vers un
moteur de spécialisation multi-langages. Pour ce faire, nous
développons un certain nombre de frontaux à Tempo pour nous
permettre de traiter d'autres langages que C. Cette approche
est actuellement expérimentée pour le langage Java et au
développement de JSpec, un spécialiseur pour Java (voir la
section 5.4).