dev/misc/Salsa - Java Bytecode to C compiler with dynamic loading capability

Gilles Muller <>
7 Jan 1997 12:36:51 -0500

          From comp.compilers

Related articles
dev/misc/Salsa - Java Bytecode to C compiler with dynamic loading capa (Gilles Muller) (1997-01-07)
| List of all articles for this month |

From: Gilles Muller <>
Newsgroups: comp.compilers
Date: 7 Jan 1997 12:36:51 -0500
Organization: Compilers Central
Keywords: Java, C, translator

    dev/misc/Salsa - Java Bytecode to C compiler with dynamic loading



Bonne annee a tous/Happy new year,

We are proud to announce the availability of Salsa. Salsa is a Java
environment that includes a compiler from Java bytecode to C and a
Java interpreter. While Salsa is aimed at applications that are
statically configured, such as the Javac compiler, it is also designed
to allow code to be dynamically loaded in an already compiled
application. This novel feature is introduced by integrating our
bytecode interpreter in the runtime library. Data structures between
the Java compiled code and the interpreter are compatible and data
allocated by the interpreter do not conflict with data allocated by
the compiled code. Salsa is written in C and provides an efficient and
flexible solution for the execution of Java applications.

Salsa's compiler generates C code that can be compiled into efficient
native code. To do so, several transformations have been
implemented. First, the stack is statically evaluated away. Second,
virtual method calls are transformed, when possible, into static
(i.e., procedure) calls using a Class Hierarchy Analysis (CHA). For
these virtual calls, type checks are also eliminated. Finally, Salsa
implements several other more conventional optimizations for
object-oriented languages such as method inlining.

    SunOS,Linux, Solaris (soon)


Gilles Muller
Charles Consel
Baraba Moura
Fabrice Bellard

Salsa has been developed within the Partial Evaluation group at IRISA
whose focus is to develop Adaptive Software. Adaptive software is an
approach aimed at reconciling generality and performance. It is based
on a program transformation technique called partial evaluation which
consists of specializing programs with respect to invariants.
Utilizing these invariants allows a general system to be instantiated
for a particular environment. The instantiated system is optimized in
the sense that all the operations that depended on the invariant have
been performed.

For more information, please visit our website,

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.