Review request: White box testing API for HotSpot

Mikael Gerdin mikael.gerdin at oracle.com
Tue Nov 29 08:04:23 PST 2011


Hi

I've been working on a white box testing API for HotSpot in order to 
allow for improved precision in vm testing.

The basic idea is to open up the possibility for tests written in Java 
to call native methods which query or poke the vm in some way.

The API is accessible by using the class sun/hotspot/WhiteBox which is 
not intended to be available in public builds.
In order to allow the WhiteBox class access to the VM the 
registerNatives function is linked to JVM_RegisterWhiteBoxMethods. That 
function then links all the implementation functions using normal JNI 
RegisterNatives.

The API is not meant to be used by end users for any intent or purpose 
and as such it is both guarded by "-XX:+UnlockDiagnosticVMOptions 
-XX:+EnableWhiteboxAPI" and the fact that the class files will not be 
present in an end user build of a JDK.
If the VM crashes after this API has been accessed a note will be 
written in the hs_err file to signal that the API has been used.

Webrev:
http://cr.openjdk.java.net/~stefank/mgerdin/wbapi.0/webrev/
(thanks to stefank for hosting my webrev :)

CR:
I'll file a CR tomorrow.

Change comments:

make/jprt.properties

Add a test target to make sure that the API is available on all 
supported platforms

make/**

Makefile changes to build the class sun/hotspot/WhiteBox, put it in a 
JAR file and copy it to the jre/lib/endorsed directory in the export 
targets.
The BSD makefile changes are not tested since I don't have access to any 
BSD/OSX machine to test them on.

src/share/vm/prims/nativeLookup.cpp

Special-case the method sun/hotspot/WhiteBox/registerNatives and link it 
to JVM_RegisterWhiteBoxMethods

src/share/vm/prims/whitebox.*

The implementation of the white box API. The actual API functions are 
only examples of what we want to be able to do using the API.

src/share/vm/runtime/globals.hpp

Add the command line flag

src/share/vm/utilities/vmError.cpp

Print a message in hs_err files when white box API has been used.

test/Makefile

Add a makefile test target for the white box API test

test/sanity/wbapi.java

JTreg test to ensure that the API works.


Thanks
/Mikael Gerdin


More information about the hotspot-dev mailing list