Review request: White box testing API for HotSpot
Mikael Gerdin
mikael.gerdin at oracle.com
Thu Jan 12 08:20:32 PST 2012
Hi David,
On 2012-01-12 08:26, David Holmes wrote:
> Hi Mikael,
>
> This seems to address my concerns with the previous implementation of
> this. Some further minor comments:
>
> In whitebox.cpp:
>
> 181 if (result != 0) {
> 182 WhiteBox::set_used();
>
> shouldn't the above be testing for == 0 ?
Yes it should, fixed.
>
> ---
>
> wbapi.java: normal Java naming style is to use camel-case for class
> names. Though as WB is itself an acronym I'd be okay with WBApi. In fact
> I'd be happy with anything other than initial lower-case :)
Many of our existing tests have lower-case names so I guess I thought
that was some sort of convention, it does not really matter to me.
WBApi it is then.
>
> ---
>
> test/Makefile: does wbapitest need to be added to the phoney list?
Yes, fixed.
New webrev at:
http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.3/
Incremental at:
http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.2-to-3/webrev/
/Mikael
>
> ---
>
> Cheers,
> David
> -----
>
>
> On 11/01/2012 5:27 AM, Mikael Gerdin wrote:
>> 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