Joeq: a virtual machine and compiler infrastructure

Joeq is a virtual machine and compiler infrastructure designed to facilitate research in virtual machine technologies such as Just-In-Time and Ahead-Of-Time compilation, advanced garbage collection techniques, distributed computation, sophisticated scheduling algorithms, and advanced run time techniques. Joeq is entirely implemented in Java, leading to reliability, portability, maintainability, and efficiency. It is also language-independent, so code from any supported language can be seamlessly compiled, linked, and executed --- all dynamically. Each component of the virtual machine is written to be independent with a general but well-defined interface, making it easy to experiment with new ideas. Joeq is released as open source software, and is being used as a framework by researchers all over the world on topics ranging from automatic distributed virtual machines to whole-program pointer analysis.

[1]  Kiyokuni Kawachiya,et al.  A study of locking objects with bimodal fields , 1999, OOPSLA '99.

[2]  Cliff Click,et al.  Fast subtype checking in the HotSpot JVM , 2002, JGI '02.

[3]  Monica S. Lam,et al.  Automatic extraction of object-oriented component interfaces , 2002, ISSTA '02.

[4]  Francois Yergeau UTF-8, a transformation format of ISO 10646 , 1998, RFC.

[5]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[6]  Christian Grothoff Walkabout Revisited: The Runabout , 2003, ECOOP.

[7]  Martin C. Rinard,et al.  Compositional pointer and escape analysis for Java programs , 1999, OOPSLA '99.

[8]  Derek L. Bruening Systematic testing of multithreaded Java programs , 1999 .

[9]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, ACM SIGSOFT Softw. Eng. Notes.

[10]  James M. Stichnoth,et al.  Support for garbage collection at every instruction in a Java compiler , 1999, PLDI '99.

[11]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[12]  Erik Ruf,et al.  Marmot: an optimizing compiler for Java , 2000, Softw. Pract. Exp..

[13]  E BryantRandal Graph-Based Algorithms for Boolean Function Manipulation , 1986 .

[14]  Antero Taivalsaari Implementing a Java TM Virtual Machine in the Java Programming Language , 1998 .

[15]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[16]  Mauricio J. Serrano,et al.  Thin locks: featherweight synchronization for Java , 1998, PLDI '98.

[17]  Ciarán Bryce,et al.  Lana: An Approach to Programming Autonomous Systems , 2002, ECOOP.

[18]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[19]  Monica S. Lam,et al.  An Overview of a Compiler for Scalable Parallel Machines , 1993, LCPC.

[20]  John Whaley,et al.  A portable sampling-based profiler for Java virtual machines , 2000, JAVA '00.

[21]  Laurie J. Hendren,et al.  SableVM: A Research Framework for the Efficient Execution of Java Bytecode , 2001, Java Virtual Machine Research and Technology Symposium.

[22]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[23]  Sudheendra Hangal,et al.  Tracking down software bugs using automatic anomaly detection , 2002, ICSE '02.

[24]  Toshiaki Yasue,et al.  A study of devirtualization techniques for a Java Just-In-Time compiler , 2000, OOPSLA '00.

[25]  Olivier Tardieu,et al.  Ultra-fast aliasing analysis using CLA: a million lines of C code in a second , 2001, PLDI '01.

[26]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

[27]  John Whaley,et al.  System Checkpointing Using Reflection and Program Analysis , 2001, Reflection.

[28]  H. Yamauchi,et al.  Engineering a customizable intermediate representation , 2003, IVME '03.

[29]  David Grove,et al.  Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis , 1995, ECOOP.

[30]  Monica S. Lam,et al.  An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages , 2002, SAS.

[31]  John Whaley,et al.  Dynamic Optimization through the use of Automatic Runtime Specialization , 1999 .

[32]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[33]  John Whaley Partial method compilation using dynamic profile information , 2001, OOPSLA '01.

[34]  Francois Yergeau,et al.  UTF-8, a transformation format of ISO 10646 , 1998, RFC.

[35]  Bowen Alpern,et al.  Implementing jalapeño in Java , 1999, OOPSLA '99.

[36]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, PASTE '99.