XTC is a fork of the OVM
codebase that focuses on delivering an extensible
architecture for compilation. XTC constists of four
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.
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
- 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).
- 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
Last modified: Wed Jul 5 20:25:59 PDT 2006