• DocumentCode
    3465835
  • Title

    Briki: an optimizing Java compiler

  • Author

    Cierniak, M. ; Wei Li

  • Author_Institution
    Dept. of Comput. Sci., Rochester Univ., NY, USA
  • fYear
    1997
  • fDate
    23-26 Feb. 1997
  • Firstpage
    179
  • Lastpage
    184
  • Abstract
    We have developed a research compiler for Java class files. The compiler, which we call Briki, is designed to test new compilation techniques. We focus on optimizations which are only possible or which are much easier to perform on a high-level intermediate representation (IR). We have designed such a representation (JavaIR) and have written a front-end which recovers high-level structure from the information from the class file. Some of the high-level optimizations can be performed by the Java compiler which produces the class file. There is, however, a set of machine-dependent optimizations which have to be customized for the specific architecture and so can only be performed when the machine code is generated from the byte codes, e.g. in a just-in-time (JIT) compiler. We choose memory hierarchy optimizations as an example of machine-dependent techniques. We show that there is an intersection of the set of machine-dependent optimizations and the set of high-level optimizations. One such example is array remapping, which requires multi-dimensional array references which are not present in the byte codes and at the same time requires information about the memory organization. We develop a set of optimizations for accessing array elements and object fields and show their impact on set of benchmarks which we run on two machines with a JIT compiler. The execution times are reduced by as much as 50%, and we argue that the improvement could be even higher with a more mature JIT technology.
  • Keywords
    abstract data types; arrays; object-oriented languages; optimising compilers; Briki; Java class files; JavaIR; array remapping; benchmarks; byte codes; compilation technique testing; customization; front-end; high-level intermediate representation; high-level optimizations; high-level structure recovery; just-in-time compiler; machine-dependent optimizations; memory hierarchy optimizations; memory organization; multi-dimensional array references; object fields; optimizing Java compiler; Application software; Computer aided instruction; Computer languages; Computer science; Java; Joining processes; Optimizing compilers; Program processors; Testing; Virtual machining;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Compcon '97. Proceedings, IEEE
  • Conference_Location
    San Jose, CA, USA
  • ISSN
    1063-6390
  • Print_ISBN
    0-8186-7804-6
  • Type

    conf

  • DOI
    10.1109/CMPCON.1997.584697
  • Filename
    584697