CACAO 0.97 released

This is a bug-fix and feature enhancement release. Here is a short list of the most important changes:

  • New instruction format.
  • New intermediate representation with unified variables.
  • Local subroutine elimination.
  • Fixed the interpreter - it runs eclipse now.
  • New stack-based verifier (used for -Xint).
  • Boehm GC updated to version 6.8.
  • Added enable/disable system assertion support (-esa/-dsa).
  • Initial support.
  • Initial sun.misc.Unsafe (JSR166) support.
  • Added failed class as message to ClassCastException's.
  • AttachCurrentThread, DetachCurrentThread, and AttachCurrentThreadAsDaemon implemented.
  • libjvm is now opened via dlopen (removed -rpath stuff).
  • Data segment now reuses values (if possible).
  • Fixed AbstractMethodError bug.
  • Fixed builtin_isanysubclass (BeanShell bug).
  • Fixed a memory leak in dump memory.
  • Fixed a bug with DUP2_X1 and DUP2_X2.
  • Safe decoding of invalid UTF-8 sequences in NewStringUTF.
  • Fixed line numbers in exceptions thrown through the JIT.
  • Proper null-check for MONITOREXIT.
  • Many low-level jasmin tests added.

This release supports GNU Classpath 0.92+ and was tested on some platforms against GNU Classpath 0.92.

CACAO uses GNU Classpath as Java core library and supports upstream releases or CVS snapshots of the normal GNU Classpath tree or the generics branch. CACAO's ./configure has some options for GNU Classpath, namely:


This release adds support for i386-apple-darwin architectures.

Currently supported JIT compiler architectures are:

  • alpha-unknown-freebsd5.4
  • alpha-unknown-linux-gnu
  • arm-unknown-linux-gnu
  • i386-apple-darwin8.8.1
  • i386-unknown-freebsd5.3
  • i686-pc-linux-gnu
  • mips-sgi-irix6.5
  • mips-unknown-linux-gnu
  • powerpc-apple-darwin7.2.0
  • powerpc-unknown-linux-gnu
  • x86_64-unknown-linux-gnu

Additionally supported interpreter architectures are:

  • powerpc64-unknown-linux-gnu