About XTC Download Contact

About XTC

XTC is a fork of the OVM codebase that focuses on delivering an extensible architecture for compilation. XTC constists of four major modules:
The base module provides basic facilities for handling Java bytecode. base provides an object-oriented abstraction of Java classes and includes facilities for parsing and writing Java class files. base also includes basic mechanisms for subtype tests and dispatching.
The ir module contains code that handles the intermediate representation of the compiler infrastructure. The most developed support is for Java bytecode in ir.bytecode. XTC uses a bytecode specification language to specify the semantics of most bytecode instructions. It features facilities to easily generate or edit bytecode.
The ir module also contains an alternative IR, called Tucson which is a variant of static single assignment form (SSA) also known as the sea-of-nodes. This is basically the same IR used by the server-compiler of HotSpot, just implemented in Java.
The analysis module contains a general program analysis framework centered around a general abstract interpretation mechanism. It also features an extensible bytecode interpreter as well as some basic analyses for both bytecode and Tucson, including a conversion from Tucson to bytecode.
The XTC tool collection includes a series of tools, including hitsuji (control flow analysis), jamit (access modifier inference), kacheck/j (confined types inference), ovmp (Java disassembler), pta (points-to analysis), ro (runabout optimizer), tucson (conversion of bytecode to tucson) and verifier (primitive Java bytecode verifier).
A prototype compiler for X10 is being build on top of the framework. The code for this compiler is available seperately from the XTC-X10 webpage.


December 2005
The various XTC tools (ovmp, Jamit, Kacheck/J) now work nicely with Java 5.0. In particular, reading and writing the new Attributes seems to work and the tools make use of them in appropriate ways. Interestingly enough, javap from Sun seems to do a worse job when it comes to disassembling some of the new attributes compared to ovmp.
September 2005
XTC now compiles and runs under Java 5.0. In fact, Java 5.0 is required since various constructs that are new in Java 5.0 are used (in particular generics, metadata and the new fancy for construct).
Work is currently underway to make XTC fully understand all of the attributes that are new in Java 5.0.


XTC is licensed under the GNU GPL. You can access the current development version of XTC using subversion:
$ svn checkout https://gnunet.org/projects/xtc/

The latest source and binary distribution is xtc-20051214.jar. Use
$ java -jar xtc-20051214.jar
to install. The installer requires GNU/Linux and Java 1.5.


XTC is developed by Christian Grothoff.
Christian Grothoff
Last modified: Wed Jul 5 20:25:59 PDT 2006