Open AccessProceedings Article
Harissa: a flexible and efficient java environment mixing bytecode and compiled code
Gilles Muller,Bárbara Moura,Fabrice Bellard,Charles Consel +3 more
- pp 1-1
Reads0
Chats0
TLDR
An approach is presented which reconciles portability and efficiency, and preserves the ability to dynamically load bytecode, and designed and implemented an efficient environment for the execution of Java programs, named Harissa, which permits the mixing of compiled and interpreted methods.Abstract:
The Java language provides a promising solution to the design of safe programs, with an application spectrum ranging from Web services to operating system components. The well-known tradeoff of Java's portability is the inefficiency of its basic execution model, which relies on the interpretation of an object-based virtual machine. Many solutions have been proposed to overcome this problem, such as just-in-time (JIT) and off-line bytecode compilers. However, most compilers trade efficiency for either portability or the ability to dynamically load bytecode.
In this paper, we present an approach which reconciles portability and efficiency, and preserves the ability to dynamically load bytecode. We have designed and implemented an efficient environment for the execution of Java programs, named Harissa. Harissa permits the mixing of compiled and interpreted methods. Harissa's compiler translates Java bytecode to C, incorporating aggressive optimizations such as virtual-method call optimization based on the Class Hierarchy Analysis. To evaluate the performance of Harissa, we have conducted an extensive experimental study aimed at comparing the various existing alternatives to execute Java programs. The C code produced by Harissa's compiler is more efficient than all other alternative ways of executing Java programs (that were available to us): it is up to 140 times faster than the JDK interpreter, up to 13 times faster than the Softway Guava JIT, and 30% faster than the Toba bytecode to C compiler.read more
Citations
More filters
Proceedings ArticleDOI
Soot: a Java bytecode optimization framework
TL;DR: Soot, a framework for optimizing Java* bytecode, is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of bytecode which is simple to manipulate; Jimple, a typed 3-address intermediate representation suitable for optimization; and Grimp, an aggregated version of Jimple suitable for decompilation.
Book ChapterDOI
Optimizing Java Bytecode Using the Soot Framework: Is It Feasible?
Raja Vallée-Rai,Etienne Gagnon,Laurie Hendren,Patrick Lam,Patrice Pominville,Vijay Sundaresan +5 more
TL;DR: The approach to class file optimization is to first convert the stack-based bytecode into Jimple, a three-address form more amenable to traditional program optimization, and then convert the optimized Jimple back to bytecode.
Journal ArticleDOI
Mobile agents and the future of the internet
David Kotz,Robert S. Gray +1 more
TL;DR: It seems likely that, within a few years, nearly all major Internet sites will be capable of hosting and willing to host some form of mobile code or mobile agents.
Proceedings ArticleDOI
Practical virtual method call resolution for Java
Vijay Sundaresan,Laurie Hendren,Chrislain Razafimahefa,Raja Vallée-Rai,Patrick Lam,Etienne Gagnon,Charles Godin +6 more
TL;DR: This paper addresses the problem of resolving virtual method and interface calls in Java bytecode by developing a technique that can be solved with only one iteration, and thus scales linearly with the size of the program, while at the same time providing more accurate results than two popular existing linear techniques, class hierarchy analysis and rapid type analysis.
Proceedings ArticleDOI
Removing unnecessary synchronization in Java
Jeff Bogda,Urs Hölzle +1 more
TL;DR: An interprocedural, flow- and context-insensitive dataflow analysis finds situations if an object is reachable only by a single thread, concurrent access is impossible and no synchronization is needed, and then eliminates synchronizations on these objects.
References
More filters
Book
The Java Language Specification
TL;DR: The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language.
Book
The Java Virtual Machine Specification
Tim Lindholm,Frank Yellin +1 more
TL;DR: In this article, the authors present a detailed overview of the Java Virtual Machine, including the internal structure of the class file format, the internal form of Fully Qualified Class and Interface names, and the implementation of new class instances.
Journal ArticleDOI
Garbage collection in an uncooperative environment
Hans-J. Boehm,Mark D. Weiser +1 more
TL;DR: This approach greatly simplifies the implementation of languages supporting garbage collection and allows conventional compilers to be used with a garbage collector, either as the primary means of storage reclamation, or as a debugging tool.
Book ChapterDOI
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
TL;DR: In this article, a complete inheritance graph of a program is examined, which is called class hierarchy analysis, and the compiler can improve the quality of static class information and thereby improve run-time performance.
Journal ArticleDOI
SUIF: an infrastructure for research on parallelizing and optimizing compilers
Robert P. Wilson,Robert S. French,Christopher S. Wilson,Saman Amarasinghe,Jennifer M. Anderson,Steve W. K. Tjiang,Shih-Wei Liao,Chau-Wen Tseng,Mary Hall,Monica S. Lam,John L. Hennessy +10 more
TL;DR: The SUIF compiler is built into a powerful, flexible system that may be useful for many other researchers and the authors invite you to use and welcome your contributions to this infrastructure.