Tempo, un évaluateur partiel pour C

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).