*Result*: The Treewidth of Java Programs

Title:
The Treewidth of Java Programs
Contributors:
Software Tools for Telecommunications and Distributed Systems (RESEDAS), INRIA Lorraine, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria)-Laboratoire Lorrain de Recherche en Informatique et ses Applications (LORIA), Centre National de la Recherche Scientifique (CNRS)-Institut National Polytechnique de Lorraine (INPL)-Université Nancy 2-Université Henri Poincaré - Nancy 1 (UHP)-Institut National de Recherche en Informatique et en Automatique (Inria)-Centre National de la Recherche Scientifique (CNRS)-Institut National Polytechnique de Lorraine (INPL)-Université Nancy 2-Université Henri Poincaré - Nancy 1 (UHP)
Source:
4th International Workshop on Algorithm Engineering and Experiments - ALENEX'02
https://hal.inria.fr/inria-00100731
4th International Workshop on Algorithm Engineering and Experiments - ALENEX'02, 2002, San Francisco, CA US, 12 p
Publisher Information:
HAL CCSD
Publication Year:
2002
Collection:
Archive ouverte HAL (Hyper Article en Ligne, CCSD - Centre pour la Communication Scientifique Directe)
Document Type:
*Conference* conference object
Language:
English
Relation:
Accession Number:
edsbas.52496F8E
Database:
BASE

*Further Information*

*Colloque avec actes et comité de lecture. internationale. ; International audience ; Intuitively, the treewidth of a graph $G$ measures how close $G$ is to being a tree. The lower the treewidth, the faster we can solve various optimization problems on $G$, by dynamic programming along the tree structure. In the paper M.Thorup, All Structured |Programs have Small Tree-Width and Good Register Allocation [8] it is shown that the control-flow graph of any goto-free C program is at most 6. This result opened for the possibility of applying the dynamic programming bounded treewidth algorithms to various |compiler optimization tasks. In this paper we explore this possibility, in particular for Java programs. We first show that even if Java does not have a goto, the labelled break and continue statements are in a sense equally bad, and can be used to construct Java programs that are arbitrarily hard to understand and optimize. For Java programs lacking these labelled constructs Thorup's result for C still holds, and in the second part of the paper we |analyze the treewidth of label-free Java programs empirically. We do this by means of a parser that computes a tree-decomposition of the control-flow graph of a given Java program. We report on experiments running the parser on several of the Java API |packages, and the results tell us that on average the treewidth of the control-flow graph of these Java programs is no more than 2.5. This is the first empirical test of Thorup's result, and it confirms our suspicion that the upper bounds of treewidth 6, 5 and 4 are rarely met in practice, boding well for the application of treewidth to compiler optimization.*