Review request: White box testing API for HotSpot

Mikael Gerdin mikael.gerdin at oracle.com
Tue Jan 17 07:36:10 PST 2012


..
and the new webrev is at http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.4/


On 2012-01-17 16:34, Mikael Gerdin wrote:
> David,
>
> On 2012-01-13 00:00, David Holmes wrote:
>> Hi Mikael,
>>
>> On 13/01/2012 2:20 AM, Mikael Gerdin wrote:
>>>> 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.
>>
>> I think those tests must have been written by C programers ;-)
>>
>>> WBApi it is then.
>>
>> Thanks.There is a slight typo in that the file is WBapi.java not
>> WBApi.java
>
> Fixed.
>
> I also re-ran JPRT to verify that it still builds on all platforms and
> found that the size of a region in G1 had changed to size_t, so I added
> a cast to jint (region sizes of >2G seems to be unreasonable).
>
> I also tried with Jim Melvin's patch to run OS X and verified that
> "wbapitest" works on OS X as well.
>
> /Mikael
>
>>
>> David
>> -----
>>
>>>
>>>>
>>>> ---
>>>>
>>>> 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