Vortrag: Efficient Implementation of the JavaVM, 11. 5. 1998

Maria Cherry maria@par.univie.ac.at
Tue, 24 Mar 1998 16:38:23 +0100 (MET)



                          UNIVERSITAET WIEN 
          INSTITUT FUER SOFTWARETECHNIK UND PARALLELE SYSTEME
                            gemeinsam mit 
                                VCPC 
           EUROPEAN CENTRE FOR PARALLEL COMPUTING AT VIENNA 


      EINLADUNG ZU EINEM VORTRAG IM RAHMEN DES INSTITUTS-KOLLOQUIUMS:
                
         
                   Efficient Implementation of the JavaVM
 
 			   
                           Dr. Andreas Krall
                    TU Wien, Inst. f. Computersprachen
                                 

                 ZEIT: Montag, 11. 5. 1998, 17 Uhr c.t.
       ORT: Institut fuer Softwaretechnik und Parallele Systeme
                  1090 Wien, Liechtensteinstrasse 22, 
                         Seminarraum, Mezzanin


Abstract

Crucial for the efficiency of a JavaVM are a good just-in-time compiler, an
efficient object and class layout, a fast run time type check and a low
overhead monitor implementation. In this talk we will discuss all topics
with focus on just-in-time compilation. Conventional compilers are designed
for producing highly optimized code without paying much attention to
compile time. The design goals of Java just-in-time compilers are
different: minimize the sum of run time and compile time. For many 
application programs this results in compilers which have to produce fast
code at the smallest possible compile time.
 
In this talk we present a very fast algorithm for translating JavaVM byte
code to high quality machine code for RISC processors. The algorithm is
linear time in practice. It comprises three passes: basic block
determination, stack analysis and register preallocation, final register
allocation and machine code generation. This algorithm replaces an older
one in the CACAO JavaVM implementation reducing the compile time by a
factor of five and producing equally fast machine code. The CACAO system
generates machine code for all methods of the javac compiler and its
library methods in less than 80 milliseconds.
 
There exist implementations of JavaVM which show a factor of 30 difference
in run time due to the overhead of synchronization. In this talk we
describe an efficient implementation of monitors for Java as used in the
CACAO just-in-time compiler. With this implementation the thread overhead
is less than 40\% for typical application programs and can be completely
eliminated for some applications. We also give the implementation details
of the new exception handling scheme in CACAO. The new approach reduces the
size of the generated native code by a half and allows null pointers to be
checked by hardware. By using these techniques, the CACAO system has become
the fastest JavaVM implementation for the Alpha processor.
 
Biography:
 
Dr. Andreas Krall is an Associate Professor in the Department of Computer
Science at Technische Universität Wien in Vienna, Austria. His research
interests include implementation of object oriented languages, compiler
back ends, computer architecture and implementation of logic programming
languages. He leads the CACAO project (a JavaVM just-in-time compiler) and
has developed the Vienna Abstract Machine (an abstract machine for Prolog).