From 7aeefe1d2b8656fdb344d344df42e606f992d6dd Mon Sep 17 00:00:00 2001 From: cacao Date: Thu, 1 Apr 2004 16:35:39 +0000 Subject: [PATCH] some words for intro and overview by andi --- doc/handbook/intro.tex | 35 +++++++++++++++++++++++++++++++++++ doc/handbook/overview.tex | 24 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/doc/handbook/intro.tex b/doc/handbook/intro.tex index 8bb03c10e..710574f2c 100644 --- a/doc/handbook/intro.tex +++ b/doc/handbook/intro.tex @@ -1,6 +1,41 @@ \chapter{Introduction} +Reinhard Grafl and I do not like coffee. Therefore, our Java virtual machine +could not be named after coffee. We prefer hot chocolate and have chosen to +name our Java virtual machine CACAO [kaukau]. + \section{Introduction} +CACAO is a research Java virtual machine. From the beginning it was designed +for 64 bit architectures and was based on a just-in-time compiler. To avoid +two different stack frame formats no interpreter is included. The compiler is +so fast that it does not matter to compile code which is just executed once. +One of the aims of CACAO is to keep the system small and simple which makes +CACAO also well suited for embedded systems. It has been used to explore new +just-in-time compilation techniques, fast program analyses and improvements +for run time systems. Many of our developments turned out to be useful and +had been included in the version of CACAO which we now distribute under the +GNU general public license. + \section{History} +CACAO started as a master thesis by Rainhard Grafl in the year 1996. It +included a JIT compiler +for the Alpha archtecture. It used Sun's library 1.0 +and contained the native functions for {\tt lang}, {\tt io}, {\tt util} and +{\tt math}. The first version was running in January 1997. This was the first +Java virtual machine for 64 bit architectures. The binary version 0.1 was made +available for the public on February 14th 1997. Afterwards I started the +developement of the new faster JIT compiler. Multithreading was added by +Mark Probst. Binary version 0.2 was released on September 23rd 1998. On +October 12th 1998 immediately before the PACT conference in Paris we put the +binary release 0.3 on our web server. Within ten days around Christmas 1998 +I ported CACAO to the MIPS architecture. In the next four years there was +very little development on CACAO. Christopher Kr\"ugel added array bound check +removal, Phil Tomsich wrote a new garbage collector and Roman Obermaisser +made the change to the Java 1.2 library. In 2003 development became more +intensive. Dieter Th\"urnbeck added inlining, Christian Thalinger did the +port to the x86 and AMD64 architecture, Stefan Ring did the port to the +PowerPC architecture, Josef Wenninger replaced the SUN library by GNU +classpath and Edwin Steiner added verification. + diff --git a/doc/handbook/overview.tex b/doc/handbook/overview.tex index 80fec0909..263e8c4bf 100644 --- a/doc/handbook/overview.tex +++ b/doc/handbook/overview.tex @@ -1,9 +1,33 @@ \chapter{Overview} +This chapter gives an overview of CACAO. It describes the general structure and +the partitioning into modules. + + \section{Introduction} +CACAO is partitioned into modules which are usually a .c file or a complete +subdirectory. The modules are bound together by the main module (main.c) which +parses the command line options, calls the system class loader (loader.c) and invokes +the main method of the java class file. The first time a method is invoked +the just-in-time compiler (jit) generates machine code for the selected host architecture. +During the execution it is possible that native function are called. All native +functions have to be linked with all other modules. Therefore, tables +and headers have to be generated by the header file generator (headers.c) before +the rest of the CACAO system is build. The Boehm-Weiser garbage collector is +used for memory management. Figure \ref{cacao_overview} gives an overview of +CACAO. + + \section{Class loader} +The class loader loads the Java class files and creates the data structures which +are necessary for the compilation and execution of byte code programs. + +Java class files contain information about all referenced classes. Currently CACAO +uses this information to load classes eagerly. All classes which are referenced +directly or indirectly by the main class are loaded at program start. + \section{Just-in-time compiler} \section{Run time system} -- 2.25.1