Analyse simple de types dans les tableaux et optimisation du ramasse-miettes. - Inria - Institut national de recherche en sciences et technologies du numérique
Communication Dans Un Congrès Année : 2012

Analyse simple de types dans les tableaux et optimisation du ramasse-miettes.

Résumé

This article starts with the presentation of a simple technique, using type flow analysis and filling up order, to predict the {\it{}content} of arrays. Applied first on low-level arrays indexed from 0, our technique is then extended to deal with higher level data structures using arrays, like variable index arrays as well as circular arrays and hash-maps. The main aim of our technique is to allow the propagation of the type flow information through array read-write expressions, thus opening the last gate to a global type flow analysis. Beside the improvement of type prediction useful for dynamic binding and type security of object-oriented languages, our technique makes it possible to optimize memory management. Indeed, thanks to the filling up order, the garbage collector (GC) only inspects the used part of arrays, avoiding collection of unused objects referenced by the supply part of arrays. Furthermore, the supply part of arrays does not even require initialization or cleaning after use. Measurements we present show the global improvement on type flow analysis and the real gain during the mark and sweep of arrays.
Cet article commence en présentant une technique très simple, par analyse de flots de types et ordre de remplissage imposé, permettant de prédire le {\it{}contenu} des tableaux. D'abord présentée pour les tableaux primitifs indexés à partir de 0, notre technique est ensuite étendue pour prendre en compte les autres structures de données de plus haut niveau: tableaux à indexation variable, tableaux circulaires et tables de hachage. Le résultat essentiel consiste à pouvoir faire suivre l'information de flots de types déjà collectée pour le reste du code source au travers des expressions qui manipulent des tableaux, permettant ainsi de procéder à une analyse de flots de types vraiment globale. En plus de l'amélioration de la prédiction de types utile pour la liaison dynamique et la sécurité des langages à objets, notre technique permet d'optimiser la gestion mémoire. En effet, grâce à la technique de remplissage utilisée, le ramasse-miettes (GC) n'inspecte que les zones utiles des tableaux en évitant de collecter des objets inaccessibles, référencés par les zones de réserve. Ces zones de réserve n'ont par ailleurs nullement besoin d'être initialisées avant utilisation ni nettoyées aprés usage. Les mesures présentées permettent de se rendre compte de l'impact de cette technique, aussi bien en terme de qualité de l'analyse de flots, qu'en terme de gain au niveau de la gestion mémoire durant le marquage et le balayage des tableaux.
Fichier principal
Vignette du fichier
ArrayTypeFlow-FR.pdf (181.6 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

hal-00714875 , version 1 (14-07-2012)

Identifiants

  • HAL Id : hal-00714875 , version 1

Citer

Dominique Colnet, Benoit Sonntag. Analyse simple de types dans les tableaux et optimisation du ramasse-miettes.. Conférence en IngénieriE du Logiciel - CIEL 2012, Jun 2012, Rennes, France. pp.1-15. ⟨hal-00714875⟩
125 Consultations
98 Téléchargements

Partager

More