|
Posted
over 17 years
ago
by
Ian Rogers
Page
edited by
Ian Rogers
- "Add Aleksey Shipilev and Apache Harmony."
Jikes RVM was independently developed as part of the Jalapeño research project at the IBM
... [More]
T.J. Watson Research Center. The following IBM Research employees, academic visitors, and student co-ops contributed to the initial and/or subsequent releases of Jikes RVM.
Bowen Alpern
Anthony Cocchi
Han Lee
Janice Shepherd
Matthew Arnold
Julian Dolby
Derek Lieber
Manu Sridharan
Dick Attanasio
Tracy Ferguson
Mark Mergen
Peter F. Sweeney
David Bacon
Stephen Fink
Ton Ngo
Martin Trapp
John J. Barton
Eugene Gluzberg
Jeff Palm
Kris Venstermans
Steve Blackburn
David Grove
Igor Pechtchanski
John Whaley
Rastislav Bodik
Michael Hind
Vivek Sarkar
Maria Butrico
Dave Hovemeyer
Mauricio Serrano
Perry Cheng
Susan Hummel
Arvin Shepherd
Jong-Deok Choi
Sergiy Kyrylkov
Stephen Smith
The following people have greatly contributed to the success of the Jikes RVM project by having served as core team members.
Steve Augart
Julian Dolby, IBM Research
Stephen Fink
Matthias Hauswirth, University of Colorado at Boulder
Chris Hoffmann, University of Massachussetts
Feng Qian, McGill University
Peter F. Sweeney, IBM Research
The Jikes RVM project sincerely thanks the following contributors to the system:
Eddie Aftandilian
Steven Augart
Michael Baer
Greg Borota
Shane Brewer
Brian D. Carlstrom
Peter Donald
Philippe Faes
Chapman Flack
Daniel Frampton
Robin Garner
Georgios Gousios
Andrew Gray
Jungwoo Ha
Matthias Hauswirth
Matthew Hertz
Chris Hoffmann
Xianglong Huang
Richard Jones
Garrett Kolpin
Christos-Efthymois Kotselidis
Sergiy Kyrylkov
Alan Lawrence
Kien Le
Han Lee
John Leuner
Lukas Loehrer
Avery Moon
J. Eliot B. Moss
Elias Naur
Anders Biehl Norgaard
Jeff Palm
Filip Pizlo
Tuan Phan
Ian Rogers
Aleksey Shipilev
Jeremy Singer
Stephen Smaldone
Sunil Soman
Darko Stefanovic
Tom VanDrunen
Ian Warrington
Mark Wielaard
Yuval Yarom
Lingli Zhang
Jisheng Zhao
Jikes RVM uses either the class libraries produced by the GNU Classpath project or Apache Harmony.
Thanks to David R. Hanson,Christoper W. Fraser, and Todd Proebsting for making available the iburg tool, which we've enhanced for use in Jikes RVM.
Contributors to the Jalapeño research project
Thanks to Codehaus and Sourceforge for providing hosting services.
View Online
Changes between revision 11
and revision 12:
Jikes RVM was independently developed as part of the [Jalapeño research project|http://www.research.ibm.com/jalapeno] at the [IBM T.J. Watson Research Center|http://www.research.ibm.com]. The following IBM Research employees, academic visitors, and student co-ops contributed to the initial and/or subsequent releases of Jikes RVM.
| [Bowen Alpern|mailto:[email protected]] | [Anthony Cocchi|mailto:[email protected]] | [Han Lee|http://www.cs.colorado.edu/~hanlee] | Janice Shepherd |
| [Matthew Arnold|http://www.research.rutgers.edu/~marnold] | [Julian Dolby|mailto:[email protected]] | Derek Lieber | [Manu Sridharan|http://www.cs.berkeley.edu/~manu_s] |
| [Dick Attanasio|mailto:[email protected]] | Tracy Ferguson | [Mark Mergen|mailto:[email protected]] | [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs] |
| [David Bacon|http://www.research.ibm.com/people/d/dfb] | [Stephen Fink|http://www.research.ibm.com/people/s/sfink] | [Ton Ngo|mailto:[email protected]] | [Martin Trapp|mailto:[email protected]] |
| [John J. Barton|http://www.hpl.hp.com/personal/John_Barton] | Eugene Gluzberg | Jeff Palm | [Kris Venstermans|http://www.elis.ugent.be/~kvenster/research.html] |
| [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn] | [David Grove|http://www.research.ibm.com/people/d/dgrove] | [Igor Pechtchanski|mailto:[email protected]] | John Whaley |
| [Rastislav Bodik|http://www.cs.berkeley.edu/~bodik] | [Michael Hind|http://www.research.ibm.com/people/h/hind] | [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar] | |
| [Maria Butrico|mailto:[email protected]] | Dave Hovemeyer | [Mauricio Serrano|http://www.intel.com/research/mrl/people/serrano_m.htm] | |
| [Perry Cheng|http://www.research.ibm.com/people/p/perryche] | Susan Hummel | Arvin Shepherd | |
| [Jong-Deok Choi|http://www.research.ibm.com/people/j/jdchoi] | [Sergiy Kyrylkov|http://www.cs.unm.edu/~sergiy] | [Stephen Smith|mailto:[email protected]] | |
The following people have greatly contributed to the success of the Jikes RVM project by having served as core team members.
* Steve Augart
* [Julian Dolby|mailto:[email protected]], IBM Research
* [Stephen Fink|http://www.research.ibm.com/people/s/sfink]
* [Matthias Hauswirth|http://www.inf.unisi.ch/faculty/hauswirth], University of Colorado at Boulder
* [Chris Hoffmann|http://ali-www.cs.umass.edu/~hoffmann], University of Massachussetts
* [Feng Qian|http://www.sable.mcgill.ca/~fqian], McGill University
* [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs], IBM Research
The Jikes RVM project sincerely thanks the following contributors to the system:
| Eddie Aftandilian | [Steven Augart|http://www.augart.com/] | Michael Baer | Greg Borota |
| [Shane Brewer|http://www.cs.ualberta.ca/~brewer] | [Brian D. Carlstrom|http://carlstrom.com/] | Peter Donald | [Philippe Faes|mailto:Philippe.Faes @AT@ UGent dot be] |
| Chapman Flack | Daniel Frampton | Robin Garner | [Georgios Gousios|http://istlab.dmst.aueb.gr/~george/] |
| Andrew Gray | Jungwoo Ha | [Matthias Hauswirth|http://www.inf.unisi.ch/faculty/hauswirth] | [Matthew Hertz|http://www-ali.cs.umass.edu/~hertz/] |
| [Chris Hoffmann|http://ali-www.cs.umass.edu/~hoffmann] | [Xianglong Huang|http://www.cs.utexas.edu/users/xlhuang] | [Richard Jones|http://www.cs.kent.ac.uk/people/staff/rej/] | Garrett Kolpin |
|Christos-Efthymois Kotselidis | [Sergiy Kyrylkov|http://www.cs.unm.edu/~sergiy] | Alan Lawrence | Kien Le |
| Han Lee | John Leuner | Lukas Loehrer | Avery Moon |
| [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss] | Elias Naur | Anders Biehl Norgaard | Jeff Palm |
| [Filip Pizlo|http://homepage.mac.com/pizlo/] | Tuan Phan | [Ian Rogers|http://www.cs.man.ac.uk/~irogers] | [Jeremy Singer|http://www.cs.man.ac.uk/~jsinger/] |
| Stephen Smaldone | [Sunil Soman|http://www.cs.ucsb.edu/~sunils] | [Darko Stefanovic|http://www.cs.unm.edu/~darko] | [Tom VanDrunen|http://www.cs.purdue.edu/people/vandrutj] |
| Ian Warrington | [Mark Wielaard|http://klomp.org/mark] | [Yuval Yarom|http://www.cs.adelaide.edu.au/~yval/] | [Lingli Zhang|http://www.cs.ucsb.edu/~lingli_z] |
|[Jisheng Zhao|http://www.cs.manchester.ac.uk/apt/people/jzhao/] |
| [Filip Pizlo|http://homepage.mac.com/pizlo/] | Tuan Phan | [Ian Rogers|http://www.cs.man.ac.uk/~irogers] | Aleksey Shipilev |
| [Jeremy Singer|http://www.cs.man.ac.uk/~jsinger/] | Stephen Smaldone | [Sunil Soman|http://www.cs.ucsb.edu/~sunils] | [Darko Stefanovic|http://www.cs.unm.edu/~darko] |
| [Tom VanDrunen|http://www.cs.purdue.edu/people/vandrutj] | Ian Warrington | [Mark Wielaard|http://klomp.org/mark] | [Yuval Yarom|http://www.cs.adelaide.edu.au/~yval/] |
| [Lingli Zhang|http://www.cs.ucsb.edu/~lingli_z] | [Jisheng Zhao|http://www.cs.manchester.ac.uk/apt/people/jzhao/] |
Jikes RVM uses the class libraries produced by the [GNU Classpath project|http://www.gnu.org/software/classpath].
Jikes RVM uses either the class libraries produced by the [GNU Classpath project|http://www.gnu.org/software/classpath] or [Apache Harmony|http://harmony.apache.org/].
Thanks to [David R. Hanson|http://research.microsoft.com/~drh],[Christoper W. Fraser|http://research.microsoft.com/~cwfraser], and [Todd Proebsting|http://research.microsoft.com/~toddpro] for making available the [iburg tool|http://cs.princeton.edu/software/iburg], which we've enhanced for use in Jikes RVM.
[Contributors|http://www.research.ibm.com/jalapeno/members.html] to the Jalapeño research project
Thanks to [Codehaus|http://www.codehaus.org] and [Sourceforge|http://www.sourceforge.org] for providing hosting services.
View All Revisions |
Revert To Version 11
[Less]
|
|
Posted
over 17 years
ago
by
David Grove
Page
edited by
David Grove
Releases of Jikes RVM are available from the Sourceforge download page.
The most recent release of Jikes RVM is 3.0.0.
... [More]
View Online
Changes between revision 6
and revision 7:
Releases of Jikes RVM are available from the Sourceforge [download|http://sourceforge.net/project/showfiles.php?group_id=128805] page.
The most recent release of Jikes RVM is [2.9.3|http://downloads.sourceforge.net/jikesrvm/jikesrvm-2.9.3.tar.bz2].
The most recent release of Jikes RVM is [3.0.0|http://downloads.sourceforge.net/jikesrvm/jikesrvm-3.0.0.tar.bz2].
View All Revisions |
Revert To Version 6
[Less]
|
|
Posted
over 17 years
ago
by
Ian Rogers
Page
edited by
Ian Rogers
- "Update to reflect building of Harmony as a class library."
This guide describes how to build Jikes RVM. The first section is an
... [More]
overview of the Jikes RVM build process and this is followed by your system requirements and a detailed description of the steps required to build Jikes RVM.
Note
Once you have things working, as described below, the buildit script will provide a fast and easy way to build the system. We recommend you get things working as described below first, so you can be sure you've met the requisite dependencies etc.
Overview
Compiling the source code
The majority of Jikes RVM is written in Java and will be compiled into class files just as with other Java applications. There is also a small portion of Jikes RVM that is written in C that must be compiled with a C compiler such as gcc. Jikes RVM uses Ant version 1.6.5 or later as the build tool that orchestrates the build process and executes the steps required in building Jikes RVM.
Note
Jikes RVM requires a complete install of ant, including the optional tasks. These are present if you download and install ant manually. Some Linux distributions have decided to break ant into multiple packages. So if you are installing on a platform such as Debian you may need to install another package such as 'ant-optional'.
Generating source code
The build process also generates Java and C source code based on build time constants such as the selected instruction architecture, garbage collectors and compilers. The generation of the source code occurs prior to the compilation phase.
Bootstrapping the RVM
Jikes RVM compiles Java class files and produces arrays of code and data. To build itself Jikes RVM will execute on an existing Java Virtual Machine and compiles a copy of it's own class files into a boot image for the code and data using the boot image writer tool. The set of files compiled is called the Primordial Class List. The boot image runner is a small C program that loads the boot image and transfers control flow into Jikes RVM.
Class libraries
The Java class library is the mechanism by which Java programs communicate with the outside world. Jikes RVM has configurable class library support, the most mature of which is the the GNU Classpath class library. In the release version of Jikes RVM is support for the Apache Harmony class library.
For GNU Classpath, the developer can either specify a particular version of GNU Classpath to use. By default the build process will download and build GNU Classpath.
Setting the ant property classlib.provider to Harmony (see how to define ant properties) will change the build process to download and build the Apache Harmony class library.
Target Requirements
Jikes RVM is known to build and work on certain combinations of instruction architectures and operating systems. The following sections detail the supported architectures and operating systems.
Architectures
The PowerPC (or ppc) and ia32 instruction set architectures are supported by Jikes RVM.
Intel
Intel's Instruction Set Architectures (ISAs) get known by different names:
IA-32 is the name used to describe processors such as 386, 486 and the Pentium processors. It is popularly called x86 or sometimes in our documentation as x86-32.
IA-32e is the name used to describe the extension of the IA-32 architecture to support 8 more registers and a 64-bit address space. It is popularly called x86_64 or AMD64, as AMD chips were the first to support it. It is found in processors such AMD's Opteron and Athlon 64, as well as in Intel's own Pentium 4 processors that have EM64T in their name.
IA-64 is the name of Intel's Itanium processor ISA.
Jikes RVM currently supports the IA-32 ISA. As IA-32e is backward compatible with IA-32, Jikes RVM can be built and run upon IA-32e processors. The IA-64 architecture supports IA-32 code through a compatibility mode or through emulation and Jikes RVM should run in this configuration.
Operating Systems
Jikes RVM is capable of running on any operating system that is supported by the GNU Classpath library, low level library support is implemented and memory layout is defined. The low level library support includes interaction with the threading and signal libraries, memory management facilities and dynamic library loading services. The memory layout must also be known, as Jikes RVM will attempt to locate the boot image code and data at specific memory locations. These memory locations must not conflict with where the native compiler places it's code and data. Operating systems that are known to work include AIX, Linux and OSX. At one stage a port to win32 was completed but it was never integrated into the main Jikes RVM codebase.
Support Matrix
The following table details the targets that have historically been supported and the current status of the support. The target.name column is the identifier that Jikes RVM uses to identify this target.
target.name
Operating System
Instruction Architecture
Address Size
Status
ia32-linux
Linux
ia32
32 bits
OK
ia32-osx
OSX
ia32
32 bits
Unknown
ia32-solaris
Solaris
ia32
32 bits
OK
ppc32-aix
AIX
PowerPC
32 bits
OK
ppc32-linux
Linux
PowerPC
32 bits
OK
ppc32-osx
OSX
PowerPC
32 bits
OK
ppc64-aix
AIX
PowerPC
64 bits
OK
ppc64-linux
Linux
PowerPC
64 bits
Not Working
x86_64-linux
Linux
ia32
32 bits*
OK
x86_64 is currently only supported using the legacy 32bit addressing mode and instructions.
Tool Requirements
Java Virtual Machine
Jikes RVM requires an existing Java Virtual Machine that conforms to Java 5.0 such as Sun JDK 1.5 or IBM JDK 5.0. Some Java Virtual Machines are unable to cope with compiling the Java class library so it is recomended that you install one of the above mentioned JVMs if they are not already installed on your system. The remaining build instructions assume that this Java Virtual Machine on your path. You can run "java -version" to check you are using the correct JVM.
Ant
Ant version 1.6.5 or later is the tool required to orchestrate the build process. You can download and install the Ant tool from http://ant.apache.org/ if it is not already installed on your system. The remaining build instructions assume that $ANT_HOME/bin is on your path. You can run "ant -version" to check you are running the correct version of ant.
C Tool Chain
Jikes RVM assumes that the GNU C Tool Chain is present on the system or a tool chain that is reasonably compatible. Most modern *nix environments satisfy this requirement.
Bison
As part of the build process, Jikes RVM uses the bison tool which should be present on most modern *nix environments.
Perl
Perl is trivially used as part of the build process but this requirement may be removed in future releases of Jikes RVM. Perl is also used as part of the regression and performance testing framework.
Awk
GNU Awk is required as part of the regression and performance testing framework but is not required when building Jikes RVM.
Extra tools recommended for Solaris
pkg-get will greatly simplify installing GNU packages on Solaris. Our patches require that GNU patch is picked up in preference to Sun's, to achieve this, for example, you can create a symbolic link to /usr/bin/gpatch from /opt/csw/bin/patch and make sure /opt/csw/bin is in your path before /usr/bin.
Instructions
Defining Ant properties
There are a number of ant properties that are used to control the build process of Jikes RVM. These properties may either be specified on the command line by "-Dproperty=variable" or they may be specified in a file named ".ant.properties" in the base directory of the jikesrvm source tree. The ".ant.properties" file is a standard Java proeprty file with each line containing a "property=variable" and comments starting with a # and finishing at the end of the line. The following table describes some properties that are commonly specified.
Property
Description
Default
host.name
The name of the host environment used for building Jikes RVM. The name should match one of the files located in the build/hosts/ directory minus the '.properties' extension.
None
target.name
The name of the target environment for Jikes RVM. The name should match one of the files located in the build/targets/ directory minus the '.properties' extension. This should only be specified when cross compiling the Jikes RVM. See Cross-Platform Building for a detailed description of cross compilation.
${host.name}
config.name
The name of the configuration used when building Jikes RVM. The name should match one of the files located in the build/configs/ directory minus the '.properties' extension. This setting is further described in the section Configuring the RVM.
None
patch.name
An identifier for the current patch applied to the source tree. See Building Patched Versions for a description of how this fits into the standard usage patterns of Jikes RVM.
""
components.dir
The directory where Ant looks for external components when building the RVM.
${jikesrvm.dir}/components
dist.dir
The directory where Ant stores the final Jikes RVM runtime.
${jikesrvm.dir}/dist
build.dir
The directory where Ant stores the intermediate artifacts generated when building the Jikes RVM.
${jikesrvm.dir}/target
protect.config-files
Define this property if you do not want the build process to update configuration files when auto downloading components.
(Undefined)
components.cache.dir
The directory where Ant caches downloaded components. If you explicitly download a component, place it in this directory.
(Undefined, forcing download)
At a minimum it is recommended that the user specify the host.name property in the ".ant.properties" file.
The configuration files in "build/targets/" and "build/hosts/" are designed to work with a typical install but it may be necessary to overide specific properties. The easiest way to achieve this is to specify the properties to override in the ".ant.properties" file.
Selecting a Configuration
A "configuration" in terms of Jikes RVM is the combination of build time parameters and component selection used for a particular Jikes RVM image. The Configuring the RVM section describes the details of how to define a configuration. Typical configuration names include;
production: This configuration defines a fully optimized version of the Jikes RVM.
development: This configuration is the same as production but with debug options enabled. The debug options perform internal verification of Jikes RVM which means that it builds and executes more slowly.
prototype: This configuration is compiled using an unoptimized compiler and includes minimal components which means it has the fastest build time.
prototype-opt: This configuration is compiled using an unoptimized compiler but it includes the adaptive system and optimizing compiler. This configuration has a reasonably fast build time.
If a user is working on a particular configuration most of the time they may specify the config.name ant property in ".ant.properties" otherwise it should be passed in on the command line "-Dconfig.name=...".
Fetching Dependencies
The Jikes RVM has a build time dependency on the GNU Classpath class library and depending on the configuration may have a dependency on GCSpy. The build system will attempt to download and build these dependencies if they are not present or are the wrong version.
To just download and install the GNU Classpath class library you can run the command "ant -f build/components/classpath.xml". After this command has completed running it should have downloaded and built the GNU Classpath class library for the current host. See the Using GCSpy page for directions on building configurations with GCSpy support.
If you wish to manually download components (for example you need to define a proxy, so ant is not correctly downloading), you can do so and identify the directory containing the downloads using "-Dcomponents.cache.dir=<download directory>" when you build with ant.
Building the RVM
The next step in building Jikes RVM is to run the ant command "ant" or "ant -Dconfig.name=...". This should build a complete RVM runtime in the directory "${dist.dir}/${config.name}_${target.name}". The following table describes some of the ant targets that can be executed. A complete list of documented targets can be listed by executing the command "ant -projecthelp"
Target
Description
check-properties
Check that all the required properties are defined.
compile-mmtk
Compile MMTk toolkit.
prepare-source
Generate configuration independent source code if required or force.generation property is set.
prepare-config-source
Generate source code for the current configuration if required or force.generation property is set.
main or runtime
Build a runtime image.
clean
Remove the build and image directory for the current configuration.
very-clean
As with clean but also remove Java files generated by scripts.
real-clean
As with very-clean but remove all compiled images.
profiled-image
Compile a baseline version of the RVM for profiling then use the profile information to recompile the given config.name image.
Running the RVM
Jikes RVM can be executed in a similar way to most Java Virtual Machines. The difference is that the command is "rvm" and resides in the runtime directory (i.e. "${dist.dir}/${config.name}_${target.name}"). See Running the RVM for a complete list of command line options.
View Online
Changes between revision 29
and revision 30:
This guide describes how to build Jikes RVM. The first section is an overview of the Jikes RVM build process and this is followed by your system requirements and a detailed description of the steps required to build Jikes RVM.
{note:title=Note}
Once you have things working, as described below, the [buildit|Using buildit] script will provide a fast and easy way to build the system. We recommend you get things working as described below first, so you can be sure you've met the requisite dependencies etc.
{note}
h2. Overview
h3. Compiling the source code
The majority of Jikes RVM is written in Java and will be compiled into class files just as with other Java applications. There is also a small portion of Jikes RVM that is written in C that must be compiled with a C compiler such as gcc. Jikes RVM uses [Ant|http://ant.apache.org] version 1.6.5 or later as the build tool that orchestrates the build process and executes the steps required in building Jikes RVM.
{note:title=Note}
Jikes RVM requires a complete install of ant, including the optional tasks. These are present if you download and install ant manually. Some Linux distributions have decided to break ant into multiple packages. So if you are installing on a platform such as Debian you may need to install another package such as 'ant-optional'.
{note}
h3. Generating source code
The build process also generates Java and C source code based on build time constants such as the selected instruction architecture, garbage collectors and compilers. The generation of the source code occurs prior to the compilation phase.
h3. Bootstrapping the RVM
Jikes RVM compiles Java class files and produces arrays of code and data. To build itself Jikes RVM will execute on an existing Java Virtual Machine and compiles a copy of it's own class files into a *boot image* for the code and data using the *boot image writer* tool. The set of files compiled is called the [Primordial Class List]. The *boot image runner* is a small C program that loads the boot image and transfers control flow into Jikes RVM.
h3. Class libraries
The Java class library is the mechanism by which Java programs communicate with the outside world. Jikes RVM uses the [GNU Classpath|http://www.gnu.org/software/classpath/] class library. The developer can either specify a particular version of GNU Classpath to use or they can allow the build process to download and build an appropriate version of the library.
The Java class library is the mechanism by which Java programs communicate with the outside world. Jikes RVM has configurable class library support, the most mature of which is the the [GNU Classpath|http://www.gnu.org/software/classpath/] class library. In the release version of Jikes RVM is support for the [Apache Harmony|http://harmony.apache.org/] class library.
For GNU Classpath, the developer can either specify a particular version of GNU Classpath to use. By default the build process will download and build GNU Classpath.
Setting the ant property *classlib.provider* to *Harmony* ([see how to define ant properties|#Defining Ant properties]) will change the build process to download and build the Apache Harmony class library.
h2. Target Requirements
Jikes RVM is known to build and work on certain combinations of instruction architectures and operating systems. The following sections detail the supported architectures and operating systems.
h3. Architectures
The PowerPC (or ppc) and ia32 instruction set architectures are supported by Jikes RVM.
h4. Intel
Intel's Instruction Set Architectures (ISAs) get known by different names:
* *IA-32* is the name used to describe processors such as 386, 486 and the Pentium processors. It is popularly called *x86* or sometimes in our documentation as x86-32.
* *IA-32e* is the name used to describe the extension of the IA-32 architecture to support 8 more registers and a 64-bit address space. It is popularly called *x86_64* or *AMD64*, as AMD chips were the first to support it. It is found in processors such AMD's Opteron and Athlon 64, as well as in Intel's own Pentium 4 processors that have *EM64T* in their name.
* *IA-64* is the name of Intel's Itanium processor ISA.
Jikes RVM currently supports the IA-32 ISA. As IA-32e is backward compatible with IA-32, Jikes RVM can be built and run upon IA-32e processors. The IA-64 architecture supports IA-32 code through a compatibility mode or through emulation and Jikes RVM should run in this configuration.
h3. Operating Systems
Jikes RVM is capable of running on any operating system that is supported by the [GNU Classpath|http://www.gnu.org/software/classpath/] library, low level library support is implemented and memory layout is defined. The low level library support includes interaction with the threading and signal libraries, memory management facilities and dynamic library loading services. The memory layout must also be known, as Jikes RVM will attempt to locate the boot image code and data at specific memory locations. These memory locations must not conflict with where the native compiler places it's code and data. Operating systems that are known to work include AIX, Linux and OSX. At one stage a port to win32 was completed but it was never integrated into the main Jikes RVM codebase.
h3. Support Matrix
The following table details the targets that have historically been supported and the current status of the support. The target.name column is the identifier that Jikes RVM uses to identify this target.
|| target.name || Operating System || Instruction Architecture || Address Size || Status ||
| ia32-linux | Linux \\ | ia32 \\ | 32 bits \\ | OK \\ |
| ia32-osx | OSX \\ | ia32 \\ | 32 bits \\ | Unknown \\ |
| ia32-solaris | Solaris | ia32 | 32 bits | OK |
| ppc32-aix | AIX | PowerPC \\ | 32 bits \\ | OK \\ |
| ppc32-linux \\ | Linux \\ | PowerPC \\ | 32 bits \\ | OK \\ |
| ppc32-osx \\ | OSX \\ | PowerPC \\ | 32 bits \\ | OK \\ |
| ppc64-aix \\ | AIX \\ | PowerPC \\ | 64 bits \\ | OK \\ |
| ppc64-linux \\ | Linux \\ | PowerPC \\ | 64 bits | Not Working \\ |
| x86_64-linux \\ | Linux \\ | ia32 \\ | 32 bits\* \\ | OK \\ |
* x86_64 is currently only supported using the legacy 32bit addressing mode and instructions.
h2. Tool Requirements
h3. Java Virtual Machine
Jikes RVM requires an existing Java Virtual Machine that conforms to Java 5.0 such as [Sun JDK 1.5|http://java.sun.com] or IBM JDK 5.0. Some Java Virtual Machines are unable to cope with compiling the Java class library so it is recomended that you install one of the above mentioned JVMs if they are not already installed on your system. The remaining build instructions assume that this Java Virtual Machine on your path. You can run "{{java \-version}}" to check you are using the correct JVM.
h3. Ant
[Ant|http://ant.apache.org] version 1.6.5 or later is the tool required to orchestrate the build process. You can download and install the Ant tool from [http://ant.apache.org/] if it is not already installed on your system. The remaining build instructions assume that $ANT_HOME/bin is on your path. You can run "{{ant \-version}}" to check you are running the correct version of ant.
h3. C Tool Chain
Jikes RVM assumes that the GNU C Tool Chain is present on the system or a tool chain that is reasonably compatible. Most modern \*nix environments satisfy this requirement.
h3. Bison
As part of the build process, Jikes RVM uses the bison tool which should be present on most modern \*nix environments.
h3. Perl
Perl is trivially used as part of the build process but this requirement may be removed in future releases of Jikes RVM. Perl is also used as part of the regression and performance testing framework.
h3. Awk
GNU Awk is required as part of the regression and performance testing framework but is not required when building Jikes RVM.
h3. Extra tools recommended for Solaris
pkg-get will greatly simplify installing GNU packages on Solaris. Our patches require that GNU patch is picked up in preference to Sun's, to achieve this, for example, you can create a symbolic link to /usr/bin/gpatch from /opt/csw/bin/patch and make sure /opt/csw/bin is in your path before /usr/bin.
h2. Instructions
h3. Defining Ant properties
There are a number of ant properties that are used to control the build process of Jikes RVM. These properties may either be specified on the command line by "{{\-Dproperty=variable}}" or they may be specified in a file named "{{.ant.properties}}" in the base directory of the jikesrvm source tree. The "{{.ant.properties}}" file is a standard Java proeprty file with each line containing a "{{property=variable}}" and comments starting with a _\#_ and finishing at the end of the line. The following table describes some properties that are commonly specified.
|| Property || Description || Default ||
| host.name | The name of the host environment used for building Jikes RVM. The name should match one of the files located in the [{{build/hosts/}}|http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/build/hosts/] directory minus the '{{.properties}}' extension. \\ | None |
| target.name | The name of the target environment for Jikes RVM. The name should match one of the files located in the [{{build/targets/}}|http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/build/targets/] directory minus the '{{.properties}}' extension. This should only be specified when cross compiling the Jikes RVM. See [Cross-Platform Building] for a detailed description of cross compilation. \\ | {{$\{host.name\}}} \\ |
| config.name | The name of the configuration used when building Jikes RVM. The name should match one of the files located in the [{{build/configs/}}|http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/build/configs/] directory minus the '{{.properties}}' extension. This setting is further described in the section [Configuring the RVM]. | None |
| patch.name \\ | An identifier for the current patch applied to the source tree. See [Building Patched Versions] for a description of how this fits into the standard usage patterns of Jikes RVM. | "" |
| components.dir \\ | The directory where Ant looks for external components when building the RVM. \\ | {{$\{jikesrvm.dir\}/components}} \\ |
| dist.dir \\ | The directory where Ant stores the final Jikes RVM runtime. \\ | {{$\{jikesrvm.dir\}/dist}} \\ |
| build.dir \\ | The directory where Ant stores the intermediate artifacts generated when building the Jikes RVM. | {{$\{jikesrvm.dir\}/target}} \\ |
| protect.config-files | Define this property if you do not want the build process to update configuration files when auto downloading components. | (Undefined) |
| components.cache.dir | The directory where Ant caches downloaded components. If you explicitly download a component, place it in this directory. \\ | (Undefined, forcing download) |
At a minimum it is recommended that the user specify the {{host.name}} property in the "{{.ant.properties}}" file.
The configuration files in "[{{build/targets/}}|http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/build/targets/]" and "[{{build/hosts/}}|http://svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/build/hosts/]" are designed to work with a typical install but it may be necessary to overide specific properties. The easiest way to achieve this is to specify the properties to override in the "_.ant.properties_" file.
h3. Selecting a Configuration
A "configuration" in terms of Jikes RVM is the combination of build time parameters and component selection used for a particular Jikes RVM image. The [Configuring the RVM] section describes the details of how to define a configuration. Typical configuration names include;
* *production*: This configuration defines a fully optimized version of the Jikes RVM.
* *development*: This configuration is the same as production but with debug options enabled. The debug options perform internal verification of Jikes RVM which means that it builds and executes more slowly.
* *prototype*: This configuration is compiled using an unoptimized compiler and includes minimal components which means it has the fastest build time.
* *prototype-opt*: This configuration is compiled using an unoptimized compiler but it includes the adaptive system and optimizing compiler. This configuration has a reasonably fast build time.
If a user is working on a particular configuration most of the time they may specify the config.name ant property in "{{.ant.properties}}" otherwise it should be passed in on the command line "{{\-Dconfig.name=...}}".
h3. Fetching Dependencies
The Jikes RVM has a build time dependency on the [GNU Classpath|http://www.gnu.org/software/classpath/] class library and depending on the configuration may have a dependency on [GCSpy|http://www.cs.kent.ac.uk/projects/gc/gcspy/]. The build system will attempt to download and build these dependencies if they are not present or are the wrong version.
To just download and install the [GNU Classpath|http://www.gnu.org/software/classpath/] class library you can run the command "{{ant \-f build/components/classpath.xml}}". After this command has completed running it should have downloaded and built the [GNU Classpath|http://www.gnu.org/software/classpath/] class library for the current host. See the [Using GCSpy] page for directions on building configurations with GCSpy support.
If you wish to manually download components (for example you need to define a proxy, so ant is not correctly downloading), you can do so and identify the directory containing the downloads using "{{\-Dcomponents.cache.dir=<download directory>}}" when you build with ant.
h3. Building the RVM
The next step in building Jikes RVM is to run the ant command "{{ant}}" or "{{ant \-Dconfig.name=...}}". This should build a complete RVM runtime in the directory "$\{dist.dir\}/$\{config.name\}_$\{target.name\}". The following table describes some of the ant targets that can be executed. A complete list of documented targets can be listed by executing the command "{{ant \-projecthelp}}"
|| Target || Description ||
| check-properties | Check that all the required properties are defined. |
| compile-mmtk | Compile MMTk toolkit. \\ |
| prepare-source | Generate configuration independent source code if required or force.generation property is set. |
| prepare-config-source | Generate source code for the current configuration if required or force.generation property is set. \\ |
| main or runtime \\ | Build a runtime image. |
| clean | Remove the build and image directory for the current configuration. \\ |
| very-clean | As with clean but also remove Java files generated by scripts. \\ |
| real-clean | As with very-clean but remove all compiled images. \\ |
| profiled-image | Compile a baseline version of the RVM for profiling then use the profile information to recompile the given {{config.name}} image. \\ |
h3. Running the RVM
Jikes RVM can be executed in a similar way to most Java Virtual Machines. The difference is that the command is "{{rvm}}" and resides in the runtime directory (i.e. "$\{dist.dir\}/$\{config.name\}_$\{target.name\}"). See [Running the RVM] for a complete list of command line options.
View All Revisions |
Revert To Version 29
[Less]
|
|
Posted
over 17 years
ago
by
jisheng zhao
Page
edited by
jisheng zhao
Jikes™ RVM executes Java virtual machine byte code instructions from .class files. It does not compile Java™ source code. Therefore, you must
... [More]
compile all Java source files into bytecode using your favorite Java compiler.
For example, to run class foo with source code in file foo.java:
% javac foo.java
% rvm foo
The general syntax is
rvm [rvm options...] class [args...]
You may choose from a myriad of options for the rvm command-line. Options fall into two categories: standard and non-standard. Non-standard options are preceded by "-X:".
Standard Command-Line Options
We currently support a subset of the JDK 1.5 standard options. Below is a list of all options and their descriptions. Unless otherwise noted each option is supported in Jikes RVM.
Option
Description
{-cp or -classpath} <directories and zip/jar files separated by ":">
set search path for application classes and resources
-D<name>=<value>
set a system property
-verbose:[ class | gc | jni ]
enable verbose output
-version
print current VM version and terminate the run
-showversion
print current VM version and continue running
-fullversion
like "-version", but with more information
-? or -help
print help message
-X
print help on non-standard options
-jar
execute a jar file
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
Non-Standard Command-Line Options
The non standard command-line options are grouped according to the subsystem that they control. The following sections list the available options in each group.
Core Non-Standard Command-Line Options
Option
Description
-X:verbose
Print out additional lowlevel information for GC and hardware trap handling
-X:verboseBoot=<number>
Print out additional information while VM is booting, using verbosity level <number>
-X:sysLogfile=<filename>
Write standard error message to <filename>
-X:ic=<filename>
Read boot image code from <filename>
-X:id=<filename>
Read boot image data from <filename>
-X:ir=<filename>
Read boot image ref map from <filename>
-X:vmClasses=<path>
Load the com.ibm.jikesrvm.* and java.* classes from <path>
-X:cpuAffinity=<number>
The physical CPU to which first virtual processor is bound
-X:processors=<number|"all">
The number of virtual processors
Memory Non-Standard Command-Line Options
Option
Description
-Xms<number><unit>
Initial size of heap where <number> is an integer, an extended-precision floating point or a hexadecimal value and <unit> is one of T (Terabytes), G (Gigabytes), M (Megabytes), pages (of size 4096), K (Kilobytes) or <no unit> for bytes
-Xmx<number><unit>
Maximum size of heap. See above for definition of <number> and <unit>
Garbage Collector Non-Standard Command-Line Options
These options are all prefixed by -X:gc:.
Boolean options.
Option
Description
protectOnRelease
Should memory be protected on release?
echoOptions
Echo when options are set?
printPhaseStats
When printing statistics, should statistics for each gc-mutator phase be printed?
xmlStats
Print end-of-run statistics in XML format
eagerCompleteSweep
Should we eagerly finish sweeping at the start of a collection
fragmentationStats
Should we print fragmentation statistics for the free list allocator?
verboseFragmentationStats
Should we print verbose fragmentation statistics for the free list allocator?
verboseTiming
Should we display detailed breakdown of where GC time is spent?
noFinalizer
Should finalization be disabled?
noReferenceTypes
Should reference type processing be disabled?
fullHeapSystemGC
Should a major GC be performed when a system GC is triggered?
ignoreSystemGC
Should we ignore calls to java.lang.System.gc?
variableSizeHeap
Should we shrink/grow the heap to adjust to application working set?
eagerMmapSpaces
If true, all spaces are eagerly demand zero mmapped at boot time
sanityCheck
Perform sanity checks before and after each collection?
Value options.
Option
Type
Description
markSweepMarkBits
int
Number of bits to use for the header cycle of mark sweep spaces
verbose
int
GC verbosity level
stressFactor
bytes
Force a collection after this much allocation
metaDataLimit
bytes
Trigger a GC if the meta data volume grows to this limit
boundedNursery
bytes
Bound the maximum size of the nursery to this value
fixedNursery
bytes
Fix the minimum and maximum size of the nursery to this value
debugAddress
address
Specify an address at runtime for use in debugging
Base Compiler Non-Standard Command-Line Options
Boolean options
Option
Description
edge_counters
Insert edge counters on all bytecode-level conditional branches
invocation_counters
Select methods for optimized recompilation by using invocation counters
Opt Compiler Non-Standard Command-Line Options
Boolean options.
Option
Description
local_constant_prop
Perform local constant propagation
local_copy_prop
Perform local copy propagation
local_cse
Perform local common subexpression elimination
global_bounds_check
Perform global Array Bound Check elimination on Demand
monitor_removal
Try to remove unnecessary monitor operations
invokee_thread_local
Compile the method assuming the invokee is thread-local
no_callee_exceptions
Assert that any callee of this compiled method will not throw exceptions?
simple_escape_ipa
Eagerly compute method summaries for simple escape analysis
field_analysis
Eagerly compute method summaries for flow-insensitive field analysis
scalar_replace_aggregates
Perform scalar replacement of aggregates
reorder_code
Reorder basic blocks for improved locality and branch prediction
reorder_code_ph
Reorder basic blocks using Pettis and Hansen Algo2
inline_new
Inline allocation of scalars and arrays
inline_write_barrier
Inline write barriers for generational collectors
inline
Inline statically resolvable calls
guarded_inline
Guarded inlining of non-final virtual calls
guarded_inline_interface
Speculatively inline non-final interface calls
static_splitting
CFG splitting to create hot traces based on static heuristics
redundant_branch_elimination
Eliminate redundant conditional branches
preex_inline
Pre-existence based inlining
ssa
Should SSA form be constructed on the HIR?
load_elimination
Should we perform redundant load elimination during SSA pass?
coalesce_after_ssa
Should we coalesce move instructions after leaving SSA?
expression_folding
Should we try to fold expressions with constants in SSA form?
live_range_splitting
Split live ranges using LIR SSA pass?
gcp
Perform global code placement
gcse
Perform global code placement
verbose_gcp
Perform noisy global code placement
licm_ignore_pei
Assume PEIs do not throw or state is not observable
turn_whiles_into_until
Turn whiles into untils
loop_versioning
Loop versioning
handler_liveness
Store liveness for handlers to improve dependence graph at PEIs
schedule_prepass
Perform prepass instruction scheduling
no_checkcast
Should all checkcast operations be (unsafely) eliminated?
no_checkstore
Should all checkstore operations be (unsafely) eliminated?
no_bounds_check
Should all bounds check operations be (unsafely) eliminated?
no_null_check
Should all null check operations be (unsafely) eliminated?
no_synchro
Should all synchronization operations be (unsafely) eliminated?
no_threads
Should all yield points be (unsafely) eliminated?
no_cache_flush
Should cache flush instructions (PowerPC SYNC/ISYNC) be omitted? NOTE: Cannot be correctly changed via the command line!
reads_kill
Should we constrain optimizations by enforcing reads-kill?
monitor_nop
Should we treat all monitorenter/monitorexit bytecodes as nops?
static_stats
Should we dump out compile-time statistics for basic blocks?
code_patch_nop
Should all patch point be (unsafely) eliminated (at initial HIR)?
instrumentation_sampling
Perform code transformation to sample instrumentation code.
no_duplication
When performing inst. sampling, should it be done without duplicating code?
processor_specific_counter
Should there be one CBS counter per processor for SMP performance?
remove_yp_from_checking
Should yieldpoints be removed from the checking code (requires finite sample interval).
Value options.
Option
Description
ic_max_target_size
Static inlining heuristic: Upper bound on callee size
ic_max_inline_depth
Static inlining heuristic: Upper bound on depth of inlining
ic_max_always_inline_target_size
Static inlining heuristic: Always inline callees of this size or smaller
ic_massive_method_size
Static inlining heuristic: If root method is already this big, then only inline trivial methods
ai_max_target_size
Adaptive inlining heuristic: Upper bound on callee size
ai_min_callsite_fraction
Adaptive inlining heuristc: Minimum fraction of callsite distribution for guarded inlining of a callee
edge_count_input_file
Input file of edge counter profile data
inling_guard
Selection of guard mechanism for inlined virtual calls that cannot be statically bound
fp_mode
Selection of strictness level for floating point computations
exclude
Exclude methods from being opt compiled
unroll_log
Unroll loops. Duplicates the loop body 2^n times.
cond_move_cutoff
How many extra instructions will we insert in order to remove a conditional branch?
load_elimination_rounds
How many rounds of redundant load elimination will we attempt?
alloc_advice_sites
Read allocation advice attributes for all classes from this file
frequency_strategy
How to compute block and edge frequencies?
spill_cost_estimate
Selection of spilling heuristic
infrequent_threshold
Cumulative threshold which defines the set of infrequent basic blocks
cbs_hotness
Threshold at which a conditional branch is considered to be skewed
ir_print_level
Only print IR compiled above this level
Adaptive System Non-Standard Command-Line Options
Boolean options
Option
Description
enable_recompilation
Should the adaptive system recompile hot methods?
enable_advice_generation
Do we need to generate advice file?
enable_precompile
Should the adaptive system precompile all methods given in the advice file before the user thread is started?
enable_replay_compile
Should the adaptive system use the pseudo-adaptive system that solely relies on the advice file?
gather_profile_data
Should profile data be gathered and reported at the end of the run?
adaptive_inling
Should we use adaptive feedback-directed inlining?
early_exit
Should AOS exit when the controller clock reaches early_exit_value?
osr_promotion
Should AOS promote baseline-compiled methods to opt?
background_recompilation
Should recompilation be done on a background thread or on next invocation?
insert_yieldpoint_counters
Insert instrumentation in opt recompiled code to count yieldpoints executed?
insert_method_counters_opt
Insert intrusive method counters in opt recompiled code?
insert_instruction_counters
Insert counters on all instructions in opt recompiled code?
insert_debugging_counters
Enable easy insertion of (debugging) counters in opt recompiled code.
report_interrupt_stats
Report stats related to timer interrupts and AOS listeners on exit.
disable_recompile_all_methods
Disable the ability for an app to request all methods to be recompiled.
Value options
Option
Description
method_sample_size
How many timer ticks of method samples to take before reporting method hotness to controller.
initial_compiler
Selection of initial compiler.
recompilation_strategy
Selection of mechanism for identifying methods for optimizing recompilation.
method_listener_trigger
What triggers us to take a method sample?
call_graph_listener_trigger
What triggers us to take a method sample?
logfile_name
Name of log file.
compilation_advice_file_output
Name of advice file.
dynamic_call_file_output
Name of dynamic call graph file.
compiler_dna_file
Name of compiler DNA file (no name ==> use default DNA). Discussed in a comment at the head of VM_CompilerDNA.java.
compiler_advice_file_input
File containing information about the methods to Opt compile.
dynamic_call_file_input
File containing information about the hot call sites.
logging_level
Control amount of event logging (larger ==> more).
final_report_level
Control amount of info reported on exit (larger ==> more).
decay_frequency
After how many clock ticks should we decay.
dcg_decay_rate
What factor should we decay call graph edges hotness by.
dcg_sample_size
After how many timer interrupts do we update the weights in the dynamic call graph?
ai_seed_multipiler
Initial edge weight of call graph is set to ai_seed_multipler * (1/ai_control_point).
offline_inline_plan_name
Name of offline inline plan to be read and used for inlining.
early_exit_time
Value of controller clock at which AOS should exit if early_exit is true.
invocation_count_threshold
Invocation count at which a baseline compiled method should be recompiled.
invocation_count_opt_level
Opt level for recompilation in invocation count based system.
counter_based_sample_interval
What is the sample interval for counter-based sampling.
ai_hot_callsite_threshold
What percentage of the total weight of the dcg demarcates warm/hot edges.
max_opt_level
The maximum optimization level to enable.
Virtual Machine Non-Standard Command-Line Options
Boolean Options
Option
Description
measureCompilation
Time all compilations and report on exit.
measureCompilationPhases
Time all compilation sub-phases and report on exit.
stackTraceFull
Stack traces to consist of VM and application frames.
stackTraceAtExit
Dump a stack trace (via VM.syswrite) upon exit.
verboseTraceClassLoading
More detailed tracing then -verbose:class.
errorsFatal
Exit when non-fatal errors are detected; used for regression testing.
Value options
Option
Description
maxSystemTroubleRecursionDepth
If we get deeper than this in one of the System Trouble functions, try to die.
interruptQuantum
Timer interrupt scheduling quantum in ms.
schedulingMultiplier
Scheduling quantum = interruptQuantum * schedulingMultiplier.
traceThreadScheduling
Trace actions taken by thread scheduling.
verboseStackTracePeriod
Trace every nth time a stack trace is created.
edgeCounterFile
Input file of edge counter profile data.
CBSCallSamplesPerTick
How many CBS call samples (Prologue/Epilogue) should we take per time tick.
CBSCallSampleStride
Stride between each CBS call sample (Prologue/Epilogue) within a sampling window.
CBSMethodSamplesPerTick
How many CBS method samples (any yieldpoint) should we take per time tick.
CBSMethodSampleStride
Stride between each CBS method sample (any yieldpoint) within a sampling window.
Running Jikes RVM with valgrind
Jikes RVM can run under valgrind, as of SVN revision 6791 (29-Aug-2007). Applying a patch of this revision to release 3.2.1 should also produce a working system. Versions of valgrind CVS prior to release 3.0 are also known to have worked.
To run a Jikes RVM build with valgrind, use the -wrap flag to invoke valgrind, eg
rvm -wrap "path/to/valgrind --smc-check=all <valgrind-options>" <jikesrvm-options> ...
this will insert the invocation of valgrind at the appropriate place for it to operate on Jikes RVM proper rather than a wrapper script.
Under some circumstances, valgrind will load shared object libraries or allocate memory in areas of the heap that conflict with Jikes RVM. Using the flag -X:gc:eagerMmapSpaces=true will prevent and/or detect this. If this flag reveals errors while mapping the spaces, you will need to rearrange the heap to avoid the addresses that valgrind is occupying.
View Online
Changes between revision 20
and revision 21:
Jikes[™|Trademarks] RVM executes Java virtual machine byte code instructions from {{.class}} files. It does _not_ compile Java[™|Trademarks] source code. Therefore, you must compile all Java source files into bytecode using your favorite Java compiler.
For example, to run class {{foo}} with source code in file {{foo.java}}:
{noformat}
% javac foo.java
% rvm foo
{noformat}
The general syntax is
{noformat}
rvm [rvm options...] class [args...]
{noformat}
You may choose from a myriad of options for the {{rvm}} command-line. Options fall into two categories: _standard_ and _non-standard_. Non-standard options are preceded by "{{*\-X:*}}".
h3. Standard Command-Line Options
We currently support a subset of the JDK 1.5 standard options. Below is a list of all options and their descriptions. Unless otherwise noted each option is supported in Jikes RVM.
|| Option || Description ||
| \{-cp or \-classpath\} <directories and zip/jar files separated by ":"> | set search path for application classes and resources |
| \-D<name>=<value> | set a system property |
| \-verbose:\[ class \| gc \| jni \] | enable verbose output |
| \-version | print current VM version and terminate the run |
| \-showversion | print current VM version and continue running |
| \-fullversion | like "-version", but with more information |
| \-? or \-help | print help message |
| \-X | print help on non-standard options |
| \-jar | execute a jar file |
| \-javaagent:<jarpath>\[=<options>\] | load Java programming language agent, see java.lang.instrument |
h3. Non-Standard Command-Line Options
The non standard command-line options are grouped according to the subsystem that they control. The following sections list the available options in each group.
h4. Core Non-Standard Command-Line Options
|| Option || Description ||
| \-X:verbose | Print out additional lowlevel information for GC and hardware trap handling |
| \-X:verboseBoot=<number> | Print out additional information while VM is booting, using verbosity level <number> |
| \-X:sysLogfile=<filename> | Write standard error message to <filename> |
| \-X:ic=<filename> | Read boot image code from <filename> |
| \-X:id=<filename> | Read boot image data from <filename> |
| \-X:ir=<filename> | Read boot image ref map from <filename> |
| \-X:vmClasses=<path> | Load the com.ibm.jikesrvm.\* and java.\* classes from <path> |
| \-X:cpuAffinity=<number> | The physical CPU to which first virtual processor is bound |
| \-X:processors=<number\|"all"> | The number of virtual processors |
h4. Memory Non-Standard Command-Line Options
|| Option || Description ||
| \-Xms<number><unit> | Initial size of heap where <number> is an integer, an extended-precision floating point or a hexadecimal value and <unit> is one of T (Terabytes), G (Gigabytes), M (Megabytes), pages (of size 4096), K (Kilobytes) or <no unit> for bytes |
| \-Xmx<number><unit> | Maximum size of heap. See above for definition of <number> and <unit> |
h4. Garbage Collector Non-Standard Command-Line Options
These options are all prefixed by {{\-X:gc:}}.
Boolean options.
|| Option || Description ||
| protectOnRelease | Should memory be protected on release? |
| echoOptions | Echo when options are set? |
| printPhaseStats | When printing statistics, should statistics for each gc-mutator phase be printed? |
| xmlStats | Print end-of-run statistics in XML format |
| eagerCompleteSweep | Should we eagerly finish sweeping at the start of a collection |
| fragmentationStats | Should we print fragmentation statistics for the free list allocator? |
| verboseFragmentationStats | Should we print verbose fragmentation statistics for the free list allocator? |
| verboseTiming | Should we display detailed breakdown of where GC time is spent? |
| noFinalizer | Should finalization be disabled? |
| noReferenceTypes | Should reference type processing be disabled? |
| fullHeapSystemGC | Should a major GC be performed when a system GC is triggered? |
| ignoreSystemGC | Should we ignore calls to java.lang.System.gc? |
| variableSizeHeap | Should we shrink/grow the heap to adjust to application working set? |
| eagerMmapSpaces | If true, all spaces are eagerly demand zero mmapped at boot time |
| sanityCheck | Perform sanity checks before and after each collection? |
Value options.
|| Option || Type || Description ||
| markSweepMarkBits | int | Number of bits to use for the header cycle of mark sweep spaces |
| verbose | int | GC verbosity level |
| stressFactor | bytes | Force a collection after this much allocation |
| metaDataLimit | bytes | Trigger a GC if the meta data volume grows to this limit |
| boundedNursery | bytes | Bound the maximum size of the nursery to this value |
| fixedNursery | bytes | Fix the minimum and maximum size of the nursery to this value |
| debugAddress | address | Specify an address at runtime for use in debugging |
h4. Base Compiler Non-Standard Command-Line Options
Boolean options
|| Option || Description ||
| edge_counters | Insert edge counters on all bytecode-level conditional branches |
| invocation_counters | Select methods for optimized recompilation by using invocation counters |
h4. Opt Compiler Non-Standard Command-Line Options
Boolean options.
|| Option || Description ||
| local_constant_prop | Perform local constant propagation |
| local_copy_prop | Perform local copy propagation |
| local_cse | Perform local common subexpression elimination |
| global_bounds_check | Perform global Array Bound Check elimination on Demand |
| monitor_removal | Try to remove unnecessary monitor operations |
| invokee_thread_local | Compile the method assuming the invokee is thread-local |
| no_callee_exceptions | Assert that any callee of this compiled method will not throw exceptions? |
| simple_escape_ipa | Eagerly compute method summaries for simple escape analysis |
| field_analysis | Eagerly compute method summaries for flow-insensitive field analysis |
| scalar_replace_aggregates | Perform scalar replacement of aggregates |
| reorder_code | Reorder basic blocks for improved locality and branch prediction |
| reorder_code_ph | Reorder basic blocks using Pettis and Hansen Algo2 |
| inline_new | Inline allocation of scalars and arrays |
| inline_write_barrier | Inline write barriers for generational collectors |
| inline | Inline statically resolvable calls |
| guarded_inline | Guarded inlining of non-final virtual calls |
| guarded_inline_interface | Speculatively inline non-final interface calls |
| static_splitting | CFG splitting to create hot traces based on static heuristics |
| redundant_branch_elimination | Eliminate redundant conditional branches |
| preex_inline | Pre-existence based inlining |
| ssa | Should SSA form be constructed on the HIR? |
| load_elimination | Should we perform redundant load elimination during SSA pass? |
| coalesce_after_ssa | Should we coalesce move instructions after leaving SSA? |
| expression_folding | Should we try to fold expressions with constants in SSA form? |
| live_range_splitting | Split live ranges using LIR SSA pass? |
| gcp | Perform global code placement |
| gcse | Perform global code placement |
| verbose_gcp | Perform noisy global code placement |
| licm_ignore_pei | Assume PEIs do not throw or state is not observable |
| turn_whiles_into_until | Turn whiles into untils |
| loop_versioning | Loop versioning |
| handler_liveness | Store liveness for handlers to improve dependence graph at PEIs |
| schedule_prepass | Perform prepass instruction scheduling |
| no_checkcast | Should all checkcast operations be (unsafely) eliminated? |
| no_checkstore | Should all checkstore operations be (unsafely) eliminated? |
| no_bounds_check | Should all bounds check operations be (unsafely) eliminated? |
| no_null_check | Should all null check operations be (unsafely) eliminated? |
| no_synchro | Should all synchronization operations be (unsafely) eliminated? |
| no_threads | Should all yield points be (unsafely) eliminated? |
| no_cache_flush | Should cache flush instructions (PowerPC SYNC/ISYNC) be omitted? NOTE: Cannot be correctly changed via the command line\! |
| reads_kill | Should we constrain optimizations by enforcing reads-kill? |
| monitor_nop | Should we treat all monitorenter/monitorexit bytecodes as nops? |
| static_stats | Should we dump out compile-time statistics for basic blocks? |
| code_patch_nop | Should all patch point be (unsafely) eliminated (at initial HIR)? |
| instrumentation_sampling | Perform code transformation to sample instrumentation code. |
| no_duplication | When performing inst. sampling, should it be done without duplicating code? |
| processor_specific_counter | Should there be one CBS counter per processor for SMP performance? |
| remove_yp_from_checking | Should yieldpoints be removed from the checking code (requires finite sample interval). |
Value options.
|| Option || Description ||
| ic_max_target_size | Static inlining heuristic: Upper bound on callee size |
| ic_max_inline_depth | Static inlining heuristic: Upper bound on depth of inlining |
| ic_max_always_inline_target_size | Static inlining heuristic: Always inline callees of this size or smaller |
| ic_massive_method_size | Static inlining heuristic: If root method is already this big, then only inline trivial methods |
| ai_max_target_size | Adaptive inlining heuristic: Upper bound on callee size |
| ai_min_callsite_fraction | Adaptive inlining heuristc: Minimum fraction of callsite distribution for guarded inlining of a callee |
| edge_count_input_file | Input file of edge counter profile data |
| inling_guard | Selection of guard mechanism for inlined virtual calls that cannot be statically bound |
| fp_mode | Selection of strictness level for floating point computations |
| exclude | Exclude methods from being opt compiled |
| unroll_log \\ | Unroll loops. Duplicates the loop body 2^n times. |
| cond_move_cutoff | How many extra instructions will we insert in order to remove a conditional branch? |
| load_elimination_rounds | How many rounds of redundant load elimination will we attempt? |
| alloc_advice_sites | Read allocation advice attributes for all classes from this file |
| frequency_strategy | How to compute block and edge frequencies? |
| spill_cost_estimate | Selection of spilling heuristic |
| infrequent_threshold | Cumulative threshold which defines the set of infrequent basic blocks \\ |
| cbs_hotness | Threshold at which a conditional branch is considered to be skewed |
| ir_print_level \\ | Only print IR compiled above this level |
h4. Adaptive System Non-Standard Command-Line Options
Boolean options
|| Option || Description ||
| enable_recompilation \\ | Should the adaptive system recompile hot methods? |
| enable_advice_generation | Do we need to generate advice file? |
| enable_precompile | Should the adaptive system precompile all methods given in the advice file before the user thread is started? |
| enable_replay_compile | Should the adaptive system use the pseudo-adaptive system that solely relies on the advice file? |
| gather_profile_data | Should profile data be gathered and reported at the end of the run? |
| adaptive_inling | Should we use adaptive feedback-directed inlining? |
| early_exit | Should AOS exit when the controller clock reaches early_exit_value? |
| osr_promotion | Should AOS promote baseline-compiled methods to opt? |
| background_recompilation | Should recompilation be done on a background thread or on next invocation? |
| insert_yieldpoint_counters | Insert instrumentation in opt recompiled code to count yieldpoints executed? |
| insert_method_counters_opt | Insert intrusive method counters in opt recompiled code? |
| insert_instruction_counters | Insert counters on all instructions in opt recompiled code? |
| insert_debugging_counters | Enable easy insertion of (debugging) counters in opt recompiled code. |
| report_interrupt_stats \\ | Report stats related to timer interrupts and AOS listeners on exit. |
| disable_recompile_all_methods \\ | Disable the ability for an app to request all methods to be recompiled. |
Value options
|| Option || Description ||
| method_sample_size \\ | How many timer ticks of method samples to take before reporting method hotness to controller. |
| initial_compiler \\ | Selection of initial compiler. |
| recompilation_strategy | Selection of mechanism for identifying methods for optimizing recompilation. |
| method_listener_trigger | What triggers us to take a method sample? \\ |
| call_graph_listener_trigger | What triggers us to take a method sample? |
| logfile_name \\ | Name of log file. |
| compilation_advice_file_output \\ | Name of advice file.\\ |
| compilation_advice_file_output \\ | Name of advice file. \\ |
| dynamic_call_file_output | Name of dynamic call graph file. |
| compiler_dna_file | Name of compiler DNA file (no name ==> use default DNA). Discussed in a comment at the head of VM_CompilerDNA.java. |
| compiler_advice_file_input | File containing information about the methods to Opt compile. |
| dynamic_call_file_input | File containing information about the hot call sites. |
| logging_level | Control amount of event logging (larger ==> more). |
| final_report_level | Control amount of info reported on exit (larger ==> more). |
| decay_frequency | After how many clock ticks should we decay. |
| dcg_decay_rate | What factor should we decay call graph edges hotness by. |
| dcg_sample_size | After how many timer interrupts do we update the weights in the dynamic call graph? |
| ai_seed_multipiler \\ | Initial edge weight of call graph is set to ai_seed_multipler * (1/ai_control_point). |
| offline_inline_plan_name | Name of offline inline plan to be read and used for inlining. |
| early_exit_time | Value of controller clock at which AOS should exit if early_exit is true. |
| invocation_count_threshold | Invocation count at which a baseline compiled method should be recompiled. |
| invocation_count_opt_level | Opt level for recompilation in invocation count based system. |
| counter_based_sample_interval | What is the sample interval for counter-based sampling. |
| ai_hot_callsite_threshold \\ | What percentage of the total weight of the dcg demarcates warm/hot edges. |
| max_opt_level | The maximum optimization level to enable. \\ |
h4. Virtual Machine Non-Standard Command-Line Options
Boolean Options
|| Option || Description \\ ||
| measureCompilation\\ | Time all compilations and report on exit. |
| measureCompilationPhases \\ | Time all compilation sub-phases and report on exit. \\ |
| stackTraceFull \\ | Stack traces to consist of VM and application frames. \\ |
| stackTraceAtExit | Dump a stack trace (via VM.syswrite) upon exit. |
| verboseTraceClassLoading | More detailed tracing then \-verbose:class. |
| errorsFatal | Exit when non-fatal errors are detected; used for regression testing. |
Value options
|| Option || Description ||
| maxSystemTroubleRecursionDepth\\ | If we get deeper than this in one of the System Trouble functions, try to die. |
| interruptQuantum | Timer interrupt scheduling quantum in ms. |
| schedulingMultiplier \\ | Scheduling quantum = interruptQuantum * schedulingMultiplier. |
| traceThreadScheduling \\ | Trace actions taken by thread scheduling. |
| verboseStackTracePeriod | Trace every nth time a stack trace is created.\\ |
| edgeCounterFile \\ | Input file of edge counter profile data. \\ |
| CBSCallSamplesPerTick \\ | How many CBS call samples (Prologue/Epilogue) should we take per time tick. |
| CBSCallSampleStride | Stride between each CBS call sample (Prologue/Epilogue) within a sampling window. \\ |
| CBSMethodSamplesPerTick | How many CBS method samples (any yieldpoint) should we take per time tick. \\ |
| CBSMethodSampleStride \\ | Stride between each CBS method sample (any yieldpoint) within a sampling window. |
\\
h2. Running Jikes RVM with valgrind
Jikes RVM can run under valgrind, as of SVN revision 6791 (29-Aug-2007). Applying a patch of this revision to release 3.2.1 should also produce a working system. Versions of valgrind CVS prior to release 3.0 are also known to have worked.
To run a Jikes RVM build with valgrind, use the {{\-wrap}} flag to invoke valgrind, eg
{code}
rvm -wrap "path/to/valgrind --smc-check=all <valgrind-options>" <jikesrvm-options> ...
{code}
this will insert the invocation of valgrind at the appropriate place for it to operate on Jikes RVM proper rather than a wrapper script.
Under some circumstances, valgrind will load shared object libraries or allocate memory in areas of the heap that conflict with Jikes RVM. Using the flag \-X:gc:eagerMmapSpaces=true will prevent and/or detect this. If this flag reveals errors while mapping the spaces, you will need to rearrange the heap to avoid the addresses that valgrind is occupying.
View All Revisions |
Revert To Version 20
[Less]
|
|
Posted
over 17 years
ago
by
Ian Rogers
Page
edited by
Ian Rogers
Below is a list of all publications that use Jikes RVM. This list includes both papers written by Jikes RVM developers, as well as users of the
... [More]
system. We strongly encourage authors to utilize the Research Archive to publish source code used in their studies, and thus, allow others to build on their results. When the implementation described in a paper is available in a Jikes RVM release, this is noted with the paper. Information of dissertations relating to the Jikes RVM is available here. If you would like to see a paper listed then please send details to the RVM researchers mailing list.
2008
Constraint Based Optimization of Stationary Fields
Ian Rogers, Jisheng Zhao, Chris Kirkham, Ian Watson
Principles and Practice of Programming in Java (PPPJ '08), Modena, Italy, 9-11 September 2008.
Boot Image Layout for Jikes RVM
Ian Rogers, Jisheng Zhao and Ian Watson
Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), Cyprus, 7 July 2008.
Presentation, tracker and source code
Pure Method Analysis within Jikes RVM
Jisheng Zhao, Ian Rogers, Chris Kirkham and Ian Watson
Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), Cyprus, 7 July 2008.
Presentation, tracker and source code
Approaches to Reflective Method Invocation
Ian Rogers, Jisheng Zhao and Ian Watson
Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), Cyprus, 7 July 2008.
Presentation, tracker and source code
Speculative Multithreading: An Object-Driven Approach
Simon Wilkinson, Ian Watson
Parallel Execution of Sequential Programs on Multi-core Architectures (PESPMA), Beijing, China, 22 June 2008.
No Bit Left Behind: The Limits of Heap Data Compression
J.B. Sartor, M. Hirzel, and K.S. McKinley
The 2008 International Symposium on Memory Management. Tucson, AZ, June 2008.
Immix: A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance
Stephen Blackburn and Kathryn McKinley
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2008), Tucson, AZ, June 7-13, 2008
Patch against r13767 here. Code being integrated into svn head April-May 2008.
Adaptive Loop Tiling for a Multi-Cluster CMP
Jisheng Zhao, Matthew Horsnell, Mikel Lujan, Ian Rogers, Chris Kirkham and Ian Watson
International Conference on Algorithms and Architectures, Cyprus, 9-11 June 2008.
A Study of Java Object Demographics
Richard Jones and Chris Ryder
International Symposium on Memory Management, Tucson, AZ, June 7-8, 2008
Phase-based Adaptive Recompilation in a JVM
Dayong Gu and Clark Verbrugge
2008 International Symposium on Code Generation and Optimization (CGO), Boston, Massachusetts, 6-9 April.
Branch-on-Random
Edward Lee and Craig Zilles
2008 International Symposium on Code Generation and Optimization (CGO), Boston, Massachusetts, 6-9 April.
GC Assertions: Using the Garbage Collector to Check Heap Properties
Edward Aftandilian and Samuel Guyer
ACM SIGPLAN Workshop on Memory Systems Performance and Correctness, Seattle, Washington, USA, 2 March, 2008
Dynamic Analysis of Java Program Concepts for Visualization and Profiling
Jeremy Singer and Chris Kirkham
Science of Computer Programming, vol. 70, no.2-3, pp.111-126, Elsevier, Feb 2008.
Object Co-location and Memory Reuse for Java Programs
Zoe C. H. Yu, Francis C. M. Lau, and Cho-Li Wang
ACM Transactions on Architecture and Code Optimization, Vol. 4, No. 4, Article 23, January 2008.
2007
Effective Prefetch for Mark-Sweep Garbage Collection
Robin Garner, Stephen Blackburn, & Daniel Frampton
ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
Patch against Jikes RVM r10327 available here.
Decrypting the Java Gene Pool: Predicting Object Lifetimes with Micro-Patterns
Sebastien Marion, Richard Jones, & Chris Ryder
ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
Uniqueness Inference for Compile-Time Object Deallocation
Sigmund Cherem & Radu Rugina
ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
Statistically Rigorous Java Performance Evaluation
Andy Georges, Dries Buytaert, Lieven Eeckhout
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
Using HPM-Sampling to Drive Dynamic Compilation
Dries Buytaert, Andy Georges, Michael Hind, Matthew Arnold, Lieven Eeckhout, Koen De Bosschere
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
Intelligent Selection of Application-Specific Garbage Collectors
Jeremy Singer, Gavin Brown, Ian Watson, John Cavazos
ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
Probabilistic Calling Context
Michael D. Bond, Kathryn S. McKinley.
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
Source code available on the Research Archive.
Tracking Bad Apples: Reporting the Origin of Null and Undefined Value Errors
Michael D. Bond, Nicholas Nethercote, Stephen W. Kent, Samuel Z. Guyer, Kathryn S. McKinley.
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
Source code available on the Research Archive.
Java Object Header Elimination for Reduced Memory Consumption in 64-Bit Virtual Machines
Kris Venstermans, Lieven Eeckhout, and Koen De Bosschere.
ACM Transactions on Code Optimizations (TACO), Vol 4, No. 3, Article 17, September 2007
Optimizing Chip Multiprocessor Work Distribution using Dynamic Compilation
Jisheng Zhao, Matthew Horsnell, Ian Rogers, Andrew Dinn, Chris Kirkham, Ian Watson.
Proceedings of Euro-Par, IRISA/ENS Cachan, Rennes, France, 28-31 August 2007
Object-Relative Addressing: Compressed Pointers in 64-Bit Java Virtual Machines
Kris Venstermans, Lieven Eeckhout, and Koen De Bosschere.
Proceedings of 21st European Conference on Object-Oriented Programming (ECOOP '07), July 30 - August 3, 2007
Correcting the Dynamic Call Graph Using Control Flow Constraints
Byeongcheol Lee, Kevin Resnick, Michael D. Bond, Kathryn S. McKinley
Proceedings of the 16th International Conference on Compiler Construction (CC 2007), Braga, Portugal, March 2007
Isla Vista Heap Sizing: Using Feedback to Avoid Paging
Chris Grzegorczyk, Sunil Soman, Chandra Krintz, Rich Wolski
Proceedings of the 5th International Symposium on Code Generation and Optimization (CGO 2007), San Jose, California, March 2007
A Scalable, Non-blocking Approach to Transactional Memory
H. Chafi, J. Casper, B. Carlstrom, A. McDonald, C. Cao Minh, W. Baek, C. Kozyrakis, and K. Olukotun (Stanford University)
The 13th International Symposium on High-Performance Computer Architecture (HPCA), Phoenix, Arizona, February 10-14, 2007.
Mobility of Data in Distributed Hybrid Computing Systems
Philippe Faes, Mark Christiaens and Dirk Stroobandt
Proceedings of the 21st International Parallel and Distributed Processing Symposium, 2007
Cork: Dynamic Memory Leak Detection for Java
Maria Jump, Kathryn S. McKinley
Proceedings of the 2007 Principles of Programming Languages, Nice, France, January 2007
2006
Lazy Interprocedural Analysis for Dynamic Loop Parallelization
Jisheng Zhao, Chris Kirkham, Ian Rogers
New Horizons in Compilers, Bangalore, India, December 18, 2006.
CRAMM: Virtual Memory Support for Garbage-Collected Applications
Ting Yang and Emery D. Berger and Scott F. Kaplan and J. Eliot B. Moss
Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation (OSDI), Seattle, Washington, November, 2006.
Revocation techniques for Java concurrency
Welc A, Jagannathan S and Hosking AL.
Concurrency and Computation - Practice and Experience 18(2):1613-1656, October 2006.
JAVANA: A System for Building Customized Java Program Analysis Tools
Jonas Maebe, Dries Buytaert, Lieven Eeckhout, Koen De Bosschere
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
The DaCapo Benchmarks: Java Benchmarking Development and Analysis
Stephen M Blackburn, Robin Garner, Chris Hoffmann, Asjad M Khan, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanovic, Thomas VanDrunen, Daniel von Dincklage, Benjamin Wiedermann
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
Method-Specific Dynamic Compilation using Logistic Regression
John Cavazos, Michael O'Boyle
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
Adapting VM Techniques for Seamless Aspect Support
Christoph Bockisch, Matthew Arnold, Tom Dinkelaker, Mira Mezini
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
Efficient Control Flow Quantification
Christoph Bockisch, Sebastian Kanthak, Michael Haupt, Matthew Arnold, Mira Mezini,
ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
Bell: Bit-Encoding Online Memory Leak Detection
Michael D. Bond, Kathryn S. McKinley.
Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-XII), San Jose, October 21-25, 2006.
Source code available on the Research Archive.
Trace-based automatic parallelization in the Jikes RVM
Borys Bradel and Tarek S. Abdelrahman
''Proceedings of the 5th Workshop on Compiler-Driven Performance,'' Toronto, Canada, Oct 16, 2006.
Enabling Java Mobile Computing on the IBM Jikes Research Virtual Machine
Giacomo Cabri, Letizia Leonardi, '''Raffaele Quitadamo'''.
''Proceedings of the 4th International Conference on the Principles and Practice of Programming in Java 2006 (PPPJ)'', Mannheim, Germany, August 2006, ACM Press.
Transparently reconciling transactions with locking for Java synchronization
Welc A, Hosking AL, Jagannathan S.
Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP):148-173 (Nantes, France, July 2006), Lecture Notes in Computer Science 4067, Springer-Verlag, 2006.
Architectural Semantics for Practical Transactional Memory
Austen McDonald, JaeWoong Chung, Brian D. Carlstrom, Chi Cao Minh, Hassan Chafi, Christos Kozyrakis, and Kunle Olukotun.
''Proceedings of the 33rd Annual International Symposium on Computer Architecture'', Boston, Massachusetts, June 17-21, 2006.
Relative Factors in Performance Analysis of JVMs
Dayong Gu, Clark Verbrugge, and Etienne M. Gagnon
''Proceedings of the 2nd Annual International Conference on Virtual Execution Environments'', Ottawa, Canada, June 14-16, 2006.
Impact of Virtual Execution Environments on Processor Energy Consumption and Hardware Adaptation
Shiwen Hu and Lizy K. John
''Proceedings of the 2nd Annual International Conference on Virtual Execution Environments'', Ottawa, Canada, June 14-16, 2006.
Free-Me: A Static Analysis for Automatic Individual Object Reclamation
Samuel Z. Guyer, Kathryn S. McKinley, and Daniel Frampton.
''Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation'', Ottawa, Canada, June 10-16, 2006.
The Compressor: Concurrent, Incremental, and Parallel Compaction
Haim Kermany, Erez Petrank.
''Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation'', Ottawa, Canada, June 10-16, 2006.
The Atomos Transactional Programming Language
Brian D. Carlstrom, Austen McDonald, Hassan Chafi, JaeWoong Chung, Chi Cao Minh, Christos Kozyrakis, and Kunle Olukotun.
''Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation'', Ottawa, Canada, June 10-16, 2006.
Parallelizing SPECjbb2000 with Transactional Memory
JaeWoong Chung, Chi Cao Minh, Brian D. Carlstrom, and Christos Kozyrakis.
''Workshop on Transactional Memory Workloads'', Ottawa, Canada, June 10, 2006.
Reducing generational copy reserve overhead with fallback compaction
McGachey P, Hosking AL.
Proceedings of the 4th ACM SIGPLAN International Symposium on Memory Management (ISMM):17-28 (Ottawa, Canada, June 2006), ACM.
Hybrid Optimizations: Which Optimization Algorithm to Use?
John Cavazos, J. Eliot B. Moss, and Michael F.P. O'Boyle
''15th International Conference on Compiler Construction (CC 2006)'', Vienna, Austria, March 30 - 31, 2006.
Space-Efficient 64-bit Java Objects through Selective Typed Virtual Addressing
Kris Venstermans, Lieven Eeckhout, and Koen De Bosschere.
''The 4th Annual International Symposium on Code Generation and Optimization (CGO)'', New York. March 26-29, 2006.
Dynamic Class Hierarchy Mutation
Lixin Su and Mikko H Lipasti.
''The 4th Annual International Symposium on Code Generation and Optimization (CGO)'', New York. March 26-29, 2006.
Online Phase Detection Algorithms
Priya Nagpurkar, Michael Hind, Chandra Krintz, Peter F. Sweeney, and V.T. Rajan.
''The 4th Annual International Symposium on Code Generation and Optimization (CGO)'', New York. March 26-29, 2006.
The Common Case Transactional Behavior of Multithreaded Programs
JaeWoong Chung, Chi Cao Minh, Hassan Chafi, Austen McDonald, Brian D. Carlstrom, Christos Kozyrakis, and Kunle Olukotun.
''12th International Symposium on High Performance Computer Architecture (HPCA)'', Austin, Texas, USA, February 11-15, 2006.
64-bit versus 32-bit Virtual Machines for Java
Kris Venstermans, Lieven Eeckhout, and Koen De Bosschere
''Software: Practice and Experience'', January 2006.
Compiler Techniques for High Performance Sequentially Consistant Java Programs.
Zehra Sura, Xing Fang, Chi-Leung Wong, [ Samuel P. Midkiff|http://www.research.ibm.com/people/m/midkiff], Jaejin Lee, David Padua.
''11th International Workshop on Compilers for Parallel Computers (CPC 2006)'', A Coruna, Spain. January 2006.
Automatic Tuning of Inlining Heuristics
John Cavazos and Michael F.P. O'Boyle
''11th International Workshop on Compilers for Parallel Computers (CPC 2006)'', A Coruna, Spain. January 2006.
2005
Loop Parallelisation for the Jikes RVM
Jisheng Zhao, Ian Rogers, Chris Kirkham, and Ian Watson.
''6th Parallel and Distributed Computing, Applications and Technologies (PDCAT)'', Dalian, China, December 5-8, 2005.
Continuous Path and Edge Profiling
Michael D. Bond and Kathryn S. McKinley.
38th International Symposium on Microarchitecture (MICRO), Barcelona, November 14-16, 2005.
Source code available on the Research Archive.
Garbage Collection Hints
Dries Buytaert, Kris Venstermans, Lieven Eeckhout, and Koen De Bosschere.
''International Conference on High Performance Embedded Architectures & Compilers (HIPEAC'05)'', Lecture Notes in Computer Science Volume 3793, Springer-Verlag. Barcelona, Spain, November 2005.
Towards Continuous Usage Control on Grid Computational Services.
Fabio Martinelli, Paolo Mori, and Anna Vaccarelli
''International Conference on Autonomic and Autonomous Systems and International Conference on Networking and Services'', Papeete, Tahiti, October 23-28, 2005.
A Platform to Use Hardware Performance Counters for Dynamic Compilation
Florian Schneider and Thomas Gross.
''Languages and Compilers for Parallel Computing (LCPC)'', IBM, Hawthorne, New York, October 20-21, 2005.''
Are Patches Cutting it? Structuring Distribution within a JVM using Aspects
Jennifer Baldwin, Yvonne Coady
''2005 conference of the Centre for Advanced Studies on Collaborative research (CASCON)'', Toronto, Canada, Oct 17-20, 2005.
Automating Vertical Profiling
Matthias Hauswirth, Amer Diwan, Peter F. Sweeney, and Michael Mozer.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
Improving Virtual Machine Performance Using a Cross-Run Repository
Matthew Arnold, Adam Welc, and V.T. Rajan.
*''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
Quantifying the Performance of Garbage Collection vs. Explicit Memory Management
Matthew Hertz and Emery Berger.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
Quantifying the Performance of Garbage Collection vs.Explicit Memory Management
Matthew Hertz and Emery Berger.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
Runtime Specialization With Optimistic Heap Analysis
Ajeet Shanker, Rastislav Bodik, Subramanya Sastry, and James Smith.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
Safe Futures for Java
Adam Welc, Suresh Jagannathan, and Antony L. Hosking.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
Transactional Execution of Java Programs
Brian D. Carlstrom, JaeWoong Chung, Hassan Chafi, Austen McDonald, Chi Cao Minh, Lance Hammond, Christos Kozyrakis, and Kunle Olukotun.
''OOPSLA 2005 Workshop on Synchronization and Concurrency in Object-Oriented Languages (SCOOL)'', San Diego, California, USA, October 16, 2005.
Automatic Tuning of Inlining Heuristics
John Cavazos and Michael F.P. O'Boyle
''SC|05 (Supercomputing): International Conference for High Performance Computing, Networking, and Storage'', Seattle WA, November 12-18, 2005.
Testing in Resource Constrained Execution Environments
Gregory M. Kapfhammer, Mary Lou Soffa, and Daniel Mosse
''ACM/IEEE International Conference on Automated Software Engineering'', LongBeach, CA, November 7-11, 2005.
JikesNode and PearColator: A Jikes RVM Operating System and Legacy Code Execution Environment
Ian Rogers and Chris Kirkham.
''The 2nd ECOOP Workshop on Programming Languages and Operating Systems (ECOOP-PLOS '05)'', Glasgow, UK, July 26, 2005.
An Automatic Runtime DOALL Loop Parallelisation Optimization for Java
Ian Rogers, Jisheng Zhao, Chris Kirkham, Ian Watson.
''Parallel/High-Performance Object-Oriented Scientific Computing (POOSC '05)'', Glasgow, UK, July 25, 2005.
Characterization of TCC on Chip-Multiprocessors
Austen McDonald, JaeWoong Chung, Hassan Chafi, Chi Cao Minh, Brian D. Carlstrom, Lance Hammond, Christos Kozyrakis, and Kunle Olukotun.
*''The Fourteenth International Conference on Parallel Architectures and Compilation Techniques (PACT '05)'', Saint Louis, Missouri, September 19, 2005.
FPGA-Aware Garbage Collection in Java
Faes, Ph.; Christiaens, M.; Buytaert, D. ; Stroobandt, D.
''IEEE 2005 International Conference on Field Programmable Logic and Applications (FPL).'', August 2005.
Garbage Collection Without Paging
Matthew Hertz, Yi Feng, and Emery Berger.
''ACM SIGPLAN Conference on Programming Languages Design and and Implementation (PLDI '05)'', Chicago, Il, June 13, 2005
An Execution Layer for Aspect-Oriented Programming Languages
Michael Haupt, Mira Mezini, Christoph Bockisch, Tom Dinelaker, Michael Eichberg, and Michael Krebs
''ACM SIGPLAN/USENIX Conference on Virtual Execution Environments (VEE '05)'', Chicago, Il, June 11-12, 2005
Immutability Specification and its Application
Igor Pechtchanski and Vivek Sarkar.
''Concurrency and Computation: Practice and Experience'', Vol 17, No 5-6, April/May 2005.
Age-Oriented Concurrent Garbage Collection
Harel Paz, Erez Petrank, and Steve Blackburn.
''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
An Efficient On-The-Fly Cycle Collection
Harel Paz, Erez Petrank, David F. Bacon, Eliot K. Kolodner, and V.T. Rajan.
''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
Jazz: A Tool for Demand-Driven Structural Testing
Jonathan Misurda, Jim Clause, Juliya Reed, Bruce R. Childers, and Mary Lou Soffa.
''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
A Study of Type Analysis for Speculative Method Inlining in a JIT Environment
Feng Qian and Laurie Hendren.
''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
Using Interprocedural Side-effect Information in JIT Optimizations
Anatole Le, Ondrej Lhotak, and Laurie Hendren.
''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
Effective Adaptive Computing Environment Management via Dynamic Optimization
Shiwen Hu, Madhavi Valluri, Lizy K. John
''2005 International Symposium on Code Generation and Optimization'', San Jose, California, March 2005.
Collecting and Exploiting High-Accuracy Call Graph Profiles in Virtual Machines
Matthew Arnold and David Grove
''2005 International Symposium on Code Generation and Optimization'', San Jose, California, March 2005.
'''(Source code available as of version 2.3.5 of Jikes RVM.)'''
The Jikes Research Virtual Machine project: Building an open-source research community
B. Alpern, S. Augart, S.M. Blackburn, M. Butrico, A. Cocchi, P Cheng, J. Dolby, S. Fink, D. Grove, M. Hind, K.S. McKinley, M. Mergen, J.E.B. Moss, T. Ngo, V. Sarkar, and M. Trapp.
''IBM Systems Journal'', Vol 44, No 2, 2005.
2004
Anticipation-Based Partial Redundancy Elimination for Static Single Assignment Form
Thomas VanDrunen and Antony Hosking.
''Software - Practice and Experience'', 34(15):1413-1439, December 2004.
An Inlining Technique in Jikes RVM to Improve Performance
Ritesh Kumar, Ragesh Jaiswal, and Sanjeev K. Aggarwal.
''Advances in Computer Science and Technology'', St. Thomas, Virgin Islands, November 2004.
Finding Your Cronies: Static Analysis for Dynamic Object Colocation
Samuel Z. Guyer and Kathryn McKinley.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
MC2: High-Performance Garbage Collection for Memory-Constrained Environments
Narendran Sachindran, J. Eliot B. Moss, and Emery Berger.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
Method-Level Phase Behavior in Java Workloads
Andy Georges, Dries Buytaert, Lieven Eeckhout, and Koen De Bosschere.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
Program Locality: The Garbage Collection Advantage
Xianglong Huang, Steve Blackburn, Kathryn McKinley, J. Eliot B. Moss, Zhenlin Wang, and Perry Cheng.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
Vertical Profiling: Understanding the Behavior of Object-Oriented Applications
Matthias Hauswirth, Peter F. Sweeney, Amer Diwan, and Michael Hind.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
Automatic Heap Sizing: Taking Real Memory Into Account
Ting Yang, Emery Berger, Matthew Hertz, Scott F. Kaplan, and J. Eliot B. Moss.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
Barriers: Friend or Foe?
Steve Blackburn, and Antony Hosking.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
Dynamic Object Sampling for Pretenuring
Maria Jump, Steve Blackburn, and Kathryn McKinley.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
Dynamic Selection of Application-Specific Garbage Collectors
Sunil Soman, Chandra Krintz, and David F. Bacon.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
Write Barrier Elision for Concurrent Garbage Collectors
[Martin Vechev<a/> and http://www.research.ibm.com/people/d/dfb David F. Bacon.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
Improving Grid Service Security with Fine Grain Policies
Fabrizio Baiardi, Fabio Martinelli, Paolo Mori, and Anna Vaccarelli
''On the Move to Meaningful Internet System 2004: OTM Workshops, Lecture Notes in Computer Science'' 3292: Springer Verlag (2004)
Virtual Machine Support for Aspects with Advice Instance Tables
Michael Haupt and Mira Mezini.
''First French Workshop on Aspect-Oriented Programming'', Paris, France, September 2004.
Micro-Measurements for Dynamic Aspect-Oriented Systems
Michael Haupt and Mira Mezini.
''Net.ObjectDays 2004 (NODe)'', Erfurt, Germany, September 2004.
The Use of Traces for Inlining in Java Programs
Borys J. Bradel and Tarek S. Abdelrahman.
''Languages and Compilers for Parallel Computing (LCPC)'', Purdue University, Indiana, September 2004.
Online Impact Analysis via Dynamic Compilation Technology
Ben Breech, Anthony Danalis, Stacey Shindo, and Lori Pollock
''International Conference on Software Maintenance (ICSM)'', September 2004.
Partial Redundancy Elimination for Global Value Numbering
Thomas VanDrunen, ''PhD Thesis, Purdue University'', August 2004.
Preemption-Based Avoidance of Priority Inversion for Java
Adam Welc, Antony L. Hosking, and Suresh Jagannathan.
''International Conference on Parallel Programming (ICPP'04)'', Montreal, Canada, August 2004.
Value-Based Partial Redundancy Elimination
Thomas VanDrunen and Antony Hosking.
''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Barcelona, Spain, June 2004.
Adaptive Tuning of Reserved Space in an Appel Collector
Jose Manuel Velasco, Katzalin Olcoz, and Francisco Tirado.
''European Conference on Object-Oriented Programming (ECOOP'04)'', Oslo, Norway, June 2004.
Pointer Analysis in the Presence of Dynamic Class Loading
Martin Hirzel, Amer Diwan, and Michael Hind.
''European Conference on Object-Oriented Programming (ECOOP'04)'', Oslo, Norway, June 2004.
Transactional Monitors for Concurrent Objects
Adam Welc, Suresh Jagannathan, Antony L. Hosking.
''European Conference on Object-Oriented Programming (ECOOP'04)'', Oslo, Norway, June 2004.
Visualization and Analysis of Phased Behavior in Java Programs
Priya Nagpurka and Chandra Krintz.
''ACM International Conference on the Principles and Practice of Programming in Java (PPPJ)'', Las Vegas, NV, June 2004.
Myths and Reality: The Performance Impact of Garbage Collection
Steve Blackburn, Perry Cheng, and Kathryn McKinley.
''Sigmetrics - Performance 2004, Joint International Conference on Measurement and Modeling of Computer Systems'', New York, New York, June 2004.
'''(Source code available as of version 2.3.2 of Jikes RVM.)'''
Adaptive Code Unloading for Resource-Constrained JVMs
Lingli Zhang and Chandra Krintz.
''ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '04) and Software and Compilers for Embedded Systems (SCOPES '04)'', Washington DC, June 2004.
Inducing Heuristics to Decide Whether to Schedule
John Cavazos and J. Eliot B. Moss.
''ACM SIGPLAN Conference on Programming Languages Design and and Implementation (PLDI '04)'', Washington DC, June 2004.
Oil and Water: High Performance Garbage Collection in Java with MMTk
Steve Blackburn, Perry Cheng, and Kathryn McKinley.
''ICSE 2004, 26th International Conference on Software Engineering'', Edinburgh, Scotland, May 2004.
'''(Source code available as of version 2.3.2 of Jikes RVM.)'''
Towards Dynamic Interprocedural Analysis in JVMs
Feng Qian and Laurie Hendren.
''USENIX 3rd Virtual Machine Research and Technology Symposium (VM'04)'', San Jose, California, May, 2004.
Using Hardware Performance Monitors to Understand the Behavior of Java Application
Peter F. Sweeney, Matthias Hauswirth, Brendon Cahoon, Perry Cheng, Amer Diwan, David Grove, and Michael Hind.
''USENIX 3rd Virtual Machine Research and Technology Symposium (VM'04)'', San Jose, California, May, 2004.
JVM Independent Replay in Java
Viktor Schuppan, Marcel Baur, and Armin Biere.
''Fourth Workshop on Runtime Verification (RV'04)'', Barcelona, Spain, April, 2004.
Transactional Monitors for Concurrent Objects
Jan Vitek, Suresh Jagannathan, Adam Welc, and Antony L. Hosking.
''European Symposium on Programming (ESOP'04)'', Barcelona, Spain, March, 2004.
Virtual Machine Support for Dynamic Join Points
Christoph Bockisch, Michael Haupt, Mira Mezini,and Klaus Ostermann.
''International Conference on Aspect-Oriented Software Development (AOSDP'04)'', Lancaster, UK, March, 2004.
2003
The Metronome: A Simpler Approach to Garbage Collection in Real-time Systems
David F. Bacon, Perry Cheng, and V.T. Rajan.
''Workshop on Java Technologies for Real-Time and Embedded Systems'', Catania, Sicily, November 2003.
Ulterior Reference Counting: Fast Garbage Collection without a Long Wait
Steve Blackburn and Kathryn McKinley.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
An On-the-Fly Mark and Sweep Garbage Collector Based on Sliding Views
Hezi Azatchi, Yossi Levanoni, Harel Paz, and Erez Petrank.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
MarkCopy: Fast Copying GC with Less Space Overhead
Narendran Sachindran and J. Eliot B. Moss.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
Connectivity-Based Garbage Collection
Martin Hirzel, Amer Diwan, and Matthew Hertz.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
How Java Programs Interact with Virtual Machines at the Microarchitectural Level
Lieven Eeckhout, Andy Georges, and Koen De Bosschere.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
Transparent Fault-Tolerant Java Virtual Machine
Roy Friedman and Alon Kama.
''22nd IEEE Symposium on Reliable Distributed Systems (SRDS)'', Florence, Italy, October, 2003.
JToe: A Java API for Object Exchange
Serge Chaumette, Pascal Grange, Benoit Metrot, and Pierre Vigneras.
''Parallel Computing/ParCo 2003'', September 2003.
High-performance Java code for computation fluid dynamics
C. J. Riley, Sid Chatterjee, and R. Biswas.
''Concurrency and Computation: Practice and Experience'', 15:395-415, 2003.
Detecting Malicious Java Code Using Virtual Machine Auditing
Sunil Soman, Chandra Krintz and Giovanni Vigna.
''12th USENIX Security Symposium'', Washington D.C., August 2003.
Controlling Fragmentation and Space Consumption in the Metronome, a Real-time Garbage Collector for Java
David F. Bacon, Perry Cheng, and V.T. Rajan.
''Conference on Languages, Compilers, and Tools for Embedded Systems'', San Diego, California, June 2003.
Designing a Distributed JVM on a Cluster
John N Zigman and Ramesh Sanakaranarayana.
''17th European Simulation Multiconference'', Nottingham, United Kingdom, June 2003.
Integrating Generations with Advanced Reference Counting Garbage Collectors
Hezi Azatchi and Erez Petrank.
''12th International Conference on Compiler Construction'', Warsaw, Poland, April 2003.
Just-In-Time Aspects: Efficient Dynamic Weaving for Java
Andrei Popovici, Gustavo Alonso and Thomas Gross.
''2nd International Conference on Aspect-Oriented Software Development'', Boston, Massachussetts, March 2003.
Design, Implementation and Evaluation of Adaptive Recompilation with On-Stack Replacement
Stephen Fink, and Feng Qian.
''International Symposium on Code Generation and Optimization'', San Francisco, California, March 2003.
'''(Source code available as of version 2.2.1 of Jikes RVM.)'''
Adaptive Online Context-Sensitive Inlining
Kim Hazelwood and David Grove.
''International Symposium on Code Generation and Optimization'', San Francisco, California, March 2003.
Coupling On-Line and Off-Line Profile Information to Improve Program Performance
Chandra Krintz.
''International Symposium on Code Generation and Optimization'', San Francisco, California, March 2003.
A Real-time Garbage Collector with Low Overhead and Consistent Utilization
David F. Bacon, Perry Cheng, and V. T. Rajan.
''Conference Record of the Thirtieth ACM Symposium on Principles of Programming Languages'', New Orleans, Louisiana, January 2003.
Using the SafeTSA Representation to Boost the Performance of an Existing Java Virtual Machine
Wolfram Amme, Jeffrey von Ronne, and Michael Franz.
''10th International Workshop on Compilers for Parallel Computers (CPC 2003)'', Amsterdam, The Netherlands. January 2003.
2002
Online Feedback-Directed Optimization of Java
Matthew Arnold, Michael Hind, and Barbara G. Ryder.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Seatle, Washington, November 4-8, 2002.
Creating and Preserving Locality of Java Applications at Allocation and Garbage Collection Times
Yefim Shuf, Manish Gupta, Hubertus Franke, Andrew Appel, and Jaswinder Pal Singh.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Seatle, Washington, November 4-8, 2002.
GCspy: An Adaptable Heap Visualisation Framework
Tony Printezis and Richard Jones.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Seatle, Washington, November 4-8, 2002.
Immutability Specification and its Applications
Igor Pechtchanski and Vivek Sarkar.
''Joint ACM Java Grande - ISCOPE 2002 Conference'', Seatle, Washington, November 3-5, 2002.
Experiences Porting the Jikes RVM to Linux/IA32
Bowen Alpern, Maria Butrico, Tony Cocchi, Julian Dolby, Stephen Fink, David Grove, and Ton Ngo.
''2nd Java Virtual Machine Research and Technology Symposium (JVM '02)'', San Francisco, California, August 1-2, 2002.
'''(Source code available as of version 2.1.0 of Jikes RVM.)'''
Automatic Implementation of Programming Language Consistency Models
Zehra Sura, Chi-Leung Wong, Xing Fang, Jaejin Lee, S.P. Midkiff, and David Padua.
''Fifteenth Workshop on Languages and Compilers for Parallel Computing'', July, 2002.
In or Out? Putting Write Barriers in Their Place
Steve Blackburn and Kathryn McKinley.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '02)'', Berlin, Germany, June 20-21, 2002.
An Adaptive, Region-based Allocator for Java
Feng Qian and Laurie Hendren.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '02)'', Berlin, Germany, June 20-21, 2002.
Understanding the Connectivity of Heap Objects
Martin Hirzel, Johannes Henkel, Amer Diwan, Michael Hind.
''ACM SIGPLAN International Symposium on Memory Management (ISMM '02)'', Berlin, Germany, June 20-21, 2002.
When to Use a Compilation Service?
Jeffrey Palm, Han Lee, Amer Diwan, J. Eliot B. Moss.
''ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '02) and Software and Compilers for Embedded Systems (SCOPES '02)'', Berlin, Germany, June 19-21 2002.
Beltway: Getting Around Garbage Collection Gridlock
Steve Blackburn, Richard Jones, Kathryn McKinley, J. Eliot B. Moss.
''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '02)'', Berlin, Germany, June 17-19 2002.
Static Load Classification for Improving the Value Predictability of Data-Cache Misses
Martin Burtscher, Amer Diwan, Matthias Hauswirth.
''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '02)'', Berlin, Germany, June 17-19 2002.
Efficient and Precise Datarace Detection for Multithreaded Object-Oriented Programs
Jong-Deok Choi, Keunwoo Lee, Alexey Loginov, Robert O'Callahan, Vivek Sarkar, and Manu Sridharan.
''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '02)'', Berlin, Germany, June 17-19 2002.
Older-first Garbage Collection in Practice: Evaluation in a Java Virtual Machine
Darko Stefanovic, Matthew Hertz, Steve M. Blackburn, Kathryn S. McKinley and J. Eliot B. Moss.
''ACM SIGPLAN Workshop on Memory System Performance (MSP '02)'', Berlin, Germany, June 16, 2002.
Error-Free Garbage Collection Traces: How To Cheat and Not Get Caught
Matthew Hertz, Steve Blackburn, J. Eliot B. Moss, Kathryn McKinley, and Darko Stefanovic.
''ACM SIGMetrics 2002'', Marina del Rey, CA June 15-19 2002.
Using Adaptive Optimization Techniques to Teach Mobile Java Computing
Chandra Krintz.
''Principles and Practice of Programming in Java'', Dublin, Ireland, June 13-14, 2002.
Thin Guards: A Simple and Effective Technique for Reducing the Penalty of Dynamic Class Loading.
Matthew Arnold and Barbara G. Ryder.
''European Conference on Object-Oriented Programming (ECOOP 2002)'', Malaga Spain, June 10-14 2002.
Atomic Instructions in Java
David Hovemeyer, William Pugh, and Jaime Spacco.
''European Conference on Object-Oriented Programming (ECOOP 2002)'', Malaga Spain, June 10-14 2002.
Space- and Time-Efficient Implementation of the Java Object Model
David Bacon, Stephen Fink, and David Grove.
''European Conference on Object-Oriented Programming (ECOOP 2002)'', Malaga Spain, June 10-14, 2002.
'''(Source code available as of version 2.1.0 of Jikes RVM.)'''
The Pensieve Project: A Compiler Infrastructure for Memory Models
C.-L. Wong, Z. Sura, X. Fang, S.P. Midkiff, J. Lee, and D. Padua.
''The Sixth International Symposium on Parallel Architectures, Algorithms, and Networks'', May, 2002.
Exploiting Prolific Types for Memory Management and Optimizations
Yefim Shuf, Manish Gupta, Rajesh Bordawekar, and Jaswinder Pal Singh.
''29th ACM SIGPLAN/SIGACT Symposium on Principles of Programming Languages (POPL)'', Portland, OR, January 2002.
2001
Efficient Implementation of Java Interfaces: Invokeinterface Considered Harmless
Bowen Alpern, Anthony Cocchi, Stephen Fink, David Grove, and Derek Lieber.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Tampa, FL, USA, Oct 14-18, 2001.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Pretenuring for Java
Steve Blackburn, Sharad Singhai, Matthew Hertz, Kathryn S. McKinley, and J. Eliot B. Moss.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Tampa, FL, USA, Oct 14-18, 2001.
Dynamic Optimistic Interprocedural Analysis: A Framework and an Application
Igor Pechtchanski and Vivek Sarkar.
''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Tampa, FL, USA, Oct 14-18, 2001.
Efficient Dependence Analysis For Java Arrays
Vivek Sarkar and Stephen Fink.
''EURO-PAR 2001'', Manchester, England, September, 2001.
A Comparative Evaluation of Parallel Garbage Collectors
C. Attansio, David Bacon, Anthony Cocchi, and Stephen Smith.
''Fourteenth Annual Workshop on Languages and Compilers for Parallel Computing'', Cumberland Falls, Kentucky, Aug, 2001.
'''(Source code available in versions 2.0.0 through 2.2.0 of Jikes RVM.)'''
A Framework for Reducing the Cost of Instrumented Code
Matthew Arnold and Barbara G. Ryder.
''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '01)'', Snowbird, Utah, June 20-22, 2001.
'''(Source code available as of version 2.3.0 of Jikes RVM.)'''
Java without the Coffee Breaks: A Non-intrusive Multiprocessor Garbage Collector
David Bacon, C. Attanasio, Han Lee, V. Rajan, and Stephen Smith.
''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '01)'', Snowbird, Utah, June 20-22, 2001.
'''(Source code available in versions 2.0.0 through 2.0.3 of Jikes RVM.)'''
Program Analysis for Safety Guarantees in a Java Virtual Machine Written in Java.
Jan-Willem Maessen, Vivek Sarkar, and David Grove.
''ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE '01),'' Snowbird, Utah, June 18-19, 2001.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Concurrent Cycle Collection in Reference Counted Systems
David Bacon and V. Rajan.
''The Fifteenth European Conference on Object-Oriented Programming (ECOOP)'', University Eötvös Loránd, Budapest, Hungary, June 18-22, 2001.
'''(Source code available in versions 2.0.0 through 2.0.3 of Jikes RVM.)'''
Characterizing the Memory Behavior of Java Workloads: A Structured View and Opportunities for Optimizations
Yefim Shuf, Mauricio Serrano, Manish Gupta, and Jaswinder Pal Singh.
''ACM SIGMETRICS 2001/Performance 2001'', Cambridge, MA, June 2001.
High-Performance Java Codes for Computational Fluid Dynamics
C. J. Riley, Sid Chatterjee, and R. Biswas.
''The Joint ACM Java Grande - ISCOPE 2001 Conference'', Stanford, CA, June 2001.
Dynamic Type Checking in Jalapeño
Bowen Alpern, Anthony Cocchi, and David Grove.
''The Usenix Java Virtual Machine Research and Technology Symposium,'' April, 2001.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
2000
Reducing the Overhead of Dynamic Compilation
Chandra Krintz, David Grove, Vivek Sarkar, and Brad Calder.
''Software: Practice and Experience'', 31(8), 717-738, December 2000.
Adaptive Optimization in the Jalapeño JVM: The Controller's Analytical Model
Matthew Arnold, Stephen Fink, David Grove, Michael Hind, and Peter F. Sweeney.
''3rd ACM Workshop on Feedback-Directed and Dynamic Optimization (FDDO-3)'', December 10, 2000, Monterey, California.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Adaptive Optimization in the Jalapeño JVM
Matthew Arnold, Stephen Fink, David Grove, Michael Hind, and Peter F. Sweeney.
''ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2000)'', Minneapolis, Minnesota, October 15-19, 2000.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Quasi-Static Compilation for Java
Mauricio Serrano, Rajesh Bordawekar, Sam Midkiff and Manish Gupta.
''ACM Conference onObject-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', October 2000.
Debugging by Remote Reflection
Ton Ngo and John Barton.
''Euro-Par 2000,'' Munich, Germany, August 27 - Sept 1 2000.
'''(Source code available as of versions 2.0.0 through 2.1.1 of Jikes RVM.)'''
An Empirical Study of Selective Optimization
Matthew Arnold, Michael Hind, and Barbara G. Ryder.
''13th International Workshop on Languages and Compilers for Parallel Computing'', Yorktown Heights, New York, August 10-12, 2000.
Unified Analysis of Array and Object References in Strongly Typed Languages
Stephen Fink, Kathleen Knobe, and Vivek Sarkar.
''2000 Static Analysis Symposium (SAS 2000)'', Santa Barbara, CA, June, 2000.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
ABCD: Eliminating Array Bounds Checks on Demand
Rastislav Bodik, Rajiv Gupta, and Vivek Sarkar.
''ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation (PLDI 2000)'', Vancouver, British Columbia, Canada, June 17-21, 2000.
'''(Source code prototype available in versions 2.0.0 through 2.2.0 of Jikes RVM.)'''
A Framework for Interprocedural Analysis and Optimization in the Presence of Dynamic Class Loading
Vugranam C. Sreedhar, Michael Burke, and Jong-Deok Choi.
'' ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation (PLDI 2000)'', Vancouver, British Columbia, Canada, June 17-21, 2000.
Optimizing Java Programs in the Presence of Exceptions
Manish Gupta, Jong-Deok Choi, and Michael Hind.
'' 14th European Conference on Object-Oriented Programming (ECOOP 2000),'', June 12-16, 2000, Cannes, France.
The Jalapeño Virtual Machine
B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley.
''IBM System Journal'', Vol 39, No 1, February 2000.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
A Comparative Study of Static and Profile-Based Heuristics for Inlining
Matthew Arnold, Stephen Fink, Vivek Sarkar, and Peter F. Sweeney.
''2000 ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization (DYNAMO '00)'', Boston, Massachusetts, January 19-21, 2000.
1999
Implementing Jalapeño in Java
Bowen Alpern, Dick Attanasio, John J. Barton, Anthony Cocchi, Susan Flynn Hummel, Derek Lieber, Mark Mergen, Ton Ngo, Janice Shepherd, and Stephen Smith.
''1999 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '99)'', Denver, Colorado, November 1, 1999.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Efficient and Precise Modeling of Exceptions for the Analysis of Java Programs
Jong-Deok Choi, David Grove, Michael Hind, Vivek Sarkar.
''1999 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE '99)'', Toulouse, France, September 6, 1999.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Dependence Analysis for Java
Craig Chambers, Igor Pechtchanski, Vivek Sarkar, Mauricio Serrano, and Harini Srinivasan.
''Workshop on Languages and Compilers for Parallel Computing (LCPC 99),'' La Jolla, CA, Aug 1999.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
The Jalapeño Dynamic Optimizing Compiler for Java
Michael Burke, Jong-Deok Choi, Stephen Fink, David Grove, Michael Hind, Vivek Sarkar, Mauricio Serrano, V.C. Sreedhar, and Harini Srinivasan.
''1999 ACM Java Grande Conference'', San Francisco, June 12-14, 1999.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
Jalapeño — a Compiler-supported Java Virtual Machine for Servers
Bowen Alpern, Anthony Cocchi, Derek Lieber, Mark Mergen, and Vivek Sarkar.
''Workshop on Compiler Support for Software System (WCSSS 99)'', Atlanta, GA, May 1999, held in conjunction with PLDI '99.
'''(Source code available as of version 2.0.0 of Jikes RVM.)'''
View Online
Changes between revision 39
and revision 40:
Below is a list of all publications that use Jikes RVM. This list includes both papers written by Jikes RVM developers, as well as users of the system. We *strongly encourage* authors to utilize the [Research Archive|http://sourceforge.net/tracker/?group_id=128805&atid=723235] to *publish source code* used in their studies, and thus, allow others to build on their results. When the implementation described in a paper is available in a Jikes RVM release, this is noted with the paper. Information of dissertations relating to the Jikes RVM is [available here|Dissertations]. If you would like to see a paper listed then please send details to the [RVM researchers mailing list|Mailing Lists].
h2. 2008
h3. Constraint Based Optimization of Stationary Fields
* Ian Rogers, Jisheng Zhao, Chris Kirkham, Ian Watson
* [Principles and Practice of Programming in Java (PPPJ '08)|http://www.agentgroup.unimore.it/pppj08/], Modena, Italy, 9-11 September 2008.
h3. Approaches to Reflective Method Invocation
h3. [Boot Image Layout for Jikes RVM|ftp://ftp.cs.man.ac.uk/pub/apt/papers/RogersZhaoWatson_ICOOOLPS2008_bootimage.pdf]
* Ian Rogers, Jisheng Zhao and Ian Watson
* [Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS)|http://icooolps.loria.fr/], Cyprus, 7 July 2008.
* [Presentation|ftp://ftp.cs.man.ac.uk/pub/apt/papers/Rogers_ICOOOLPS2008_presentation.ppt], [tracker and source code|http://jira.codehaus.org/browse/RVM-515]
h3. Boot Image Layout for Jikes RVM
h3. [Pure Method Analysis within Jikes RVM|ftp://ftp.cs.man.ac.uk/pub/apt/papers/ZhaoRogersKirkhamWatson_ICOOOLPS2008_purity.pdf]
* Ian Rogers, Jisheng Zhao and Ian Watson
* Jisheng Zhao, Ian Rogers, Chris Kirkham and Ian Watson
* [Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS)|http://icooolps.loria.fr/], Cyprus, 7 July 2008.
* [Presentation|ftp://ftp.cs.man.ac.uk/pub/apt/papers/Rogers_ICOOOLPS2008_presentation.ppt], [tracker and source code|http://jira.codehaus.org/browse/RVM-516]
h3. Pure Method Analysis within Jikes RVM
h3. [Approaches to Reflective Method Invocation|ftp://ftp.cs.man.ac.uk/pub/apt/papers/RogersZhaoWatson_ICOOOLPS2008_reflection.pdf]
* Jisheng Zhao, Ian Rogers, Chris Kirkham and Ian Watson
* Ian Rogers, Jisheng Zhao and Ian Watson
* [Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS)|http://icooolps.loria.fr/], Cyprus, 7 July 2008.
* [Presentation|ftp://ftp.cs.man.ac.uk/pub/apt/papers/Rogers_ICOOOLPS2008_presentation.ppt], [tracker and source code|http://jira.codehaus.org/browse/RVM-517]
h3. Speculative Multithreading: An Object-Driven Approach
* Simon Wilkinson, Ian Watson
* [Parallel Execution of Sequential Programs on Multi-core Architectures (PESPMA)|http://cccp.eecs.umich.edu/pespma/index.html], Beijing, China, 22 June 2008.
h3. [No Bit Left Behind: The Limits of Heap Data Compression|http://www.cs.utexas.edu/users/jbsartor/ismm08-limits-compression.pdf]
* J.B. Sartor, M. Hirzel, and K.S. McKinley
* The 2008 International Symposium on Memory Management. Tucson, AZ, June 2008.
h3. [Immix: A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts.html#immix-pldi-2008]
* [Stephen Blackburn|http://cs.anu.edu.au/people/Steve.Blackburn/] and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley/]
* ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2008), Tucson, AZ, June 7-13, 2008
* Patch against r13767 [here|http://cs.anu.edu.au/~Steve.Blackburn/pubs/papers/immix-jikesrvm-r13767.patch.gz]. Code being integrated into svn head April-May 2008.
h3. [Adaptive Loop Tiling for a Multi-Cluster CMP|ftp://ftp.cs.man.ac.uk/pub/apt/papers/ZHLRKW_ICA3PP_2008.pdf]
* Jisheng Zhao, Matthew Horsnell, Mikel Lujan, Ian Rogers, Chris Kirkham and Ian Watson
* [International Conference on Algorithms and Architectures|http://www.cs.ucy.ac.cy/ica3pp08/], Cyprus, 9-11 June 2008.
h3. A Study of Java Object Demographics
* Richard Jones and Chris Ryder
* International Symposium on Memory Management, Tucson, AZ, June 7-8, 2008
h3. Phase-based Adaptive Recompilation in a JVM
* Dayong Gu and Clark Verbrugge
* [2008 International Symposium on Code Generation and Optimization (CGO)|http://www.cgo.org/], Boston, Massachusetts, 6-9 April.
h3. [Branch-on-Random|http://www-sal.cs.uiuc.edu/~zilles/papers/branch-on-random.cgo2008.pdf]
* Edward Lee and Craig Zilles
* [2008 International Symposium on Code Generation and Optimization (CGO)|http://www.cgo.org/], Boston, Massachusetts, 6-9 April.
h3. [GC Assertions: Using the Garbage Collector to Check Heap Properties|http://www.eecs.tufts.edu/~eaftan/gcassertions-mspc-2008.pdf]
* Edward Aftandilian and Samuel Guyer
* [ACM SIGPLAN Workshop on Memory Systems Performance and Correctness|http://www.cs.umass.edu/~emery/MSPC08/], Seattle, Washington, USA, 2 March, 2008
h3. [Dynamic Analysis of Java Program Concepts for Visualization and Profiling|http://intranet.cs.man.ac.uk/apt/publications/papers/Singer_SoCP08.php]
* Jeremy Singer and Chris Kirkham
* Science of Computer Programming, vol. 70, no.2-3, pp.111-126, Elsevier, Feb 2008.
h3. [Object Co-location and Memory Reuse for Java Programs|http://doi.acm.org/10.1145/1328195.1328199]
* Zoe C. H. Yu, Francis C. M. Lau, and Cho-Li Wang
* ACM Transactions on Architecture and Code Optimization, Vol. 4, No. 4, Article 23, January 2008.
h2. 2007
h3. [Effective Prefetch for Mark-Sweep Garbage Collection|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts.html#pf-ismm-2007]
* Robin Garner, [Stephen Blackburn|http://cs.anu.edu.au/people/Steve.Blackburn/], & Daniel Frampton
* ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
* Patch against Jikes RVM r10327 available [here|http://cs.anu.edu.au/~Steve.Blackburn/pubs/papers/pf-ismm-2007.tgz].
h3. [Decrypting the Java Gene Pool: Predicting Object Lifetimes with Micro-Patterns|http://www.cs.kent.ac.uk/pubs/2007/2596/index.html]
* [Sebastien Marion|http://www.cs.kent.ac.uk/people/rpg/sm244/], [Richard Jones|http://www.cs.kent.ac.uk/people/staff/rej/], & [Chris Ryder|http://www.cs.kent.ac.uk/people/staff/cr20/]
* ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
h3. Uniqueness Inference for Compile-Time Object Deallocation
* Sigmund Cherem & Radu Rugina
* ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
h3. [Statistically Rigorous Java Performance Evaluation|http://itkovian.net/base/files/papers/oopsla2007-georges-preprint.pdf]
* [Andy Georges|http://itkovian.net], [Dries Buytaert|http://buytaert.net], [Lieven Eeckhout|http://www.elis.ugent.be/~leekhou]
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
h3. [Using HPM-Sampling to Drive Dynamic Compilation|http://buytaert.net/files/oopsla07-buytaert.pdf]
* [Dries Buytaert|http://buytaert.net], [Andy Georges|http://itkovian.net], [Michael Hind|http://www.research.ibm.com/people/h/hind], [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Lieven Eeckhout|http://www.elis.ugent.be/~leekhou], [Koen De Bosschere|http://www.elis.ugent.be/~kdb]
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
h3. [Intelligent Selection of Application-Specific Garbage Collectors|http://www.cs.man.ac.uk/~jsinger/pdfs/ismm07.pdf]
* [Jeremy Singer|http://www.cs.man.ac.uk/~jsinger/], [Gavin Brown|http://www.cs.man.ac.uk/~gbrown], Ian Watson, [John Cavazos|http://www.cis.udel.edu/~cavazos/]
* ACM SIGPLAN International Symposium on Memory Management (ISMM), Montreal, October 2007
h3. [Probabilistic Calling Context|http://www.cs.utexas.edu/~mikebond/pcc-oopsla-2007.pdf]
* [Michael D. Bond|http://www.cs.utexas.edu/~mikebond/], [Kathryn S. McKinley|http://www.cs.utexas.edu/~mckinley/].
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
* Source code available on the [Research Archive].
h3. [Tracking Bad Apples: Reporting the Origin of Null and Undefined Value Errors|http://www.cs.utexas.edu/~mikebond/origin-tracking-oopsla-2007.pdf]
* [Michael D. Bond|http://www.cs.utexas.edu/~mikebond/], [Nicholas Nethercote|http://www.cs.mu.oz.au/~njn/], Stephen W. Kent, [Samuel Z. Guyer|http://www.cs.tufts.edu/~sguyer/], [Kathryn S. McKinley|http://www.cs.utexas.edu/~mckinley/].
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Montreal, October 2007
* Source code available on the [Research Archive].
h3. Java Object Header Elimination for Reduced Memory Consumption in 64-Bit Virtual Machines
* [Kris Venstermans|http://www.elis.ugent.be/~kvenster/research.html], [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb].
* ACM Transactions on Code Optimizations (TACO), Vol 4, No. 3, Article 17, September 2007
h3. [Optimizing Chip Multiprocessor Work Distribution using Dynamic Compilation|ftp://ftp.cs.man.ac.uk/pub/apt/papers/ZhaoHorsnellRogersDinnKirkhamWatson_EuroPar07.pdf]
* Jisheng Zhao, Matthew Horsnell, Ian Rogers, Andrew Dinn, Chris Kirkham, Ian Watson.
* Proceedings of Euro-Par, IRISA/ENS Cachan, Rennes, France, 28-31 August 2007
h3. [Object-Relative Addressing: Compressed Pointers in 64-Bit Java Virtual Machines |http://www.elis.ugent.be/~kvenster/papers/VenstermansKris_ORA.pdf]
* [Kris Venstermans|http://www.elis.ugent.be/~kvenster/research.html], [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb].
* Proceedings of 21st European Conference on Object-Oriented Programming (ECOOP '07), July 30 - August 3, 2007
h3. [Correcting the Dynamic Call Graph Using Control Flow Constraints|http://www.cs.utexas.edu/~bclee/papers/cgc-cc-2007.pdf]
* [Byeongcheol Lee|http://www.cs.utexas.edu/~bclee], Kevin Resnick, [Michael D. Bond|http://www.cs.utexas.edu/~mikebond/], [Kathryn S. McKinley|http://www.cs.utexas.edu/~mckinley/]
* Proceedings of the 16th International Conference on Compiler Construction (CC 2007), Braga, Portugal, March 2007
h3. Isla Vista Heap Sizing: Using Feedback to Avoid Paging
* Chris Grzegorczyk, Sunil Soman, Chandra Krintz, Rich Wolski
* Proceedings of the 5th International Symposium on Code Generation and Optimization (CGO 2007), San Jose, California, March 2007
h3. A Scalable, Non-blocking Approach to Transactional Memory
* H. Chafi, J. Casper, B. Carlstrom, A. McDonald, C. Cao Minh, W. Baek, C. Kozyrakis, and K. Olukotun (Stanford University)
* The 13th International Symposium on High-Performance Computer Architecture (HPCA), Phoenix, Arizona, February 10-14, 2007.
h3. [Mobility of Data in Distributed Hybrid Computing Systems|http://escher.elis.ugent.be/publ/Edocs/DOC/P107_032.pdf]
* [Philippe Faes|http://www.elis.ugent.be/~pfaes], Mark Christiaens and Dirk Stroobandt
* Proceedings of the 21st International Parallel and Distributed Processing Symposium, 2007
h3. [Cork: Dynamic Memory Leak Detection for Java|http://www.cs.utexas.edu/~mjump/papers/cork-popl-2007.pdf]
* [Maria Jump|http://www.cs.utexas.edu/~mjump], [Kathryn S. McKinley|http://www.cs.utexas.edu/~mckinley/]
* Proceedings of the 2007 Principles of Programming Languages, Nice, France, January 2007
h2. 2006
h3. [Lazy Interprocedural Analysis for Dynamic Loop Parallelization|ftp://ftp.cs.man.ac.uk/pub/apt/papers/ZhaoKirkhamRogers_NHC06.pdf]
* Jisheng Zhao, Chris Kirkham, Ian Rogers
* New Horizons in Compilers, Bangalore, India, December 18, 2006.
h3. CRAMM: Virtual Memory Support for Garbage-Collected Applications
* Ting Yang and Emery D. Berger and Scott F. Kaplan and J. Eliot B. Moss
* Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation (OSDI), Seattle, Washington, November, 2006.
h3. [Revocation techniques for Java concurrency|http://dx.doi.org/10.1002/cpe.1008]
* Welc A, Jagannathan S and Hosking AL.
* Concurrency and Computation - Practice and Experience 18(2):1613-1656, October 2006.
h3. [JAVANA: A System for Building Customized Java Program Analysis Tools|http://buytaert.net/files/oopsla06-paper.pdf]
* Jonas Maebe, Dries Buytaert, Lieven Eeckhout, Koen De Bosschere
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
h3. [The DaCapo Benchmarks: Java Benchmarking Development and Analysis|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts.html#dacapo-oopsla-2006]
* Stephen M Blackburn, Robin Garner, Chris Hoffmann, Asjad M Khan, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanovic, Thomas VanDrunen, Daniel von Dincklage, Benjamin Wiedermann
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
h3. [Method-Specific Dynamic Compilation using Logistic Regression|http://homepages.inf.ed.ac.uk/jcavazos/oopsla-2006.pdf]
* John Cavazos, Michael O'Boyle
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
h3. Adapting VM Techniques for Seamless Aspect Support
* Christoph Bockisch, Matthew Arnold, Tom Dinkelaker, Mira Mezini
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
h3. Efficient Control Flow Quantification
* Christoph Bockisch, Sebastian Kanthak, Michael Haupt, Matthew Arnold, Mira Mezini,
* ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Portland, Oregon, October 22-26, 2006.
h3. [Bell: Bit-Encoding Online Memory Leak Detection|http://www.cs.utexas.edu/~mikebond/bell-asplos-2006.pdf]
* [Michael D. Bond|http://www.cs.utexas.edu/~mikebond/], [Kathryn S. McKinley|http://www.cs.utexas.edu/~mckinley/].
* Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems ([ASPLOS-XII|http://www.princeton.edu/~asplos06/]), San Jose, October 21-25, 2006.
* Source code available on the [Research Archive].
h3. [Trace-based automatic parallelization in the Jikes RVM|http://www.cs.ualberta.ca/~amaral/cascon/CDP06/#BorysBradel]
* Borys Bradel and Tarek S. Abdelrahman
* ''Proceedings of the [5th Workshop on Compiler-Driven Performance|http://www.cs.ualberta.ca/~amaral/cascon/CDP06],'' Toronto, Canada, Oct 16, 2006.
h3. [Enabling Java Mobile Computing on the IBM Jikes Research Virtual Machine|http://www.agentgroup.unimore.it/MOON/papers/pdf/pppj06.pdf]
* [Giacomo Cabri|http://www.agentgroup.unimore.it/didattica/curriculum/giacomo/], [Letizia Leonardi|http://www.agentgroup.unimo.it/didattica/curriculum/letizia/Leonardi.html], ['''Raffaele Quitadamo'''|http://www.agentgroup.unimore.it/didattica/curriculum/raffaele].
* ''Proceedings of the 4th International Conference on the Principles and Practice of Programming in Java 2006 (PPPJ)'', Mannheim, Germany, August 2006, ACM Press.
h3. [Transparently reconciling transactions with locking for Java synchronization|http://dx.doi.org/10.1007/11785477_8]
* Welc A, Hosking AL, Jagannathan S.
* Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP):148-173 (Nantes, France, July 2006), Lecture Notes in Computer Science 4067, Springer-Verlag, 2006.
h3. [Architectural Semantics for Practical Transactional Memory|http://tcc.stanford.edu/publications/tcc_isca2006.pdf]
* [Austen McDonald|http://www.stanford.edu/~austenmc], [JaeWoong Chung|http://www.stanford.edu/~jwchung], [Brian D. Carlstrom|http://carlstrom.com], [Chi Cao Minh|http://www.stanford.edu/~caominh], [Hassan Chafi|http://www.stanford.edu/~hchafi], [Christos Kozyrakis|http://csl.stanford.edu/~christos], and [Kunle Olukotun|http://www-hydra.stanford.edu/~kunle].
* ''Proceedings of the 33rd Annual International Symposium on Computer Architecture'', Boston, Massachusetts, June 17-21, 2006.
h3. [Relative Factors in Performance Analysis of JVMs|http://www.sable.mcgill.ca/publications/papers/2006-1/gu-06-relative.pdf]
* Dayong Gu, Clark Verbrugge, and Etienne M. Gagnon
* ''Proceedings of the 2nd Annual International Conference on Virtual Execution Environments'', Ottawa, Canada, June 14-16, 2006.
h3. Impact of Virtual Execution Environments on Processor Energy Consumption and Hardware Adaptation
* Shiwen Hu and Lizy K. John
* ''Proceedings of the 2nd Annual International Conference on Virtual Execution Environments'', Ottawa, Canada, June 14-16, 2006.
h3. [Free-Me: A Static Analysis for Automatic Individual Object Reclamation|http://www.eecs.tufts.edu/~sguyer/free-pldi-2006.pdf]
* [Samuel Z. Guyer|http://www.eecs.tufts.edu/~sguyer], [Kathryn S. McKinley|http://www.cs.utexas.edu/users/mckinley], and Daniel Frampton.
* ''Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation'', Ottawa, Canada, June 10-16, 2006.
h3. The Compressor: Concurrent, Incremental, and Parallel Compaction
* Haim Kermany, [Erez Petrank|http://www.cs.technion.ac.il/~erez].
* ''Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation'', Ottawa, Canada, June 10-16, 2006.
h3. [The Atomos Transactional Programming Language|http://tcc.stanford.edu/publications/tcc_pldi2006.pdf]
* [Brian D. Carlstrom|http://carlstrom.com], [Austen McDonald|http://www.stanford.edu/~austenmc], [Hassan Chafi|http://www.stanford.edu/~hchafi], [JaeWoong Chung|http://www.stanford.edu/~jwchung], [Chi Cao Minh|http://www.stanford.edu/~caominh], [Christos Kozyrakis|http://csl.stanford.edu/~christos], and [Kunle Olukotun|http://www-hydra.stanford.edu/~kunle].
* ''Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation'', Ottawa, Canada, June 10-16, 2006.
h3. [Parallelizing SPECjbb2000 with Transactional Memory|http://tcc.stanford.edu/publications/tcc_wtw2006_specjbb.pdf]
* [JaeWoong Chung|http://www.stanford.edu/~jwchung], [Chi Cao Minh|http://www.stanford.edu/~caominh], [Brian D. Carlstrom|http://carlstrom.com], and [Christos Kozyrakis|http://csl.stanford.edu/~christos].
* ''Workshop on Transactional Memory Workloads'', Ottawa, Canada, June 10, 2006.
h3. [Reducing generational copy reserve overhead with fallback compaction|http://doi.acm.org/10.1145/1133956.1133960]
* McGachey P, Hosking AL.
* Proceedings of the 4th ACM SIGPLAN International Symposium on Memory Management (ISMM):17-28 (Ottawa, Canada, June 2006), ACM.
h3. [Hybrid Optimizations: Which Optimization Algorithm to Use?|http://homepages.inf.ed.ac.uk/jcavazos/cc-2006.pdf]
* [John Cavazos|http://www.inf.ed.ac.uk/people/staff/John_Cavazos.html], [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss], and [Michael F.P. O'Boyle|http://www.dcs.ed.ac.uk/home/mob]
* ''15th International Conference on Compiler Construction (CC 2006)'', Vienna, Austria, March 30 - 31, 2006.
h3. [Space-Efficient 64-bit Java Objects through Selective Typed Virtual Addressing|http://www.elis.ugent.be/~kvenster/papers/VenstermansKris_SelectiveTypedVirtualAddressing.pdf]
* [Kris Venstermans|http://www.elis.ugent.be/~kvenster/research.html], [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb].
* ''The 4th Annual International Symposium on Code Generation and Optimization (CGO)'', New York. March 26-29, 2006.
h3. [Dynamic Class Hierarchy Mutation|http://www.ece.wisc.edu/~pharm/papers/cgo4.pdf]
* [Lixin Su|http://homepages.cae.wisc.edu/~lsu] and [Mikko H Lipasti|http://www.engr.wisc.edu/ece/faculty/lipasti_mikko.html].
* ''The 4th Annual International Symposium on Code Generation and Optimization (CGO)'', New York. March 26-29, 2006.
h3. [Online Phase Detection Algorithms|http://www.research.ibm.com/people/h/hind/papers.html#cgo06]
* [Priya Nagpurkar|http://www.cs.ucsb.edu/~priya], [Michael Hind|http://www.research.ibm.com/people/h/hind], [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz], [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs], and V.T. Rajan.
* ''The 4th Annual International Symposium on Code Generation and Optimization (CGO)'', New York. March 26-29, 2006.
h3. [The Common Case Transactional Behavior of Multithreaded Programs|http://tcc.stanford.edu/publications/tcc_hpca2006.pdf]
* [JaeWoong Chung|http://www.stanford.edu/~jwchung], [Chi Cao Minh|http://www.stanford.edu/~caominh], [Hassan Chafi|http://www.stanford.edu/~hchafi], [Austen McDonald|http://www.stanford.edu/~austenmc], [Brian D. Carlstrom|http://carlstrom.com], [Christos Kozyrakis|http://csl.stanford.edu/~christos], and [Kunle Olukotun|http://www-hydra.stanford.edu/~kunle].
* ''12th International Symposium on High Performance Computer Architecture (HPCA)'', Austin, Texas, USA, February 11-15, 2006.
h3. [64-bit versus 32-bit Virtual Machines for Java|http://www3.interscience.wiley.com/cgi-bin/fulltext/111082816/PDFSTART]
* [Kris Venstermans|http://www.elis.ugent.be/~kvenster/research.html], [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb]
* ''Software: Practice and Experience'', January 2006.
h3. Compiler Techniques for High Performance Sequentially Consistant Java Programs.
* Zehra Sura, Xing Fang, [Chi-Leung Wong|http://polaris.cs.uiuc.edu/~cwong1], \[ Samuel P. Midkiff\|http://www.research.ibm.com/people/m/midkiff\], [Jaejin Lee|http://www.cse.msu.edu/~jlee], [David Padua|http://polaris.cs.uiuc.edu/~padua].
* ''11th International Workshop on Compilers for Parallel Computers (CPC 2006)'', A Coruna, Spain. January 2006.
h3. Automatic Tuning of Inlining Heuristics
* [John Cavazos|http://www.inf.ed.ac.uk/people/staff/John_Cavazos.html] and [Michael F.P. O'Boyle|http://www.dcs.ed.ac.uk/home/mob]
* ''11th International Workshop on Compilers for Parallel Computers (CPC 2006)'', A Coruna, Spain. January 2006.
h2. 2005
h3. [Loop Parallelisation for the Jikes RVM|http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=1578860]
* [Jisheng Zhao|http://www.cs.manchester.ac.uk/apt/people/jzhao], [Ian Rogers|http://www.cs.man.ac.uk/~irogers], [Chris Kirkham|http://www.cs.manchester.ac.uk/apt/people/ckirkham], and [Ian Watson|http://www.cs.manchester.ac.uk/apt/people/iwatson].
* ''6th Parallel and Distributed Computing, Applications and Technologies (PDCAT)'', Dalian, China, December 5-8, 2005.
h3. [Continuous Path and Edge Profiling|http://www.cs.utexas.edu/~mikebond/pep-micro-2005.pdf]
* [Michael D. Bond|http://www.cs.utexas.edu/users/mikebond] and [Kathryn S. McKinley|http://www.cs.utexas.edu/users/mckinley].
* 38th International Symposium on Microarchitecture (MICRO), Barcelona, November 14-16, 2005.
* Source code available on the [Research Archive].
h3. [Garbage Collection Hints|http://www.buytaert.net/files/hipeac05-paper.pdf]
* [Dries Buytaert|http://www.buytaert.net/], [Kris Venstermans|http://www.elis.ugent.be/~kvenster/research.html], [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb].
* ''International Conference on High Performance Embedded Architectures & Compilers (HIPEAC'05)'', Lecture Notes in Computer Science Volume 3793, Springer-Verlag. Barcelona, Spain, November 2005.
h3. Towards Continuous Usage Control on Grid Computational Services.
* Fabio Martinelli, Paolo Mori, and Anna Vaccarelli
* ''International Conference on Autonomic and Autonomous Systems and International Conference on Networking and Services'', Papeete, Tahiti, October 23-28, 2005.
h3. [A Platform to Use Hardware Performance Counters for Dynamic Compilation|http://www.ece.lsu.edu/lcpc2005/papers/lcpc05-paper-22.pdf]
* [Florian Schneider|http://www.inf.ethz.ch/personal/florian] and [Thomas Gross|http://www.lst.inf.ethz.ch/people/trg.html].
* ''Languages and Compilers for Parallel Computing (LCPC)'', IBM, Hawthorne, New York, October 20-21, 2005.''
h3. [Are Patches Cutting it? Structuring Distribution within a JVM using Aspects|http://www.cs.uvic.ca/~sweng/baldwin_cascon2005.pdf#search="jikes rvm"]
* Jennifer Baldwin, Yvonne Coady
* ''2005 conference of the Centre for Advanced Studies on Collaborative research (CASCON)'', Toronto, Canada, Oct 17-20, 2005.
h3. [Automating Vertical Profiling|http://www-plan.cs.colorado.edu/diwan/oopsla05.pdf]
* [Matthias Hauswirth|http://www.cs.colorado.edu/~hauswirt], [Amer Diwan|http://www.cs.colorado.edu/~diwan], [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs], and Michael Mozer.
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
h3. Improving Virtual Machine Performance Using a Cross-Run Repository
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Adam Welc|http://www.cs.purdue.edu/homes/welc], and V.T. Rajan.
\*''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
h3. [Quantifying the Performance of Garbage Collection vs. Explicit Memory Management|http://www-cs.canisius.edu/~hertzm/gcmalloc-oopsla-2005.pdf]
* [Matthew Hertz|http://www-cs.canisius.edu/~hertzm] and [Emery Berger|http://www.cs.umass.edu/~emery].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
h3. Quantifying the Performance of Garbage Collection vs.Explicit Memory Management
* [Matthew Hertz|http://www-cs.canisius.edu/~hertzm] and [Emery Berger|http://www.cs.umass.edu/~emery].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
h3. [Runtime Specialization With Optimistic Heap Analysis|http://www.cs.berkeley.edu/~bodik/research/oopsla05-specialization.pdf]
* [Ajeet Shanker|http://www.cs.berkeley.edu/~aj], [Rastislav Bodik|http://www.cs.berkeley.edu/~bodik], [Subramanya Sastry|http://www.cs.wisc.edu/~sastry], and [James Smith|http://www.engr.wisc.edu/ece/faculty/smith_james.html].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
h3. [Safe Futures for Java|http://www.cs.purdue.edu/homes/suresh/papers/oopsla05.pdf]
* [Adam Welc|http://www.cs.purdue.edu/homes/welc], [Suresh Jagannathan|http://www.cs.purdue.edu/homes/suresh], and [Antony L. Hosking|http://www.cs.purdue.edu/~hosking].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', San Diego, California, October 16-20, 2005.
h3. [Transactional Execution of Java Programs|http://tcc.stanford.edu/publications/tcc_scool2005.pdf]
* [Brian D. Carlstrom|http://carlstrom.com], [JaeWoong Chung|http://www.stanford.edu/~jwchung], [Hassan Chafi|http://www.stanford.edu/~hchafi], [Austen McDonald|http://www.stanford.edu/~austenmc], [Chi Cao Minh|http://www.stanford.edu/~caominh], [Lance Hammond|http://www.mavam.com/lance], [Christos Kozyrakis|http://csl.stanford.edu/~christos], and [Kunle Olukotun|http://www-hydra.stanford.edu/~kunle].
* ''OOPSLA 2005 Workshop on Synchronization and Concurrency in Object-Oriented Languages (SCOOL)'', San Diego, California, USA, October 16, 2005.
h3. [Automatic Tuning of Inlining Heuristics|http://www.anc.ed.ac.uk/machine-learning/colo/inlining.pdf]
* [John Cavazos|http://www.inf.ed.ac.uk/people/staff/John_Cavazos.html] and [Michael F.P. O'Boyle|http://www.dcs.ed.ac.uk/home/mob]
* ''SC\|05 (Supercomputing): International Conference for High Performance Computing, Networking, and Storage'', Seattle WA, November 12-18, 2005.
h3. [Testing in Resource Constrained Execution Environments|http://cs.allegheny.edu/wiki/gkapfham/81]
* [Gregory M. Kapfhammer|http://cs.allegheny.edu/~gkapfham], [Mary Lou Soffa|http://www.cs.virgina.edu/~soffa], and [Daniel Mosse|http://www.cs.pitt.edu/~mosse]
* ''ACM/IEEE International Conference on Automated Software Engineering'', LongBeach, CA, November 7-11, 2005.
h3. [JikesNode and PearColator: A Jikes RVM Operating System and Legacy Code Execution Environment|ftp://ftp.cs.man.ac.uk/pub/apt/papers/irogers_plos05.pdf]
* [Ian Rogers|http://www.cs.man.ac.uk/~irogers] and [Chris Kirkham|http://www.cs.manchester.ac.uk/apt/people/ckirkham].
* ''The 2nd ECOOP Workshop on Programming Languages and Operating Systems (ECOOP-PLOS '05)'', Glasgow, UK, July 26, 2005.
h3. [An Automatic Runtime DOALL Loop Parallelisation Optimization for Java|ftp://ftp.cs.man.ac.uk/pub/apt/papers/irogers_poosc05.pdf]
* [Ian Rogers|http://www.cs.manchester.ac.uk/apt/people/irogers], [Jisheng Zhao|http://www.cs.manchester.ac.uk/apt/people/jzhao], [Chris Kirkham|http://www.cs.manchester.ac.uk/apt/people/ckirkham], [Ian Watson|http://www.cs.manchester.ac.uk/apt/people/iwatson].
* ''Parallel/High-Performance Object-Oriented Scientific Computing (POOSC '05)'', Glasgow, UK, July 25, 2005.
h3. [Characterization of TCC on Chip-Multiprocessors|http://tcc.stanford.edu/publications/tcc_pact2005.pdf]
* [Austen McDonald|http://www.stanford.edu/~austenmc], [JaeWoong Chung|http://www.stanford.edu/~jwchung], [Hassan Chafi|http://www.stanford.edu/~hchafi], [Chi Cao Minh|http://www.stanford.edu/~caominh], [Brian D. Carlstrom|http://carlstrom.com], [Lance Hammond|http://www-lance.stanford.edu], [Christos Kozyrakis|http://csl.stanford.edu/~christos], and [Kunle Olukotun|http://www-hydra.stanford.edu/~kunle].
\*''The Fourteenth International Conference on Parallel Architectures and Compilation Techniques (PACT '05)'', Saint Louis, Missouri, September 19, 2005.
h3. [FPGA-Aware Garbage Collection in Java|http://escher.elis.ugent.be/publ/Edocs/DOC/P105_110.pdf]
* [Faes, Ph.|http://www.elis.UGent.be/~pfaes]; Christiaens, M.; [Buytaert, D. |http://www.buytaert.net/]; Stroobandt, D.
* ''IEEE 2005 International Conference on Field Programmable Logic and Applications (FPL).'', August 2005.
h3. [Garbage Collection Without Paging|http://www-ali.cs.umass.edu/~hertz/bc-pldi-2005.pdf]
* [Matthew Hertz|http://www-cs.canisius.edu/~hertzm], [Yi Feng|http://www.cs.umass.edu/~yifeng], and [Emery Berger|http://www.cs.umass.edu/~emery].
* ''ACM SIGPLAN Conference on Programming Languages Design and and Implementation (PLDI '05)'', Chicago, Il, June 13, 2005
h3. An Execution Layer for Aspect-Oriented Programming Languages
* [Michael Haupt|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=3], [Mira Mezini|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=2], [Christoph Bockisch|http://www.cbockisch.de], Tom Dinelaker, Michael Eichberg, and Michael Krebs
* ''ACM SIGPLAN/USENIX Conference on Virtual Execution Environments (VEE '05)'', Chicago, Il, June 11-12, 2005
h3. Immutability Specification and its Application
* [Igor Pechtchanski|http://www.cs.nyu.edu/phd_students/pechtcha] and [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* ''Concurrency and Computation: Practice and Experience'', Vol 17, No 5-6, April/May 2005.
h3. Age-Oriented Concurrent Garbage Collection
* Harel Paz, [Erez Petrank|http://www.cs.technion.ac.il/~erez], and [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn].
* ''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
h3. An Efficient On-The-Fly Cycle Collection
* Harel Paz, [Erez Petrank|http://www.cs.technion.ac.il/~erez], [David F. Bacon|http://www.research.ibm.com/people/d/dfb], Eliot K. Kolodner, and V.T. Rajan.
* ''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
h3. Jazz: A Tool for Demand-Driven Structural Testing
* Jonathan Misurda, Jim Clause, Juliya Reed, [Bruce R. Childers|http://www.cs.pitt.edu/~childers], and [Mary Lou Soffa|http://www.cs.virgina.edu/~soffa].
* ''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
h3. A Study of Type Analysis for Speculative Method Inlining in a JIT Environment
* [Feng Qian|http://www.sable.mcgill.ca/~fqian] and [Laurie Hendren|http://www-acaps.cs.mcgill.ca/~hendren].
* ''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
h3. Using Interprocedural Side-effect Information in JIT Optimizations
* [Anatole Le|http://www.sable.mcgill.ca/~ale44], [Ondrej Lhotak|http://www.sable.mcgill.ca/~olhota], and [Laurie Hendren|http://www-acaps.cs.mcgill.ca/~hendren].
* ''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Edinburgh, UK, April 2005.
h3. [Effective Adaptive Computing Environment Management via Dynamic Optimization|http://www.ece.utexas.edu/projects/ece/lca/ps/acem_cgo05.pdf]
* [Shiwen Hu|http://www.ece.utexas.edu/~hushiwen], [Madhavi Valluri|http://www.ece.utexas.edu/~valluri], [Lizy K. John|http://www.ece.utexas.edu/~ljohn]
* ''2005 International Symposium on Code Generation and Optimization'', San Jose, California, March 2005.
h3. [Collecting and Exploiting High-Accuracy Call Graph Profiles in Virtual Machines|http://www.research.ibm.com/people/d/dgrove/papers/cgo05.html]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold/] and [David Grove|http://www.research.ibm.com/people/d/dgrove/]
* ''2005 International Symposium on Code Generation and Optimization'', San Jose, California, March 2005.
* '''(Source code available as of version 2.3.5 of Jikes RVM.)'''
{anchor:rvmoss}
h3. [The Jikes Research Virtual Machine project: Building an open-source research community|http://www.research.ibm.com/journal/sj/442/alpern.pdf]
* B. Alpern, [S. Augart|http://www.augart.com], [S.M. Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], M. Butrico, A. Cocchi, [P Cheng|http://www.research.ibm.com/people/p/perryche], J. Dolby, [S. Fink|http://www.research.ibm.com/people/s/sfink], [D. Grove|http://www.research.ibm.com/people/d/dgrove], [M. Hind|http://www.research.ibm.com/people/h/hind], [K.S. McKinley|http://www.cs.utexas.edu/users/mckinley], M. Mergen, [J.E.B. Moss|http://ali-www.cs.umass.edu/~moss], T. Ngo, [V. Sarkar|http://www.research.ibm.com/people/v/vsarkar], and M. Trapp.
* ''[IBM Systems Journal|http://www.research.ibm.com/journal/sj]'', Vol 44, No 2, 2005.
h2. 2004
h3. [Anticipation-Based Partial Redundancy Elimination for Static Single Assignment Form|ftp://ftp.cs.purdue.edu/pub/hosking/papers/a-ssapre.pdf]
* [Thomas VanDrunen|http://cs.wheaton.edu/~tvandrun] and [Antony Hosking|http://www.cs.purdue.edu/~hosking].
* ''Software - Practice and Experience'', 34(15):1413-1439, December 2004.
h3. An Inlining Technique in Jikes RVM to Improve Performance
* Ritesh Kumar, Ragesh Jaiswal, and Sanjeev K. Aggarwal.
* ''Advances in Computer Science and Technology'', St. Thomas, Virgin Islands, November 2004.
h3. [Finding Your Cronies: Static Analysis for Dynamic Object Colocation|http://www.cs.utexas.edu/~sammy/cronies-oopsla-2004.pdf]
* [Samuel Z. Guyer|http://www.cs.utexas.edu/users/sammy] and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
h3. [MC2: High-Performance Garbage Collection for Memory-Constrained Environments|http://www.cs.umass.edu/~emery/pubs/04-15.pdf]
* Narendran Sachindran, [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss], and [Emery Berger|http://www.cs.umass.edu/~emery].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Method-Level Phase Behavior in Java Workloads|http://www.buytaert.net/files/oopsla04-paper.pdf]
* [Andy Georges|http://www.elis.ugent.be/~ageorges], [Dries Buytaert|http://www.buytaert.net], [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Program Locality: The Garbage Collection Advantage|http://www.cs.utexas.edu/users/mckinley/papers.html]
* [Xianglong Huang|http://www.cs.utexas.edu/users/xlhuang], [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley], [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss], [Zhenlin Wang|http://www.cs.mtu.edu/~zlwang], and [Perry Cheng|http://www.research.ibm.com/people/p/perryche].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Vertical Profiling: Understanding the Behavior of Object-Oriented Applications|http://www-plan.cs.colorado.edu/diwan/vertical-prof-oopsla.pdf]
* [Matthias Hauswirth|http://www.cs.colorado.edu/~hauswirt], [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs], [Amer Diwan|http://www.cs.colorado.edu/~diwan], and [Michael Hind|http://www.research.ibm.com/people/h/hind].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Automatic Heap Sizing: Taking Real Memory Into Account|http://www.cs.umass.edu/~emery/pubs/automatic-heapsize-ismm2004.pdf]
* [Ting Yang|http://www.cs.umass.edu/~tingy], [Emery Berger|http://www.cs.umass.edu/~emery], [Matthew Hertz|http://www-cs.canisius.edu/~hertzm], Scott F. Kaplan, and [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Barriers: Friend or Foe?|http://cs.anu.edu.au/~Steve.Blackburn/pubs/papers/wb-ismm-2004.pdf]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], and [Antony Hosking|http://www.cs.purdue.edu/~hosking].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Dynamic Object Sampling for Pretenuring|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts.html#dpt-ismm-2004]
* [Maria Jump|http://www.cs.utexas.edu/users/mjump], [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Dynamic Selection of Application-Specific Garbage Collectors|http://www.cs.ucsb.edu/~ckrintz/papers/p22-soman.pdf]
* [Sunil Soman|http://www.cs.ucsb.edu/~sunils], [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz], and [David F. Bacon|http://www.research.ibm.com/people/d/dfb].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
h3. [Write Barrier Elision for Concurrent Garbage Collectors|http://www.research.ibm.com/people/d/dfb/publications.html#Vechev04Write]
* \[Martin Vechev<a/> and [http://www.research.ibm.com/people/d/dfb David F. Bacon|http://www.cl.cam.ac.uk/users/mv270].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '04)'', Vancouver, British Columbia, Canada, October 2004.
h3. Improving Grid Service Security with Fine Grain Policies
* Fabrizio Baiardi, Fabio Martinelli, Paolo Mori, and Anna Vaccarelli
* ''On the Move to Meaningful Internet System 2004: OTM Workshops, Lecture Notes in Computer Science'' 3292: Springer Verlag (2004)
h3. [Virtual Machine Support for Aspects with Advice Instance Tables|http://www.st.informatik.tu-darmstadt.de/database/publications/data/JFDLPA04.pdf?id=102]
* [Michael Haupt|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=3] and [Mira Mezini|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=2].
* ''First French Workshop on Aspect-Oriented Programming'', Paris, France, September 2004.
h3. [Micro-Measurements for Dynamic Aspect-Oriented Systems|http://www.st.informatik.tu-darmstadt.de/database/publications/data/Nodee-2004.pdf?id=95]
* [Michael Haupt|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=3] and [Mira Mezini|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=2].
* ''Net.ObjectDays 2004 (NODe)'', Erfurt, Germany, September 2004.
h3. The Use of Traces for Inlining in Java Programs
* [Borys J. Bradel|http://www.eecg.toronto.edu/~bradel] and [Tarek S. Abdelrahman|http://www.eecg.toronto.edu/~tsa].
* ''Languages and Compilers for Parallel Computing (LCPC)'', Purdue University, Indiana, September 2004.
h3. [Online Impact Analysis via Dynamic Compilation Technology|http://www.cis.udel.edu/~hiper/passages/papers/BreechEA-ICSM04.pdf]
* [Ben Breech|http://www.cis.udel.edu/~breech], [Anthony Danalis|http://www.cis.udel.edu/~danalis], Stacey Shindo, and [Lori Pollock|http://www.cis.udel.edu/~pollock]
* ''International Conference on Software Maintenance (ICSM)'', September 2004.
h3. [Partial Redundancy Elimination for Global Value Numbering|ftp://ftp.cs.purdue.edu/pub/hosking/papers/vandrunen.pdf]
* [Thomas VanDrunen|http://cs.wheaton.edu/~tvandrun], ''PhD Thesis, Purdue University'', August 2004.
h3. [Preemption-Based Avoidance of Priority Inversion for Java|http://www.cs.purdue.edu/homes/welc/publications/icpp04/icpp04.pdf]
* [Adam Welc|http://www.cs.purdue.edu/homes/welc], [Antony L. Hosking|http://www.cs.purdue.edu/~hosking], and [Suresh Jagannathan|http://www.cs.purdue.edu/homes/suresh].
* ''International Conference on Parallel Programming (ICPP'04)'', Montreal, Canada, August 2004.
h3. [Value-Based Partial Redundancy Elimination|ftp://ftp.cs.purdue.edu/pub/hosking/papers/cc04.pdf]
* [Thomas VanDrunen|http://cs.wheaton.edu/~tvandrun] and [Antony Hosking|http://www.cs.purdue.edu/~hosking].
* ''International Conference on Compiler Construction, European Joint Conferences on Theory and Practice of Software'', Barcelona, Spain, June 2004.
h3. [Adaptive Tuning of Reserved Space in an Appel Collector|http://springerlink.metapress.com/app/home/contribution.asp?wasp=2g54ylwyxj2xu6t7cqwy&referrer=parent&backto=issue,25,27;journal,10,1595;linkingpublicationresults,1:105633,1]
* Jose Manuel Velasco, Katzalin Olcoz, and [Francisco Tirado|http://www.dacya.ucm.es/paco].
* ''European Conference on Object-Oriented Programming (ECOOP'04)'', Oslo, Norway, June 2004.
h3. [Pointer Analysis in the Presence of Dynamic Class Loading|http://www.research.ibm.com/people/h/hirzel/#ecoop04-pointers]
* [Martin Hirzel|http://www.research.ibm.com/people/h/hirzel], [Amer Diwan|http://www.cs.colorado.edu/~diwan], and [Michael Hind|http://www.research.ibm.com/people/h/hind].
* ''European Conference on Object-Oriented Programming (ECOOP'04)'', Oslo, Norway, June 2004.
h3. [Transactional Monitors for Concurrent Objects|http://www.cs.purdue.edu/homes/welc/publications/ecoop04/ecoop04.pdf]
* [Adam Welc|http://www.cs.purdue.edu/homes/welc], [Suresh Jagannathan|http://www.cs.purdue.edu/homes/suresh], [Antony L. Hosking|http://www.cs.purdue.edu/~hosking].
* ''European Conference on Object-Oriented Programming (ECOOP'04)'', Oslo, Norway, June 2004.
h3. [Visualization and Analysis of Phased Behavior in Java Programs|http://www.cs.ucsb.edu/~ckrintz/papers/pppj04-phases.pdf]
* [Priya Nagpurka|http://www.cs.ucsb.edu/~priya] and [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz].
* ''ACM International Conference on the Principles and Practice of Programming in Java (PPPJ)'', Las Vegas, NV, June 2004.
h3. [Myths and Reality: The Performance Impact of Garbage Collection|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts#mmtk-sigmetrics-2004]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], [Perry Cheng|http://www.research.ibm.com/people/p/perryche], and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley].
* ''Sigmetrics - Performance 2004, Joint International Conference on Measurement and Modeling of Computer Systems'', New York, New York, June 2004.
* '''(Source code available as of version 2.3.2 of Jikes RVM.)'''
h3. Adaptive Code Unloading for Resource-Constrained JVMs
* [Lingli Zhang|http://www.cs.ucsb.edu/~lingli_z] and [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz].
* ''ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '04) and Software and Compilers for Embedded Systems (SCOPES '04)'', Washington DC, June 2004.
h3. [Inducing Heuristics to Decide Whether to Schedule|http://ali-www.cs.umass.edu/~cavazos/papers/pldi.pdf]
* [John Cavazos|http://ali-www.cs.umass.edu/~cavazos] and [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM SIGPLAN Conference on Programming Languages Design and and Implementation (PLDI '04)'', Washington DC, June 2004.
h3. [Oil and Water: High Performance Garbage Collection in Java with MMTk|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts#mmtk-icse-2004]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], [Perry Cheng|http://www.research.ibm.com/people/p/perryche], and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley].
* ''ICSE 2004, 26th International Conference on Software Engineering'', Edinburgh, Scotland, May 2004.
* '''(Source code available as of version 2.3.2 of Jikes RVM.)'''
h3. [Towards Dynamic Interprocedural Analysis in JVMs|http://www.sable.mcgill.ca/publications/papers/#vm2004]
* [Feng Qian|http://www.sable.mcgill.ca/~fqian] and [Laurie Hendren|http://www-acaps.cs.mcgill.ca/~hendren].
* ''USENIX 3rd Virtual Machine Research and Technology Symposium (VM'04)'', San Jose, California, May, 2004.
h3. [Using Hardware Performance Monitors to Understand the Behavior of Java Application|http://www.research.ibm.com/people/h/hind/papers.html#vm04]
* [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs], [Matthias Hauswirth|http://www.cs.colorado.edu/~hauswirt], [Brendon Cahoon|http://www.research.ibm.com/people/b/brendon], [Perry Cheng|http://www.research.ibm.com/people/p/perryche], [Amer Diwan|http://www.cs.colorado.edu/~diwan], [David Grove|http://www.research.ibm.com/people/d/dgrove], and [Michael Hind|http://www.research.ibm.com/people/h/hind].
* ''USENIX 3rd Virtual Machine Research and Technology Symposium (VM'04)'', San Jose, California, May, 2004.
h3. [JVM Independent Replay in Java|http://www2.inf.ethz.ch/~schuppan/publications.html]
* [Viktor Schuppan|http://www2.inf.ethz.ch/~schuppan], Marcel Baur, and [Armin Biere|http://www2.inf.ethz.ch/~biere].
* ''Fourth Workshop on Runtime Verification (RV'04)'', Barcelona, Spain, April, 2004.
h3. [Transactional Monitors for Concurrent Objects|http://www.cs.purdue.edu/homes/welc/publications/esop04/esop04.pdf]
* [Jan Vitek|http://www.cs.purdue.edu/homes/jv], [Suresh Jagannathan|http://www.cs.purdue.edu/homes/suresh], [Adam Welc|http://www.cs.purdue.edu/homes/welc], and [Antony L. Hosking|http://www.cs.purdue.edu/~hosking].
* ''European Symposium on Programming (ESOP'04)'', Barcelona, Spain, March, 2004.
h3. [Virtual Machine Support for Dynamic Join Points|http://www.st.informatik.tu-darmstadt.de/database/publications/data/Streamloom-1.pdf?id=80]
* [Christoph Bockisch|http://www.cbockisch.de], [Michael Haupt|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=3], [Mira Mezini|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=2],and [Klaus Ostermann|http://www.st.informatik.tu-darmstadt.de/public/StaffDetail.jsp?id=8].
* ''International Conference on Aspect-Oriented Software Development (AOSDP'04)'', Lancaster, UK, March, 2004.
h2. 2003
h3. [The Metronome: A Simpler Approach to Garbage Collection in Real-time Systems|http://www.research.ibm.com/people/d/dfb/papers/Bacon03Metronome.pdf]
* [David F. Bacon|http://www.research.ibm.com/people/d/dfb], [Perry Cheng|http://www.research.ibm.com/people/p/perryche], and V.T. Rajan.
* ''Workshop on Java Technologies for Real-Time and Embedded Systems'', Catania, Sicily, November 2003.
h3. [Ulterior Reference Counting: Fast Garbage Collection without a Long Wait|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts.html#urc-oopsla-2003]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn] and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
h3. [An On-the-Fly Mark and Sweep Garbage Collector Based on Sliding Views|http://www.cs.technion.ac.il/~erez/Papers/ms-sliding-views.ps]
* [Hezi Azatchi|http://www.cs.technion.ac.il/People/GraduateStudents/hezia.html], Yossi Levanoni, Harel Paz, and [Erez Petrank|http://www.cs.technion.ac.il/~erez].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
h3. MarkCopy: Fast Copying GC with Less Space Overhead
* Narendran Sachindran and [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
h3. [Connectivity-Based Garbage Collection|http://www.cs.colorado.edu/~diwan/cbgc.pdf]
* [Martin Hirzel|http://www.research.ibm.com/people/h/hirzel], [Amer Diwan|http://www.cs.colorado.edu/~diwan], and [Matthew Hertz|http://www-cs.canisius.edu/~hertzm].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
h3. [How Java Programs Interact with Virtual Machines at the Microarchitectural Level|http://www.elis.ugent.be/~leeckhou/papers/oopsla03.pdf]
* [Lieven Eeckhout|http://www.elis.ugent.be/~leeckhou], [Andy Georges|http://www.elis.ugent.be/~ageorges], and [Koen De Bosschere|http://www.elis.ugent.be/~kdb].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Anaheim, California, October 2003.
h3. [Transparent Fault-Tolerant Java Virtual Machine|http://www.cs.technion.ac.il/~alon/publications/srds2003.pdf]
* [Roy Friedman|http://www.cs.technion.ac.il/~roy] and [Alon Kama|http://www.cs.technion.ac.il/~alon].
* ''22nd IEEE Symposium on Reliable Distributed Systems (SRDS)'', Florence, Italy, October, 2003.
h3. [JToe: A Java API for Object Exchange|http://www.labri.fr/~grange/documents/parco2003.html]
* Serge Chaumette, [Pascal Grange|http://www.labri.fr/Perso/~grange], Benoit Metrot, and Pierre Vigneras.
* ''Parallel Computing/ParCo 2003'', September 2003.
h3. High-performance Java code for computation fluid dynamics
* C. J. Riley, [Sid Chatterjee|http://www.cs.unc.edu/~sc], and R. Biswas.
* ''Concurrency and Computation: Practice and Experience'', 15:395-415, 2003.
h3. [Detecting Malicious Java Code Using Virtual Machine Auditing|http://www.usenix.org/events/sec03/tech/soman.html]
* [Sunil Soman|http://www.cs.ucsb.edu/~sunils], [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz] and Giovanni Vigna.
* ''12th USENIX Security Symposium'', Washington D.C., August 2003.
h3. [Controlling Fragmentation and Space Consumption in the Metronome, a Real-time Garbage Collector for Java|http://www.research.ibm.com/people/d/dfb/papers/Bacon03Controlling.pdf]
* [David F. Bacon|http://www.research.ibm.com/people/d/dfb], [Perry Cheng|http://www.research.ibm.com/people/p/perryche], and V.T. Rajan.
* ''Conference on Languages, Compilers, and Tools for Embedded Systems'', San Diego, California, June 2003.
h3. [Designing a Distributed JVM on a Cluster|http://djvm.anu.edu.au/publications/djvm_design.pdf]
* [John N Zigman|http://cs.anu.edu.au/~John.Zigman] and [Ramesh Sanakaranarayana|http://cs.anu.edu.au/~ramesh].
* ''17th European Simulation Multiconference'', Nottingham, United Kingdom, June 2003.
h3. [Integrating Generations with Advanced Reference Counting Garbage Collectors|http://www.cs.technion.ac.il/~erez/Papers/AzaPet-TR.ps]
* [Hezi Azatchi|http://www.cs.technion.ac.il/People/GraduateStudents/hezia.html] and [Erez Petrank|http://www.cs.technion.ac.il/~erez].
* ''12th International Conference on Compiler Construction'', Warsaw, Poland, April 2003.
h3. [Just-In-Time Aspects: Efficient Dynamic Weaving for Java|http://prose.ethz.ch/webthings/aosd03.ps]
* [Andrei Popovici|http://www.inf.ethz.ch/personal/popovici], [Gustavo Alonso|http://www.inf.ethz.ch/personal/alonso] and [Thomas Gross|http://www.lst.inf.ethz.ch/people/trg.html].
* ''2nd International Conference on Aspect-Oriented Software Development'', Boston, Massachussetts, March 2003.
h3. [Design, Implementation and Evaluation of Adaptive Recompilation with On-Stack Replacement|http://www.research.ibm.com/people/s/sfink/papers/cgo03.ps.gz]
* [Stephen Fink|http://www.research.ibm.com/people/s/sfink], and [Feng Qian|http://www.sable.mcgill.ca/~fqian].
* ''International Symposium on Code Generation and Optimization'', San Francisco, California, March 2003.
* '''(Source code available as of version 2.2.1 of Jikes RVM.)'''
h3. [Adaptive Online Context-Sensitive Inlining|http://www.research.ibm.com/people/d/dgrove/papers/cgo03.html]
* [Kim Hazelwood|http://www.eecs.harvard.edu/~cettei] and [David Grove|http://www.research.ibm.com/people/d/dgrove].
* ''International Symposium on Code Generation and Optimization'', San Francisco, California, March 2003.
h3. [Coupling On-Line and Off-Line Profile Information to Improve Program Performance|http://www.cs.ucsb.edu/~ckrintz/abstracts/coupling.html]
* [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz].
* ''International Symposium on Code Generation and Optimization'', San Francisco, California, March 2003.
h3. [A Real-time Garbage Collector with Low Overhead and Consistent Utilization|http://www.research.ibm.com/people/d/dfb/papers.html#Bacon03Realtime]
* [David F. Bacon|http://www.research.ibm.com/people/d/dfb], [Perry Cheng|http://www.research.ibm.com/people/p/perryche], and V. T. Rajan.
* ''Conference Record of the Thirtieth ACM Symposium on Principles of Programming Languages'', New Orleans, Louisiana, January 2003.
h3. [Using the SafeTSA Representation to Boost the Performance of an Existing Java Virtual Machine|http://www.ics.uci.edu/~jronne/pubs/cpc2003-safetsa5.pdf]
* [Wolfram Amme|http://swt.informatik.uni-jena.de/mit_amme.html], [Jeffrey von Ronne|http://www.ics.uci.edu/~jronne], and [Michael Franz|http://www.ics.uci.edu/~franz].
* ''10th International Workshop on Compilers for Parallel Computers (CPC 2003)'', Amsterdam, The Netherlands. January 2003.
h2. 2002
h3. [Online Feedback-Directed Optimization of Java|http://www.research.ibm.com/people/h/hind/oopsla02abs.html]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Michael Hind|http://www.research.ibm.com/people/h/hind], and [Barbara G. Ryder|http://www.cs.rutgers.edu/~ryder].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Seatle, Washington, November 4-8, 2002.
h3. Creating and Preserving Locality of Java Applications at Allocation and Garbage Collection Times
* [Yefim Shuf|http://www.cs.princeton.edu/~yshuf], [Manish Gupta|http://www.research.ibm.com/people/g/gupta], [Hubertus Franke|http://www.research.ibm.com/people/f/franke], [Andrew Appel|http://www.cs.princeton.edu/~appel], and [Jaswinder Pal Singh|http://www.cs.princeton.edu/~jps].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Seatle, Washington, November 4-8, 2002.
h3. [GCspy: An Adaptable Heap Visualisation Framework|http://www.cs.ukc.ac.uk/pubs/2002/1426/index.html]
* [Tony Printezis|http://www.dcs.gla.ac.uk/~tony] and [Richard Jones|http://www.cs.ukc.ac.uk/people/staff/rej].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Seatle, Washington, November 4-8, 2002.
h3. [Immutability Specification and its Applications|http://www.cs.nyu.edu/phd_students/pechtcha/pubs/jgi02.html]
* [Igor Pechtchanski|http://www.cs.nyu.edu/phd_students/pechtcha] and [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* [''Joint ACM Java Grande - ISCOPE 2002 Conference''|http://charm.cs.uiuc.edu/javagrandeIscope], Seatle, Washington, November 3-5, 2002.
{anchor:port}
h3. [Experiences Porting the Jikes RVM to Linux/IA32|http://www.research.ibm.com/people/d/dgrove/papers/jvm02.html]
* Bowen Alpern, Maria Butrico, Tony Cocchi, Julian Dolby, [Stephen Fink|http://www.research.ibm.com/people/s/sfink], [David Grove|http://www.research.ibm.com/people/d/dgrove], and Ton Ngo.
* ''2nd Java Virtual Machine Research and Technology Symposium (JVM '02)'', San Francisco, California, August 1-2, 2002.
* '''(Source code available as of version 2.1.0 of Jikes RVM.)'''
h3. [Automatic Implementation of Programming Language Consistency Models|http://polaris.cs.uiuc.edu/~cwong1/publications/SWFL02.ps]
* Zehra Sura, [Chi-Leung Wong|http://polaris.cs.uiuc.edu/~cwong1], Xing Fang, [Jaejin Lee|http://www.cse.msu.edu/~jlee], [S.P. Midkiff|http://www.research.ibm.com/people/m/midkiff], and [David Padua|http://polaris.cs.uiuc.edu/~padua].
* ''Fifteenth Workshop on Languages and Compilers for Parallel Computing'', July, 2002.
h3. [In or Out? Putting Write Barriers in Their Place|http://www-ali.cs.umass.edu/bibliography.html#mm]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn] and [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '02)'', Berlin, Germany, June 20-21, 2002.
h3. [An Adaptive, Region-based Allocator for Java|http://www.sable.mcgill.ca/publications/#ismm2002]
* [Feng Qian|http://www.sable.mcgill.ca/~fqian] and [Laurie Hendren|http://www-acaps.cs.mcgill.ca/~hendren].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '02)'', Berlin, Germany, June 20-21, 2002.
h3. [Understanding the Connectivity of Heap Objects|http://www.cs.colorado.edu/~diwan]
* [Martin Hirzel|http://www.research.ibm.com/people/h/hirzel], [Johannes Henkel|http://www.cs.colorado.edu/~henkel], [Amer Diwan|http://www.cs.colorado.edu/~diwan], [Michael Hind|http://www.research.ibm.com/people/h/hind].
* ''ACM SIGPLAN International Symposium on Memory Management (ISMM '02)'', Berlin, Germany, June 20-21, 2002.
h3. [When to Use a Compilation Service?|http://www.cs.colorado.edu/~diwan]
* [Jeffrey Palm|http://www.cs.colorado.edu/~jdp], [Han Lee|http://www.cs.colorado.edu/~hanlee], [Amer Diwan|http://www.cs.colorado.edu/~diwan], [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '02) and Software and Compilers for Embedded Systems (SCOPES '02)'', Berlin, Germany, June 19-21 2002.
h3. [Beltway: Getting Around Garbage Collection Gridlock|http://www-ali.cs.umass.edu/bibliography.html#mm]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], [Richard Jones|http://www.cs.ukc.ac.uk/people/staff/rej], [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley], [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '02)'', Berlin, Germany, June 17-19 2002.
h3. [Static Load Classification for Improving the Value Predictability of Data-Cache Misses|http://www.cs.colorado.edu/~diwan]
* [Martin Burtscher|http://www.csl.cornell.edu/~burtscher], [Amer Diwan|http://www.cs.colorado.edu/~diwan], [Matthias Hauswirth|http://www.cs.colorado.edu/~hauswirt].
* ''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '02)'', Berlin, Germany, June 17-19 2002.
h3. [Efficient and Precise Datarace Detection for Multithreaded Object-Oriented Programs|http://www.research.ibm.com/dejavu/drace-pldi02.pdf]
* [Jong-Deok Choi|http://www.research.ibm.com/people/j/jdchoi], [Keunwoo Lee|http://www.cs.washington.edu/homes/klee], [Alexey Loginov|http://www.cs.wisc.edu/~alexey/index.html], Robert O'Callahan, [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar], and [Manu Sridharan|http://www.cs.berkeley.edu/~manu_s].
* ''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '02)'', Berlin, Germany, June 17-19 2002.
h3. [Older-first Garbage Collection in Practice: Evaluation in a Java Virtual Machine|http://www.cs.unm.edu/~darko/publications.html]
* [Darko Stefanovic|http://www.cs.unm.edu/~darko], [Matthew Hertz|http://www-cs.canisius.edu/~hertzm], [Steve M. Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], [Kathryn S. McKinley|http://www.cs.utexas.edu/users/mckinley] and [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM SIGPLAN Workshop on Memory System Performance (MSP '02)'', Berlin, Germany, June 16, 2002.
h3. [Error-Free Garbage Collection Traces: How To Cheat and Not Get Caught|http://www-ali.cs.umass.edu/bibliography.html#mm]
* [Matthew Hertz|http://www-cs.canisius.edu/~hertzm], [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss], [Kathryn McKinley|http://www.cs.utexas.edu/users/mckinley], and [Darko Stefanovic|http://www.cs.unm.edu/~darko].
* ''ACM SIGMetrics 2002'', Marina del Rey, CA June 15-19 2002.
h3. [Using Adaptive Optimization Techniques to Teach Mobile Java Computing|http://www.cs.ucsb.edu/~ckrintz/abstracts/teaching.html]
* [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz].
* ''Principles and Practice of Programming in Java'', Dublin, Ireland, June 13-14, 2002.
h3. [Thin Guards: A Simple and Effective Technique for Reducing the Penalty of Dynamic Class Loading|http://www.research.ibm.com/people/m/marnold/publications.html].
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold] and [Barbara G. Ryder|http://www.cs.rutgers.edu/~ryder].
* ''European Conference on Object-Oriented Programming (ECOOP 2002)'', Malaga Spain, June 10-14 2002.
h3. [Atomic Instructions in Java|http://www.cs.umd.edu/~daveho/research/ecoop2002.pdf]
* [David Hovemeyer|http://www.cs.umd.edu/~daveho], [William Pugh|http://www.cs.umd.edu/~pugh], and [Jaime Spacco|http://www.cs.umd.edu/users/jspacco].
* ''European Conference on Object-Oriented Programming (ECOOP 2002)'', Malaga Spain, June 10-14 2002.
h3. [Space\- and Time-Efficient Implementation of the Java Object Model|http://www.research.ibm.com/people/d/dgrove/papers/ecoop02.html]
* [David Bacon|http://www.research.ibm.com/people/d/dfb], [Stephen Fink|http://www.research.ibm.com/people/s/sfink], and [David Grove|http://www.research.ibm.com/people/d/dgrove].
* ''European Conference on Object-Oriented Programming (ECOOP 2002)'', Malaga Spain, June 10-14, 2002.
* '''(Source code available as of version 2.1.0 of Jikes RVM.)'''
h3. [The Pensieve Project: A Compiler Infrastructure for Memory Models|http://polaris.cs.uiuc.edu/~cwong1/publications/WSFL02.ps]
* [C.-L. Wong|http://polaris.cs.uiuc.edu/~cwong1], Z. Sura, X. Fang, [S.P. Midkiff|http://www.research.ibm.com/people/m/midkiff], [J. Lee|http://www.cse.msu.edu/~jlee], and [D. Padua|http://polaris.cs.uiuc.edu/~padua].
* ''The Sixth International Symposium on Parallel Architectures, Algorithms, and Networks'', May, 2002.
h3. [Exploiting Prolific Types for Memory Management and Optimizations|http://www.research.ibm.com/people/g/gupta/popl02.pdf]
* [Yefim Shuf|http://www.cs.princeton.edu/~yshuf], [Manish Gupta|http://www.research.ibm.com/people/g/gupta], Rajesh Bordawekar, and [Jaswinder Pal Singh|http://www.cs.princeton.edu/~jps].
* ''29th ACM SIGPLAN/SIGACT Symposium on Principles of Programming Languages (POPL)'', Portland, OR, January 2002.
h2. 2001
h3. [Efficient Implementation of Java Interfaces: Invokeinterface Considered Harmless|http://www.research.ibm.com/people/d/dgrove/papers/oopsla01.html]
* Bowen Alpern, Anthony Cocchi, [Stephen Fink|http://www.research.ibm.com/people/s/sfink], [David Grove|http://www.research.ibm.com/people/d/dgrove], and Derek Lieber.
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Tampa, FL, USA, Oct 14-18, 2001.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [Pretenuring for Java|http://cs.anu.edu.au/~Steve.Blackburn/pubs/abstracts.html#pretenure-oopsla-2001]
* [Steve Blackburn|http://cs.anu.edu.au/~Steve.Blackburn], Sharad Singhai, [Matthew Hertz|http://www-cs.canisius.edu/~hertzm], [Kathryn S. McKinley|http://www.cs.utexas.edu/users/mckinley], and [J. Eliot B. Moss|http://ali-www.cs.umass.edu/~moss].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Tampa, FL, USA, Oct 14-18, 2001.
h3. [Dynamic Optimistic Interprocedural Analysis: A Framework and an Application|http://www.cs.nyu.edu/phd_students/pechtcha/pubs/oopsla01.html]
* [Igor Pechtchanski|http://www.cs.nyu.edu/phd_students/pechtcha] and [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* ''ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)'', Tampa, FL, USA, Oct 14-18, 2001.
h3. [Efficient Dependence Analysis For Java Arrays|http://www.research.ibm.com/people/s/sfink/papers/europar01.ps.gz]
* [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar] and [Stephen Fink|http://www.research.ibm.com/people/s/sfink].
* ''EURO-PAR 2001'', Manchester, England, September, 2001.
h3. [A Comparative Evaluation of Parallel Garbage Collectors|http://www.research.ibm.com/people/d/dfb/papers.html#Attanasio01Comparative]
* C. Attansio, [David Bacon|http://www.research.ibm.com/people/d/dfb], Anthony Cocchi, and Stephen Smith.
* ''Fourteenth Annual Workshop on Languages and Compilers for Parallel Computing'', Cumberland Falls, Kentucky, Aug, 2001.
* '''(Source code available in versions 2.0.0 through 2.2.0 of Jikes RVM.)'''
h3. [A Framework for Reducing the Cost of Instrumented Code|http://www.research.ibm.com/people/m/marnold/publications.html]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold] and [Barbara G. Ryder|http://www.cs.rutgers.edu/~ryder].
* ''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '01)'', Snowbird, Utah, June 20-22, 2001.
* '''(Source code available as of version 2.3.0 of Jikes RVM.)'''
h3. [Java without the Coffee Breaks: A Non-intrusive Multiprocessor Garbage Collector|http://www.research.ibm.com/people/d/dfb/papers.html#Bacon01Java]
* [David Bacon|http://www.research.ibm.com/people/d/dfb], C. Attanasio, [Han Lee|http://www.cs.colorado.edu/~hanlee], V. Rajan, and Stephen Smith.
* ''ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '01)'', Snowbird, Utah, June 20-22, 2001.
* '''(Source code available in versions 2.0.0 through 2.0.3 of Jikes RVM.)'''
h3. [Program Analysis for Safety Guarantees in a Java Virtual Machine Written in Java|http://www.research.ibm.com/people/d/dgrove/papers/paste01.html].
* Jan-Willem Maessen, [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar], and [David Grove|http://www.research.ibm.com/people/d/dgrove].
* ''ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE '01),'' Snowbird, Utah, June 18-19, 2001.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [Concurrent Cycle Collection in Reference Counted Systems|http://www.research.ibm.com/people/d/dfb/papers.html#Bacon01Concurrent]
* [David Bacon|http://www.research.ibm.com/people/d/dfb] and V. Rajan.
* ''The Fifteenth European Conference on Object-Oriented Programming (ECOOP)'', University Eötvös Loránd, Budapest, Hungary, June 18-22, 2001.
* '''(Source code available in versions 2.0.0 through 2.0.3 of Jikes RVM.)'''
h3. [Characterizing the Memory Behavior of Java Workloads: A Structured View and Opportunities for Optimizations|http://www.research.ibm.com/people/g/gupta/sigmetrics01.ps]
* [Yefim Shuf|http://www.cs.princeton.edu/~yshuf], [Mauricio Serrano|http://www.intel.com/research/mrl/people/serrano_m.htm], [Manish Gupta|http://www.research.ibm.com/people/g/gupta], and [Jaswinder Pal Singh|http://www.cs.princeton.edu/~jps].
* ''ACM SIGMETRICS 2001/Performance 2001'', Cambridge, MA, June 2001.
h3. [High-Performance Java Codes for Computational Fluid Dynamics|ftp://ftp.cs.unc.edu/pub/users/sc/papers/jg01.pdf]
* C. J. Riley, [Sid Chatterjee|http://www.cs.unc.edu/~sc], and R. Biswas.
* ''The Joint ACM Java Grande - ISCOPE 2001 Conference'', Stanford, CA, June 2001.
h3. [Dynamic Type Checking in Jalapeño|http://www.research.ibm.com/people/d/dgrove/papers/jvm01.html]
* Bowen Alpern, Anthony Cocchi, and [David Grove|http://www.research.ibm.com/people/d/dgrove].
* ''The Usenix Java Virtual Machine Research and Technology Symposium,'' April, 2001.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h2. 2000
h3. [Reducing the Overhead of Dynamic Compilation|http://www.research.ibm.com/people/d/dgrove/papers/spe01.html]
* [Chandra Krintz|http://www.cs.ucsb.edu/~ckrintz], [David Grove|http://www.research.ibm.com/people/d/dgrove], [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar], and [Brad Calder|http://www.cs.ucsd.edu/users/calder].
* ''Software: Practice and Experience'', 31(8), 717-738, December 2000.
h3. [Adaptive Optimization in the Jalapeño JVM: The Controller's Analytical Model|http://www.research.ibm.com/people/s/sfink/papers/fddo00.ps.gz]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Stephen Fink|http://www.research.ibm.com/people/s/sfink], [David Grove|http://www.research.ibm.com/people/d/dgrove], [Michael Hind|http://www.research.ibm.com/people/h/hind], and [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs].
* ''3rd ACM Workshop on Feedback-Directed and Dynamic Optimization (FDDO-3)'', December 10, 2000, Monterey, California.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
{anchor:aos}
h3. [Adaptive Optimization in the Jalapeño JVM|http://www.cs.virginia.edu/~soffa/cs851/arnold.pdf]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Stephen Fink|http://www.research.ibm.com/people/s/sfink], [David Grove|http://www.research.ibm.com/people/d/dgrove], [Michael Hind|http://www.research.ibm.com/people/h/hind], and [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs].
* ''ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2000)'', Minneapolis, Minnesota, October 15-19, 2000.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [Quasi-Static Compilation for Java|http://www.research.ibm.com/people/g/gupta/oopsla00.ps]
* [Mauricio Serrano|http://www.intel.com/research/mrl/people/serrano_m.htm], Rajesh Bordawekar, [Sam Midkiff|http://www.research.ibm.com/people/m/midkiff] and [Manish Gupta|http://www.research.ibm.com/people/g/gupta].
* ''[ACM Conference onObject-Oriented Programming, Systems, Languages, and Applications (OOPSLA)|http://oopsla.acm.org]'', October 2000.
h3. [Debugging by Remote Reflection|http://www.springerlink.com/index/DM5L10EAVYJQREH1.pdf]
* Ton Ngo and John Barton.
* ''Euro-Par 2000,'' Munich, Germany, August 27 - Sept 1 2000.
* '''(Source code available as of versions 2.0.0 through 2.1.1 of Jikes RVM.)'''
h3. [An Empirical Study of Selective Optimization|http://www.springerlink.com/index/9BJVBCKU87BGTLKK.pdf]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Michael Hind|http://www.research.ibm.com/people/h/hind], and [Barbara G. Ryder|http://www.cs.rutgers.edu/~ryder].
* ''13th International Workshop on Languages and Compilers for Parallel Computing'', Yorktown Heights, New York, August 10-12, 2000.
h3. [Unified Analysis of Array and Object References in Strongly Typed Languages|http://www.research.ibm.com/jalapeno/papers/sas2000.ps]
* [Stephen Fink|http://www.research.ibm.com/people/s/sfink], Kathleen Knobe, and [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* ''2000 Static Analysis Symposium (SAS 2000)'', Santa Barbara, CA, June, 2000.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [ABCD: Eliminating Array Bounds Checks on Demand|http://www.research.ibm.com/jalapeno/papers/ABCD.ps]
* [Rastislav Bodik|http://www.cs.wisc.edu/~bodik], [Rajiv Gupta|http://www.cs.arizona.edu/people/gupta], and [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* ''ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation (PLDI 2000)'', Vancouver, British Columbia, Canada, June 17-21, 2000.
* '''(Source code prototype available in versions 2.0.0 through 2.2.0 of Jikes RVM.)'''
h3. [A Framework for Interprocedural Analysis and Optimization in the Presence of Dynamic Class Loading|http://www.research.ibm.com/jalapeno/papers/extant2k.ps]
* Vugranam C. Sreedhar, Michael Burke, and [Jong-Deok Choi|http://www.research.ibm.com/people/j/jdchoi].
* '' ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation (PLDI 2000)'', Vancouver, British Columbia, Canada, June 17-21, 2000.
h3. [Optimizing Java Programs in the Presence of Exceptions|http://www.research.ibm.com/jalapeno/papers/ecoop00.ps]
* [Manish Gupta|http://www.research.ibm.com/people/g/gupta], [Jong-Deok Choi|http://www.research.ibm.com/people/j/jdchoi], and [Michael Hind|http://www.research.ibm.com/people/h/hind].
* '' 14th European Conference on Object-Oriented Programming (ECOOP 2000),'', June 12-16, 2000, Cannes, France.
{anchor:jalapeno}
h3. [The Jalapeño Virtual Machine|http://www.research.ibm.com/journal/sj/391/alpern.pdf]
* B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, [P Cheng|http://www.research.ibm.com/people/p/perryche], [J.-D. Choi|http://www.research.ibm.com/people/j/jdchoi], A. Cocchi, [S. J. Fink|http://www.research.ibm.com/people/s/sfink], [D. Grove|http://www.research.ibm.com/people/d/dgrove], [M. Hind|http://www.research.ibm.com/people/h/hind], S. F. Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo, J. R. Russell, [V. Sarkar|http://www.research.ibm.com/people/v/vsarkar], M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley.
* ''IBM System Journal'', Vol 39, No 1, February 2000.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [A Comparative Study of Static and Profile-Based Heuristics for Inlining|http://portal.acm.org/citation.cfm?coll=GUIDE&dl=GUIDE&id=351416]
* [Matthew Arnold|http://www.research.ibm.com/people/m/marnold], [Stephen Fink|http://www.research.ibm.com/people/s/sfink], [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar], and [Peter F. Sweeney|http://www.research.ibm.com/people/p/pfs].
* ''2000 ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization (DYNAMO '00)'', Boston, Massachusetts, January 19-21, 2000.
h2. 1999
{anchor:jalapenoinjava}
h3. [Implementing Jalapeño in Java|http://cs.anu.edu.au/~Steve.Blackburn/teaching/comp4700/resources/papers/jalapeno-oopsla-1999.pdf]
* Bowen Alpern, Dick Attanasio, John J. Barton, Anthony Cocchi, Susan Flynn Hummel, Derek Lieber, Mark Mergen, Ton Ngo, Janice Shepherd, and Stephen Smith.
* ''1999 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '99)'', Denver, Colorado, November 1, 1999.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [Efficient and Precise Modeling of Exceptions for the Analysis of Java Programs|http://portal.acm.org/citation.cfm?id=316171&coll=portal&dl=ACM]
* [Jong-Deok Choi|http://www.research.ibm.com/people/j/jdchoi], [David Grove|http://www.research.ibm.com/people/d/dgrove], [Michael Hind|http://www.research.ibm.com/people/h/hind], [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* ''1999 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE '99)'', Toulouse, France, September 6, 1999.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [Dependence Analysis for Java|http://portal.acm.org/citation.cfm?id=645677.663931&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618]
* [Craig Chambers|http://www.cs.washington.edu/homes/chambers], [Igor Pechtchanski|http://www.cs.nyu.edu/phd_students/pechtcha], [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar], Mauricio Serrano, and Harini Srinivasan.
* ''Workshop on Languages and Compilers for Parallel Computing (LCPC 99),'' La Jolla, CA, Aug 1999.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [The Jalapeño Dynamic Optimizing Compiler for Java|http://www.stanford.edu/~jwhaley/papers/javagrande99.pdf]
* Michael Burke, [Jong-Deok Choi|http://www.research.ibm.com/people/j/jdchoi], [Stephen Fink|http://www.research.ibm.com/people/s/sfink], [David Grove|http://www.research.ibm.com/people/d/dgrove], [Michael Hind|http://www.research.ibm.com/people/h/hind], [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar], Mauricio Serrano, V.C. Sreedhar, and Harini Srinivasan.
* ''1999 ACM Java Grande Conference'', San Francisco, June 12-14, 1999.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
h3. [Jalapeño --- a Compiler-supported Java Virtual Machine for Servers|http://citeseer.ist.psu.edu/alpern99jalapentildeo.html]
* Bowen Alpern, Anthony Cocchi, Derek Lieber, Mark Mergen, and [Vivek Sarkar|http://www.research.ibm.com/people/v/vsarkar].
* ''Workshop on Compiler Support for Software System (WCSSS 99)'', Atlanta, GA, May 1999, held in conjunction with PLDI '99.
* '''(Source code available as of version 2.0.0 of Jikes RVM.)'''
View All Revisions |
Revert To Version 39
[Less]
|
|
Posted
over 17 years
ago
by
Steve Blackburn
Page
edited by
Steve Blackburn
One goal of the JikesRVM project over recent years has been the ability to develop JikesRVM in a development environment such as Eclipse.
... [More]
This has been possible for the MMTk component since 2005, and as of early 2007 (release 2.9.0) it is possible to work with the majority of the JikesRVM codebase in Eclipse and similar environments. With Jikes RVM release 2.9.1, setting up your Eclipse environment to work with Jikes RVM became even easier.
Editing JikesRVM in Eclipse
These instructions assume you are working with Jikes RVM version 2.9.1 or later.
Create a JikesRVM source tree either via SVN checkout or untar-ing a distribution.
$ svn co https://jikesrvm.svn.sf.net/svnroot/jikesrvm/rvmroot/trunk jikesrvm
Create the machine-generated files and eclipse metadata:
If you have a recent version of Jikes RVM (3.0 onwards):
$ cd jikesrvm
$ bin/buildit --eclipse localhost
Note that if you will not or cannot build on your local machine, substitute localhost for the name of a host you can build on (buildit will perform the build remotely and then copy the requisite files back).
If you are working on an older version (2.9.1 - 2.9.3), you can follow this procedure:
$ cd jikesrvm
$ ant -Dhost.name=ia32-linux -Dconfig.name=development
$ ant -Dhost.name=ia32-linux -Dconfig.name=development eclipse-project
If you will not or cannot build on your local machine:
copy your tree to build build host somehow
perform the above ant tasks
copy the following generated files and directories back to the machine you will edit on:
jikesrvm/.project
jikesrvm/.classpath
jikesrvm/eclipse
Import the newly created Eclipse project into your Eclipse workspace.
From Eclipse, select File-->Import
Select "Existing Projects Into Workspace"
Browse to find the top-level directory.
Select the project (in this case JikesRVM ia32-linux development)
Hit Finish
Editing JikesRVM in NetBeans
Follow the instructions for Eclipse including building the eclipse project with ant
Install the Eclipse project importer
Select File->Import Project->Eclipse Project
Choose to import project ignoring project dependencies
Select the top-level directory you created with the JikesRVM in as the project to import
Select a new folder as the destination (workspace) for the import
Hit Finish
View Online
Changes between revision 9
and revision 10:
One goal of the JikesRVM project over recent years has been the ability to develop JikesRVM in a development environment such as Eclipse. This has been possible for the MMTk component since 2005, and as of early 2007 (release 2.9.0) it is possible to work with the majority of the JikesRVM codebase in Eclipse and similar environments. With Jikes RVM release 2.9.1, setting up your Eclipse environment to work with Jikes RVM became even easier.
h2. Editing JikesRVM in Eclipse
These instructions assume you are working with Jikes RVM version *2.9.1* or later.
# Create a JikesRVM source tree either via SVN checkout or untar-ing a distribution.
{panel}
$ svn co [https://jikesrvm.svn.sf.net/svnroot/jikesrvm/rvmroot/trunk] jikesrvm
{panel}
# Create the machine-generated files and eclipse metadata:
#* If you have a *recent version* of Jikes RVM (*3.0 onwards*):
{panel}
$ cd jikesrvm
$ bin/buildit \--eclipse localhost
{panel}
Note that if you will not or cannot build on your local machine, substitute localhost for the name of a host you can build on (buildit will perform the build remotely and then copy the requisite files back).
_Note that if you will not or cannot build on your local machine_, substitute localhost for the name of a host you can build on (buildit will perform the build remotely and then copy the requisite files back).
#* If you are working on an *older version* (*2.9.1 - 2.9.3*), you can follow this procedure:
{panel}
$ cd jikesrvm
$ ant \-Dhost.name=ia32-linux \-Dconfig.name=development
$ ant \-Dhost.name=ia32-linux \-Dconfig.name=development eclipse-project
{panel}
If you will not or cannot build on your local machine:
#*# copy your tree to build build host somehow
#*# perform the above ant tasks
#*# copy the following generated files and directories back to the machine you will edit on:
#*#* jikesrvm/.project
#*#* jikesrvm/.classpath
#*#* jikesrvm/eclipse
# Import the newly created Eclipse project into your Eclipse workspace.
## From Eclipse, select File-->Import
## Select "Existing Projects Into Workspace"
!ImportWizard1.jpg!
## Browse to find the top-level directory.
## Select the project (in this case JikesRVM ia32-linux development)
!ImportWizard2.jpg!
## Hit Finish
h2. Editing JikesRVM in NetBeans
# Follow the instructions for Eclipse including building the eclipse project with ant
# Install the [Eclipse project importer|http://www.netbeans.org/kb/articles/import-eclipse.html]
# Select File\-->Import Project-\->Eclipse Project
## Choose to import project [ignoring project dependencies|http://www.netbeans.org/kb/articles/eclipse-dependencies.html]
## Select the top-level directory you created with the JikesRVM in as the project to import
## Select a new folder as the destination (workspace) for the import
## Hit Finish
View All Revisions |
Revert To Version 9
[Less]
|
|
Posted
over 17 years
ago
by
David Grove
Page
added by
David Grove
The Jikes RVM Adaptive Optimization System attempts to evaluate the break-even point for each action using an online competitive algorithm. It
... [More]
relies on an analytic model to estimate the costs and benefits of each selective recompilation action, and evaluates the best actions according to the model predictions online.
A key advantage of this approach is that it allows a designer to extend the simple "break-even" cost-benefit model to account for more sophisticated adaptive policies, such as selective compilation with multiple optimization levels, on-stack-replacement, and long-running analyses.
In general, each potential action will incur some cost and may confer some _benefit. For example, recompiling a method will certainly consume some CPU cycles, but could speed up the program execution by generating better code. In this discussion we focus on costs and benefits defined in terms of time (CPU cycles). However, in general, the controller could consider other measures of cost and benefit, such as memory footprint, garbage allocated, or locality disrupted.
The controller will take some action when it estimates the benefit to exceed the cost. More precisely, when the controller wakes at time t, it considers a set of n available actions, the set A = {A1, A2, ..., An}. For any subset S in P(A), the controller can estimate the cost C(S) and benefit B(S) of performing all actions Ai in S. The controller will attempt to choose the subset S that maximizes B(S) - C(S). Obviously S = {} has B(S) = C(S) = 0; the controller takes no action if it cannot find a profitable course.
In practice, the precise cost and benefit of each action cannot be known; so, the controller must rely on estimates to make decisions.
The basic model the controller uses to decide which method to recompile, at which optimization level, and at what time is as follows.
Suppose that when the controller wakes at time t, and each method m is currently optimized at optimization level mi, 0 <= i <= k. Let M be the set of loaded methods in the program. Let Ajm be the action "recompile method m at optimization level j, or do nothing if j = i."
The controller must choose an action for each m in M. The set of available actions is Actions = {Ajm | 0 <= j <= k, m in M}.
Each action has an estimated cost and benefit: C(Ajm), the cost of taking action Ajm, for 0 <= j <= k and T(Ajm), the expected time the program will spend executing method m in the future, if the controller takes action Ajm.
For S in Actions, define C(S) = Sum({s in S}C(s)). Given S, for each m in M, define A_min_m to be the action Ajm in S that minimizes T(Ajm). Then define T(S) = Sum({m in M}T(A_{min}_m).
Using these estimated values, the controller chooses the set S that minimizes C(S) T(S). Intuitively, for each method m, the controller chooses the recompilation level j that minimizes the expected future compilation time and running time of m.
It remains to define the functions C and T for each recompilation action. The basic model models the cost C of compiling a method m at level j as a linear function of the size of m. The linear function is determined by an offline experiment to fit constants to the model.
The basic model estimates that the speedup for any optimization level j is constant. The implementation determines the constant speedup factor for each optimization level offline, and uses the speedup to compute T for each method and optimization level.
We assume that if the program has run for time t, then the program will run for another t units, and then terminate. We further assume program behavior in the future will resemble program behavior in the past. Therefore, for each method we estimate that if no optimization action is performed T(Ajm) is equal to the time spent executing method m so far.
Let M=(m1, ..., mk) be the k compiled methods. When the controller wakes at time t, each compiled method m has been sampled Sum(m) times. Let delta be the sampling interval, measured in seconds. The controller estimates that method m has executed delta Sum(m) seconds so far, and will execute for another delta Sum(m) seconds in the future.
When driving recompilation based on sampling, the controller can limit its attention to the set of methods that were sampled in the previous sampling interval. This optimization does not lose precision; if the number of samples associated with a method has not changed, then the controller's estimate of the method's future execution time will not change. This implies that if the controller were to consider a
method that does not appear in the previous sampling interval, the controller would make exactly the same decision it did the last time it considered the method. This optimization, limiting the number of methods the controller must examine in each sampling interval, greatly reduces the amount of work performed by the controller.
Suppose the controller recompiles method m from optimization level i to optimization level j after having seen sum(m) samples. Let Si and Sj be the speedup ratios for optimization levels i and j, respectively. After optimizing at level j, we adjust the sample data to represent the system state as if it had executed method m at optimization level j since program startup. So, we set the new number of samples for m to be Sum(m) * (Si/Sj). Thus to compute the time spent in m, we need know only one number, the "effective" number of samples.
View Online
[Less]
|
|
Posted
over 17 years
ago
by
David Grove
Page
edited by
David Grove
A comprehensive discussion of the design and implementation of the original Jikes RVM adaptive optimization system is given in theOOPSLA 2000
... [More]
paper by Arnold, Fink, Grove, Hind and Sweeney. A number of aspects of the system have been changed since 2000, so a better resource is a technical report Nov. 2004 technical report that describes the architecture and implementation in some detail. This section of the userguide is based on section 5 of the 2004 technical report.
The implementation of the Jikes RVM adaptive optimization system uses a number of Java threads: several organizer threads in the runtime measurements component, the controller thread, and the compilation thread. The various threads are loosely coupled, communicating with each other through shared queues and/or the other in memory data structures. All queues in the system are blocking priority queues; if a consumer thread performs a dequeue operation when the queue is empty, it suspends until a producer thread performs an enqueue operation.
The adaptive optimization system performs two primary tasks: selective optimization and profile-directed inlining.
Selective Optimization
The goal of selective optimization is to identify regions of code in which the application spends significant execution time (often called ``hot spots''), determine if overall application performance is likely to be improved by further optimizing one or more hot spots, and if so to invoke the optimizing compiler and install the resulting optimized code in the virtual machine.
In Jikes RVM, the unit of optimization is a method. Thus, to perform selective optimization, first the runtime measurements component must identify candidate methods (``hot methods'') for the controller to consider. To this end, it installs a listener that periodically samples the currently executing method at every taken yieldpoint. When it is time to take a sample, the listener inspects the thread's call stack and records a single compiled method id into a buffer. If the yieldpoint occurs in the prologue of a method, then the listener additionally records the compiled method id of the current activation's caller. If the taken yieldpoint occurs on a loop backedge or method epilogue, then the listener records the compiled method id of the current method.
When the buffer of samples is full, the sampling window ends. The listener then unregisters itself (stops taking samples) and wakes the sleeping Hot Method Organizer. The Hot Method Organizer processes the buffer of compiled method ids by updating the Method Sample Data. This data structure maintains, for every compiled method, the total number of times that it has been sampled. Careful design of this data structure (MethodCountData.java) was critical to achieving low profiling overhead. In addition to supporting lookups and updates by compiled method id, it must also efficiently enumerate all methods that have been sampled more times than a (varying) threshold value. After updating the Method Sample Data, the Hot Method Organizer creates an event for each method that has been sampled in this window and adds it to the controller's priority queue, using the sample value as its priority. The event contains the compiled method and the total number of times it has been sampled since the beginning of execution. After enqueuing the last event, the Hot Method Organizer re-registers the method listener and then sleeps until the next buffer of samples is ready to be processed.
When the priority queue delivers an event to the controller, the controller dequeues the event and applies the model-driven recompilation policy to determine what action (if any) to take for the indicated method. If the controller decides to recompile the method, it creates a recompilation event that describes the method to be compiled and the optimization plan to use and places it on the recompilation queue. The recompilation queue prioritizes events based on the cost-benefit computation.
When an event is available on the recompilation queue, the recompilation thread removes it and performs the compilation activity specified by the event. It invokes the optimizing compiler at the specified optimization level and installs the resulting compiled method into the VM.
Although the overall structure of selective optimization in Jikes RVM is similar to that originally described in Arnold et al's OOPSLA 2000 paper, we have made several changes and improvements based on further experience with the system. The most significant change is that in the previous system, the method sample organizer attempted to filter the set of methods it presented to the controller. The organizer passed along to the controller only methods considered "hot". The organizer deemed a method "hot'' if the percentage of samples attributed to the method exceeded a dynamically adjusted threshold value. Method samples were periodically decayed to give more weight to recent samples. The controller dynamically adjusted this threshold value and the size of the sampling window in an attempt to reduce the overhead of processing the samples.
Later, significant algorithmic improvements in key data structures and additional performance tuning of the listeners, organizers, and
controller reduced AOS overhead by two orders of magnitude. These overhead reductions obviate the need to filter events passed
to the controller. This resulted in a more effective system with fewer parameters to tune and a sounder theoretical basis. In general, as we gained experience with the adaptive system implementation, we strove to reduce the number of tuning parameters. We believe that the closer the implementation matches the basic theoretical cost-benefit model, the more likely it will perform well and make reasonable and understandable decisions.
Profile-Directed Inlining
Profile-directed inlining attempts to identify frequently traversed call graph edges, which represent caller-callee relationships, and determine whether it is beneficial to recompile the caller methods
to allow inlining of the callee methods. In Jikes RVM, profile-directed inlining augments a number of static
inlining heuristics. The role of profile-directed inlining is to identify high cost-high benefit inlining opportunities that evade the static heuristics and to predict the likely target(s) of invokevirtual and invokeinterface calls that could not be statically bound at compile time.
To accomplish this goal, the system takes a statistical sample of the method calls in the running application and maintains an approximation of the dynamic call graph based on this data. The system installs a listener that samples call edges whenever a yieldpoint is taken in the prologue or epilogue of a method. To sample the call edge, it records the compiled method id of the caller and callee methods and the offset of the call instruction in the caller's machine code into a buffer. When the buffer of samples is full, the sampling window ends.
The listener then unregisters itself (stops taking samples) and wakes an organizer to update the dynamic call graph with the new profile data. The optimizing compiler's Inline Oracle uses the dynamic call graph to guide it's inline decisions.
The system currently used is based on Arnold & Grove's CGO 2005 paper. More details of the sampling scheme and the inlining oracle can be found there, or in the source code.
View Online
Changes between revision 5
and revision 6:
A comprehensive discussion of the design and implementation of the original Jikes RVM adaptive optimization system is given in the[OOPSLA 2000 paper|http://docs.codehaus.org/display/RVM/Publications#Publications-aos] by Arnold, Fink, Grove, Hind and Sweeney. A number of aspects of the system have been changed since 2000, so a better resource is a technical report [Nov. 2004 technical report|http://domino.research.ibm.com/comm/research_people.nsf/pages/dgrove.RC23429.html] that describes the architecture and implementation in some detail. This section of the userguide is based on section 5 of the 2004 technical report.
\\
The implementation of the Jikes RVM adaptive optimization system uses a number of Java threads: several organizer threads in the runtime measurements component, the controller thread, and the compilation thread. The various threads are loosely coupled, communicating with each other through shared queues and/or the other in memory data structures. All queues in the system are blocking priority queues; if a consumer thread performs a dequeue operation when the queue is empty, it suspends until a producer thread performs an enqueue operation.
The adaptive optimization system performs two primary tasks: selective optimization and profile-directed inlining. The next two sections describe the implementation of each.
The adaptive optimization system performs two primary tasks: selective optimization and profile-directed inlining.
h3. Selective Optimization
The goal of selective optimization is to identify regions of code in which the application spends significant execution time (often called ``hot spots''), determine if overall application performance is likely to be improved by further optimizing one or more hot spots, and if so to invoke the optimizing compiler and install the resulting optimized code in the virtual machine.
In Jikes RVM, the unit of optimization is a method. Thus, to perform selective optimization, first the runtime measurements component must identify candidate methods (``hot methods'') for the controller to consider. To this end, it installs a listener that periodically samples the currently executing method at every taken yieldpoint. When it is time to take a sample, the listener inspects the thread's call stack and records a single compiled method id into a buffer. If the yieldpoint occurs in the prologue of a method, then the listener additionally records the compiled method id of the current activation's caller. If the taken yieldpoint occurs on a loop backedge or method epilogue, then the listener records the compiled method id of the current method.
When the buffer of samples is full, the sampling window ends. The listener then unregisters itself (stops taking samples) and wakes the sleeping Hot Method Organizer. The Hot Method Organizer processes the buffer of compiled method ids by updating the Method Sample Data. This data structure maintains, for every compiled method, the total number of times that it has been sampled. Careful design of this data structure (MethodCountData.java) was critical to achieving low profiling overhead. In addition to supporting lookups and updates by compiled method id, it must also efficiently enumerate all methods that have been sampled more times than a (varying) threshold value. After updating the Method Sample Data, the Hot Method Organizer creates an event for each method that has been sampled in this window and adds it to the controller's priority queue, using the sample value as its priority. The event contains the compiled method and the _total_ number of times it has been sampled since the beginning of execution. After enqueuing the last event, the Hot Method Organizer re-registers the method listener and then sleeps until the next buffer of samples is ready to be processed.
When the priority queue delivers an event to the controller, the controller dequeues the event and applies the model-driven recompilation policy to determine what action (if any) to take for the indicated method. If the controller decides to recompile the method, it creates a recompilation event that describes the method to be compiled and the optimization plan to use and places it on the recompilation queue. The recompilation queue prioritizes events based on the cost-benefit computation.
When an event is available on the recompilation queue, the recompilation thread removes it and performs the compilation activity specified by the event. It invokes the optimizing compiler at the specified optimization level and installs the resulting compiled method into the VM.
Although the overall structure of selective optimization in Jikes RVM is similar to that originally described in Arnold et al's OOPSLA 2000 paper, we have made several changes and improvements based on further experience with the system. The most significant change is that in the previous system, the method sample organizer attempted to filter the set of methods it presented to the controller. The organizer passed along to the controller only methods considered "hot". The organizer deemed a method "hot'' if the percentage of samples attributed to the method exceeded a dynamically adjusted threshold value. Method samples were periodically decayed to give more weight to recent samples. The controller dynamically adjusted this threshold value and the size of the sampling window in an attempt to reduce the overhead of processing the samples.
Later, significant algorithmic improvements in key data structures and additional performance tuning of the listeners, organizers, and
controller reduced AOS overhead by two orders of magnitude. These overhead reductions obviate the need to filter events passed
to the controller. This resulted in a more effective system with fewer parameters to tune and a sounder theoretical basis. In general, as we gained experience with the adaptive system implementation, we strove to reduce the number of tuning parameters. We believe that the closer the implementation matches the basic theoretical cost-benefit model, the more likely it will perform well and make reasonable and understandable decisions.
h3. Profile-Directed Inlining
Profile-directed inlining attempts to identify frequently traversed call graph edges, which represent caller-callee relationships, and determine whether it is beneficial to recompile the caller methods
to allow inlining of the callee methods. In Jikes RVM, profile-directed inlining augments a number of static
inlining heuristics. The role of profile-directed inlining is to identify high cost-high benefit inlining opportunities that evade the static heuristics and to predict the likely target(s) of invokevirtual and invokeinterface calls that could not be statically bound at compile time.
To accomplish this goal, the system takes a statistical sample of the method calls in the running application and maintains an approximation of the dynamic call graph based on this data. The system installs a listener that samples call edges whenever a yieldpoint is taken in the prologue or epilogue of a method. To sample the call edge, it records the compiled method id of the caller and callee methods and the offset of the call instruction in the caller's machine code into a buffer. When the buffer of samples is full, the sampling window ends.
The listener then unregisters itself (stops taking samples) and wakes an organizer to update the dynamic call graph with the new profile data. The optimizing compiler's Inline Oracle uses the dynamic call graph to guide it's inline decisions.
The system currently used is based on Arnold & Grove's CGO 2005 paper. More details of the sampling scheme and the inlining oracle can be found there, or in the source code.
View All Revisions |
Revert To Version 5
[Less]
|
|
Posted
over 17 years
ago
by
David Grove
Page
edited by
David Grove
Complex non-deterministic systems such as the Jikes RVM adaptive system present challenges for system understanding and debugging. Virtually all
... [More]
of the profiling data collected by the runtime measurements component results from non-deterministic timer-based sampling at taken yieldpoints. The exact timing of these interrupts, and thus, the profile data that drives recompilation decisions, differs somewhat each time an application executes. Furthermore, many of the optimizations in the optimizing compiler rely on online profiles of conditional branch probabilities, i.e., the probabilities at the point in an execution when the recompilation occurs. Thus, because recompilations can occur at different times during each execution, a method compiled at the same optimization level could be compiled slightly differently on different runs.
The primary mechanism we use to manage this complexity is a record-replay facility for the adaptive system, where online profile data is gathered during one run and used in a subsequent run. More specifically, as methods are dynamically compiled, the system can record this information into a log file. At the end of the run, the system can optionally dump the branch probabilities of all instrumented conditional branches, the profile-derived call graph, and the profile-directed inlining decisions. This log of methods and the files of profile data can then be provided as inputs to a driver program (org.jikesrvm.tools.opt.OptTestHarness) that can replay the series of compilation actions, and then optionally execute the program. Usually a fairly rapid binary search of methods being compiled and/or the supporting profile data suffices to narrow the cause of a crash to a small set of actions taken by the optimizing compiler. Although this does not enable a perfectly accurate replay of a previous run, in practice, we have found that it suffices to reproduce almost all crashes caused by bugs in the optimizing compiler.
In addition to this record-replay mechanism, which mainly helps debugging the optimizing compiler, the adaptive system can generate a log file that contains detailed information about the actions of its organizer and controller threads. A sample is shown below:
30:..7047728888 Compiled read with baseline compiler in 0.20 ms
90:..7136817287 Controller notified that read(14402) has 4.0 samples
92:..7139813016 Doing nothing cost (leaving at baseline) to read is 40.0
92:..7139830219 Compiling read cost at O0=40.42, future time=49.81
92:..7139842466 Compiling read cost at O1=65.99, future time=72.58
92:..7139854029 Compiling read cost at O2=207.44, future time=213.49
110:..7166901172 Controller notified that read(14402) has 9.0 samples
111:..7168378722 Doing nothing cost (leaving at baseline) to read=90.0
111:..7168396493 Compiling read cost at O0=40.42, future time=61.54
111:..7168409562 Compiling read cost at O1=65.99, future time=80.81
111:..7168421097 Compiling read cost at O2=207.44, future time=221.06
111:..7168435937 Scheduling level 0 recompilation of read (priority=28.46)
112:..7169879779 Recompiling (at level 0) read
114:..7173293360 Recompiled (at level 0) read
150:..7227058078 Controller notified that read(14612) has 5.11 samples
151:..7228691160 Doing nothing cost (leaving at O0) to read=51.12
151:..7228705466 Compiling read cost at O1=66.26, future time=102.14
151:..7228717124 Compiling read cost at O2=208.29, future time=241.24
<....many similar entries....>
998:..8599006259 Controller notified that read(14612) has 19.11 samples
999:..8599561634 Doing nothing cost (leaving at O0) to read=191.13
999:..8599576368 Compiling read cost at O1=54.38, future time=188.52
999:..8599587767 Compiling read cost at O2=170.97, future time=294.14
999:..8599603986 Scheduling level 1 recompilation of read (priority=2.61)
1000:..8601308856 Recompiling (at level 1) read
1002:..8604580406 Recompiled (at level 1) read
1018:..8628022176 Controller notified that read(15312) has 18.41 samples
1019:..8629548221 Doing nothing cost (leaving at O1) to read=184.14
1019:..8629563130 Compiling read cost at O2=170.97, future time=340.06
This sample shows an abbreviated subset of the log entries associated with the method read of the class spec.benchmarks._213_javac.ScannerInputStream, one of the hotter methods of the SPECjvm98 benchmark _213_javac. The first pair of numbers are the controller clock (number of timer interrupts since execution began) and the value of the hardware cycle counter (Time.cycles()) for the log entry. These log entries show the cost-benefit values computed by the controller for various possible optimization actions and the progression of the method from baseline compilation through two recompilations (level 0 and then at level 1). For example, at time 92, we see four entries that give the estimated total future time (the sum of the compilation cost and the total future execution time in a method) for performing no recompilation and for each optimization level. Because the total future time for not recompiling (40) is less than the other alternatives (49.81, 72.58, and 213.49), the method is not scheduled for recompilation. However, at time 110, the method has been sampled more often. Thus, the total future time estimate is updated, resulting in two recompilation actions (level 0 and level 1) that are more attractive than taking no recompilation action. Because level 0 gives the least future time, this decision is chosen by placing a recompilation event in the recompilation priority queue. The priority for the event is the expected improvement of performing this recompilation, i.e., the difference between the future time for the new level and the future time for current execution (90 - 61.54 = 28.46).
At clock time 150 a similar pattern occurs when considering whether to recompile this method at level 1 or 2; initially recompiling at higher levels is not chosen (clock time 151) until sufficient samples of the method have occurred (clock time 999).
The figure also illustrates how samples of a method at lower optimization level are incorporated into the total samples for a method that has been recompiled. The samples at the lower level are scaled by the relative speed of the two levels as defined by the CompilerDNA, and used as the initial number of samples for the higher level. For example, at clock time 100, the baseline compiled version of the method has 9 samples. When the method is recompiled at level 0, these methods are scaled down by 4.26, which is the expected speedup defined by the CompilerDNA for going from baseline to level 0, resulting in a value of 2.11. At clock time 160, the level 0 version of method has 5.11 samples, i.e, 3 additional samples of the method have occurred.
View Online
Changes between revision 1
and revision 2:
Complex non-deterministic systems such as the Jikes RVM adaptive system present challenges for system understanding and debugging. Virtually all of the profiling data collected by the runtime measurements component results from non-deterministic timer-based sampling at taken yieldpoints. The exact timing of these interrupts, and thus, the profile data that drives recompilation decisions, differs somewhat each time
an application executes. Furthermore, many of the optimizations in the optimizing compiler rely on online profiles of conditional branch probabilities, i.e., the probabilities at the point in an execution when the recompilation occurs. Thus, because recompilations can occur at different times during each execution, a
method compiled at the same optimization level could be compiled slightly differently on different runs.
Complex non-deterministic systems such as the Jikes RVM adaptive system present challenges for system understanding and debugging. Virtually all of the profiling data collected by the runtime measurements component results from non-deterministic timer-based sampling at taken yieldpoints. The exact timing of these interrupts, and thus, the profile data that drives recompilation decisions, differs somewhat each time an application executes. Furthermore, many of the optimizations in the optimizing compiler rely on online profiles of conditional branch probabilities, i.e., the probabilities at the point in an execution when the recompilation occurs. Thus, because recompilations can occur at different times during each execution, a method compiled at the same optimization level could be compiled slightly differently on different runs.
The primary mechanism we use to manage this complexity is a record-replay facility for the adaptive system, where online profile data is gathered during one run and used in a subsequent run. More specifically, as methods are dynamically compiled, the system can record this information into a log file. At the end of
the run, the system can optionally dump the branch probabilities of all instrumented conditional branches, the profile-derived call graph, and the profile-directed inlining decisions. This log of methods and the files of profile data can then be provided as inputs to a driver program (org.jikesrvm.tools.opt.OptTestHarness) that can replay the series of compilation actions, and then optionally execute the program. Usually a fairly rapid binary search of methods being compiled and/or the supporting profile data suffices to narrow the cause of a crash to a small set of actions taken by the optimizing compiler. Although this does not enable a perfectly accurate replay of a previous run, in practice, we have found that it suffices to reproduce almost all crashes caused by bugs in the optimizing compiler.
The primary mechanism we use to manage this complexity is a record-replay facility for the adaptive system, where online profile data is gathered during one run and used in a subsequent run. More specifically, as methods are dynamically compiled, the system can record this information into a log file. At the end of the run, the system can optionally dump the branch probabilities of all instrumented conditional branches, the profile-derived call graph, and the profile-directed inlining decisions. This log of methods and the files of profile data can then be provided as inputs to a driver program (org.jikesrvm.tools.opt.OptTestHarness) that can replay the series of compilation actions, and then optionally execute the program. Usually a fairly rapid binary search of methods being compiled and/or the supporting profile data suffices to narrow the cause of a crash to a small set of actions taken by the optimizing compiler. Although this does not enable a perfectly accurate replay of a previous run, in practice, we have found that it suffices to reproduce almost all crashes caused by bugs in the optimizing compiler.
In addition to this record-replay mechanism, which mainly helps debugging the optimizing compiler, the adaptive system can generate a log file that contains detailed information about the actions of its
organizer and controller threads. A sample is shown below:
In addition to this record-replay mechanism, which mainly helps debugging the optimizing compiler, the adaptive system can generate a log file that contains detailed information about the actions of its organizer and controller threads. A sample is shown below:
{noformat}
30:..7047728888 Compiled read with baseline compiler in 0.20 ms
90:..7136817287 Controller notified that read(14402) has 4.0 samples
92:..7139813016 Doing nothing cost (leaving at baseline) to read is 40.0
92:..7139830219 Compiling read cost at O0=40.42, future time=49.81
92:..7139842466 Compiling read cost at O1=65.99, future time=72.58
92:..7139854029 Compiling read cost at O2=207.44, future time=213.49
110:..7166901172 Controller notified that read(14402) has 9.0 samples
111:..7168378722 Doing nothing cost (leaving at baseline) to read=90.0
111:..7168396493 Compiling read cost at O0=40.42, future time=61.54
111:..7168409562 Compiling read cost at O1=65.99, future time=80.81
111:..7168421097 Compiling read cost at O2=207.44, future time=221.06
111:..7168435937 Scheduling level 0 recompilation of read (priority=28.46)
112:..7169879779 Recompiling (at level 0) read
114:..7173293360 Recompiled (at level 0) read
150:..7227058078 Controller notified that read(14612) has 5.11 samples
151:..7228691160 Doing nothing cost (leaving at O0) to read=51.12
151:..7228705466 Compiling read cost at O1=66.26, future time=102.14
151:..7228717124 Compiling read cost at O2=208.29, future time=241.24
<....many similar entries....>
998:..8599006259 Controller notified that read(14612) has 19.11 samples
999:..8599561634 Doing nothing cost (leaving at O0) to read=191.13
999:..8599576368 Compiling read cost at O1=54.38, future time=188.52
999:..8599587767 Compiling read cost at O2=170.97, future time=294.14
999:..8599603986 Scheduling level 1 recompilation of read (priority=2.61)
1000:..8601308856 Recompiling (at level 1) read
1002:..8604580406 Recompiled (at level 1) read
1018:..8628022176 Controller notified that read(15312) has 18.41 samples
1019:..8629548221 Doing nothing cost (leaving at O1) to read=184.14
1019:..8629563130 Compiling read cost at O2=170.97, future time=340.06
{noformat}
This sample shows an abbreviated subset of the log entries associated with the method read of the class spec.benchmarks._213_javac.ScannerInputStream, one of the hotter methods of the SPECjvm98 benchmark \_213_javac. The first pair of numbers are the controller clock (number of timer interrupts since execution began) and the value of the hardware cycle counter (Time.cycles()) for the log entry. These log entries show the cost-benefit values computed by the controller for various possible optimization actions and the progression of the method from baseline compilation through two recompilations (level 0 and then at level 1). For example, at time 92, we see four entries that give the estimated total future time (the sum of the compilation cost and the total future execution time in a method) for performing no recompilation and for each optimization level. Because the total future time for not recompiling (40) is less than the other alternatives (49.81, 72.58, and 213.49), the method is not scheduled for recompilation. However, at time 110, the method has been sampled more often. Thus, the total future time estimate is updated, resulting in two recompilation actions (level 0 and level 1) that are more attractive than taking no recompilation action. Because level 0 gives the least future time, this decision is chosen by placing a recompilation event in the recompilation priority queue. The priority for the event is the expected improvement of performing this recompilation, i.e., the difference between the future time for the new level and the future time for current execution (90 - 61.54 = 28.46).
This sample shows an abbreviated subset of the log entries associated with the method read
of the class spec.benchmarks._213_javac.ScannerInputStream, one of the hotter methods of the SPECjvm98 benchmark \_213_javac. The first pair of numbers are the controller clock (number of timer interrupts since execution began) and the value of the hardware cycle counter (Time.cycles()) for the log entry. These log entries show the cost-benefit values computed by the controller for various possible optimization actions and the progression of the method from baseline compilation through two recompilations (level 0 and then at level 1). For example, at time 92, we see four entries that give the estimated total future time (the sum of the compilation cost and the total future execution time in a method) for performing no recompilation and for each optimization level. Because the total future time for not recompiling (40) is less than the other alternatives (49.81, 72.58, and 213.49), the method is not scheduled for recompilation. However, at time 110, the method has been sampled more often. Thus, the total future time estimate is updated, resulting in two recompilation actions (level 0 and level 1) that are more attractive than taking no recompilation action. Because level 0 gives the least future time, this decision is chosen by placing a recompilation event in the recompilation priority queue. The priority for the event is the expected improvement of performing this
recompilation, i.e., the difference between the future time for the new level and the future time for current execution ($90 - 61.54 = 28.46$).
At clock time 150 a similar pattern occurs when considering whether to recompile this method at level 1 or 2; initially recompiling at higher levels is not chosen (clock time 151) until sufficient samples of the method have occurred (clock time 999).
At clock time 150 a similar pattern occurs when considering whether to recompile this method at level 1 or 2;
initially recompiling at higher levels is not chosen (clock time 151) until sufficient samples of the method have occurred (clock time 999).
The figure also illustrates how samples of a method at lower optimization level are incorporated into the total samples for a method that has been recompiled. The samples at the lower level are scaled by the relative speed of the two levels as defined by the CompileDNA, and used as the initial number of samples for the higher level. For example, at clock time 100, the baseline compiled version of the method has 9 samples. When the method is recompiled at level 0, these methods are scaled down by 4.26, which is the expected speedup defined by the CompilerDNA for going from baseline to level 0, resulting in a value of 2.11. At clock time 160, the level 0 version of method has 5.11 samples, i.e, 3 additional samples of the method have occurred.
The figure also illustrates how samples of a method at lower optimization level are incorporated into the total samples for a method that has been recompiled. The samples at the lower level are scaled by the relative speed of the two levels as defined by the CompilerDNA, and used as the initial number of samples for the higher level. For example, at clock time 100, the baseline compiled version of the method has 9 samples. When the method is recompiled at level 0, these methods are scaled down by 4.26, which is the expected speedup defined by the CompilerDNA for going from baseline to level 0, resulting in a value of 2.11. At clock time 160, the level 0 version of method has 5.11 samples, i.e, 3 additional samples of the method have occurred.
View All Revisions |
Revert To Version 1
[Less]
|
|
Posted
over 17 years
ago
by
David Grove
Page
added by
David Grove
A primary design goal for the adaptive optimization system is to enable research in online feedback-directed optimization. Therefore, we require
... [More]
the controller implementation to be flexible and extensible. As we gained experience with the system, the controller component went through several major redesigns to better support our goals.
The controller is a single Java thread that runs an infinite event loop. After initializing AOS, the controller enters the event loop and attempts to dequeue an event. If no event is available, the dequeue operation blocks (suspending the controller thread) until an event is available. All controller events implement an interface with a single method: process. Thus, after successfully dequeuing an event the controller thread simply invokes its process method and then, the work for that event having been completed, returns to the top of the event loop and attempts to dequeue another event. This design makes it easy to add new kinds of events to the system (and thus, extend the controller's behavior), as all of the logic to process an event is defined by the event's process method, not in the code of the controller thread.
A further level of abstraction is accomplished by representing the recompilation strategy as an abstract class with several subclasses. The process method of a hot method event invokes methods of the recompilation strategy to determine whether or not a method should be recompiled, and if so at what optimization level. The cost-benefit model itself is also reified in a class hierarchy of models to enable extension and variation. This set of abstractions enable a single controller implementation to execute a variety of strategies.
Another useful mechanism for experimentation is the ability to easily change the input parameters to AOS that define the expected compilation rates and execution speed of compiled code for the various compilers. By varying these parameters, one can easily cause the default multi-level cost-benefit model to simulate a single-level model (by defining all but one optimization level to be unprofitable). One can also explore other aspects of the system, for example the sensitivity of the model to the accuracy of these parameters. We found this capability to be so useful that the system supports a command line argument (-X:aos:dna=<filename>) that causes it to optionally read these parameters from a file.
View Online
[Less]
|