The Flex Program Analysis and Compilation System

Flex is a compiler written in Java for Java. Native backends exist for the StrongARM and MIPS processors. It is also possible to generate C code. It supports both Boehm-Demers-Weiser conservative garbage collection and our own precise garbage collector. We also support region-based allocation via our implementation of the Real-Time Specification for Java. It fully supports several implementations of the standard Java threads package, including a standard heavyweight threads implementation as well as a lightweight user-level implementation. It provides a range of standard compiler analyses and optimizations.

The Flex distribution is available here, distributed under the GNU GPL. The distribution includes source code, the runtime system, and documentation.

We have used the Flex compiler system as a platform for our pointer and escape analysis research. Here are several publications that use Flex: