Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
Ivan Dubrov 3892c7b61a Updating bug tracker URL il y a 9 ans
agent/src/main/java Renaming org.dcevm -> com.github.dcevm il y a 10 ans
dcevm/src Fixing issue with vmindex not being properly updated. il y a 9 ans
gradle/wrapper Extracting DCEVM patch & code into separate project il y a 10 ans
hotspot/.hg/patches Updating bug tracker URL il y a 9 ans
installer Allow changing installer JAR name il y a 9 ans
native Fixing native code compilation il y a 10 ans
.gitignore Adding hotspot.log to ignores il y a 10 ans
README.md Update README.md il y a 9 ans
build.cmd Fixing build.cmd il y a 10 ans
build.gradle Avoiding Turkish i/I issue with toLowerCase(), using ENGLISH locale il y a 9 ans
gradle.properties full/light jdk7u79-b02 support il y a 9 ans
gradlew Extracting DCEVM patch & code into separate project il y a 10 ans
gradlew.bat Extracting DCEVM patch & code into separate project il y a 10 ans
settings.gradle Set root project name explicitly il y a 9 ans

README.md

DCEVM

This project is a fork of original DCEVM project.

The purpose of the project is to maintain enhanced class redefinition functionality for OpenJDK HotSpot 7/8.

Binaries

You can download binaries here.

Supported versions

pathes/ contains patches for all supported versions. Each patch is named by concatenating prefix full or light with the OpenJDK HotSpot tag. full patches support full redefenition capabilities (including removal of superclasses, for example). light patches are easier to maintain, but they only support limited functionality (generally, additions to class hierarchies are fine, removals are not).

HotSpot tag is the name of the tag in the corresponding HotSpot Mercurial repository (Java 8/Java 7).

Building

General Requirements

You need the following software to build DCEVM:

  • Java 7 or later. If you intend to run tests, it should be one of the supported versions (see list of patches/)
  • C++ compiler toolchain (gcc). There is no strict version requirement except that it should be supported by HotSpot build scripts.
  • Mercurial with Mercurial Queues Extension enabled.

Mac OS X specific requirements

Currently the build is not compatible with Clang on Mac OS X, you need to install gcc 4.8 using the Homebrew:

  • brew tap homebrew/versions
  • brew install gcc48

Then set the following environmental properties:

  • export CC=/usr/local/bin/gcc-4.8
  • export CFLAGS=-fobjc-exceptions
  • export CXX=/usr/local/bin/g++-4.8
  • export SA_LDFLAGS=-fobjc-exceptions

Compiling DCEVM

  • Configure version you want in gradle.properties.
  • Run ./gradlew patch to retrieve HotSpot sources and patch them.
  • Run ./gradlew compileFastdebug to build fastdebug version or ./gradlew compileProduct to build product version.
  • Compiled libraries are placed in hotspot/build/fastdebug or hotspot/build/product.

Installing DCEVM

  • Replace libjvm.so/jvm.dll/libjvm.dylib in the target JRE.
  • Run java -version, it should include Dynamic Code Evolution string.

Or you can install DCEVM using the gradle script:

  • Run ./gradlew installFastdebug -PtargetJre=$JAVA_HOME/jre or ./gradlew installProduct -PtargetJre=$JAVA_HOME/jre
  • DCEVM will be installed as “alternative” JVM. To use it, add -XXaltjvm=dcevm

Testing DCEVM

  • Configure version you want in gradle.properties.
  • Set JAVA_HOME to point to JDK you want to test against (should be compatible with the version you set in gradle.properties).
  • Run ./gradlew patch to retrieve HotSpot sources and patch them.
  • Run ./gradlew test to run tests.
  • Tests reports will be in dcevm/build/reports/tests/index.html

To run tests from IDE, you need:

  • Run ./gradlew agent:build to build redefinition agent code.
  • Add JVM argument to use redefinition agent (-javaagent:agent/build/libs/agent.jar).
  • Add JVM argument to DCEVM VM if installed side-by-side (-XXaltjvm=dcevm).

Known issues