Review request: White box testing API for HotSpot

Mikael Gerdin mikael.gerdin at oracle.com
Tue Jan 10 11:27:06 PST 2012


Hi all

Back from vacations now with an updated version of the webrev based on 
the feedback received in this thread.
Changes include:
* removed install target from makefiles
* renamed flag form EnableWhiteBoxAPI to remove redundant Enable
* installs wb.jar into jre/lib and made -XX:+WhiteBoxAPI add wb.jar to 
the boot class path from inside the VM.

http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.2/

Thanks
Mikael Gerdin

On 2011-11-29 17:04, Mikael Gerdin wrote:
> 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