Next: Front-end
Up: Joeq: A Virtual Machine
Previous: Introduction
Overview
As shown in Figure 1, the Joeq system consists of
seven major parts:
- Front-end: Handles the loading and parsing of input
files, such as Java class files, SUIF files, and binary object files.
- Compiler: A framework for
performing analyses and optimizations on code. This includes the
intermediate representation (IR) of our compiler.
- Back-end: Converts the compiler's intermediate
representation into native, executable code. This code can be
output to an object file or written into memory to be executed.
In addition, it generates metadata about the generated code,
such as garbage collection maps and exception handling
information.
- Interpreter: Directly interprets the various forms
of compiler intermediate representations.
- Memory Manager: Organizes and manages memory. Joeq
supports both explicitly-managed and garbage-collected memory.
- Dynamic: Provides profile data to the code
analysis and optimization component, makes compilation policy
decisions, and drives the dynamic compiler.
- Run-time Support: Provides runtime support for introspection,
thread scheduling, synchronization, exception handling, interfacing to
external code, and language-specific features such as dynamic type
checking.
Sections 3 through 9 cover each of
the components in detail.
Next: Front-end
Up: Joeq: A Virtual Machine
Previous: Introduction
John Whaley
2003-03-15