some words for intro and overview by andi
authorcacao <none@none>
Thu, 1 Apr 2004 16:35:39 +0000 (16:35 +0000)
committercacao <none@none>
Thu, 1 Apr 2004 16:35:39 +0000 (16:35 +0000)
doc/handbook/intro.tex
doc/handbook/overview.tex

index 8bb03c10ec90c82da715897a32d8bd0ef7edf1f2..710574f2cd489f97c7459d88983b8fd749634915 100644 (file)
@@ -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.
+
index 80fec090999122922484fe7b5bdbedafcac5eeba..263e8c4bfe2fe994aea0fdb7b62e15c7254c42f2 100644 (file)
@@ -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}