RFR(M): 8006683: Add WhiteBox API to testing of compiler
Igor Ignatyev
igor.ignatyev at oracle.com
Tue Feb 12 14:25:30 PST 2013
May I consider that "official" review is passed and I can ask Vladimir
Ivanov to push this patch?
Best regards,
Igor Ignatyev
On 02/09/2013 12:46 PM, Igor Ignatyev wrote:
> testing finished:
> - IsMethodCompilableTest failed on *-i586-*-c1 as expected (JDK-8007270)
> - on other platforms all tests passed
> - there were successful tests macosx_x64-*-c1-compiler/whitebox, it
> seems this is due to jprt's problem. because any *_x64 ignore '-client',
> so run tests on macosx_x64 with this flag and call them
> 'macosx_x64-*-c1-*' is incorrect and misleads.
>
> PS jprt was started with "-rtests '*-*-*-compiler/whitebox' -et
> '.*Emb-.*' -et '.*_armv6-.*' -qac 100"
>
> Best regards,
> Igor Ignatyev
>
> On 02/08/2013 12:22 AM, Vladimir Kozlov wrote:
>> Good. Please, do JPRT test run with -rtests compiler/whitebox
>>
>> Thanks,
>> Vladimir
>>
>> On 2/7/13 12:11 PM, Igor Ignatyev wrote:
>>> I have updated the patch with removing unnecessary "-cp ./"
>>>
>>> http://cr.openjdk.java.net/~iignatyev/8006683/webrev.02/
>>>
>>> Best regards,
>>> Igor Ignatyev
>>>
>>> On 02/06/2013 11:01 PM, Vladimir Kozlov wrote:
>>>> On 2/6/13 10:56 AM, Mikael Gerdin wrote:
>>>>> Vladimir,
>>>>>
>>>>> On 2013-02-06 17:41, Vladimir Kozlov wrote:
>>>>>> Igor, Mikael explained it. I think you need to wait when his are
>>>>>> changes
>>>>>> pushed.
>>>>>
>>>>> If it's ok with you I'd rather wait for the NMT WhiteBox additions and
>>>>> Igor's compiler additions to the API to get pushed and propagate
>>>>> through
>>>>> the repos and then merge those changes into mine and push my changes.
>>>>
>>>> It is fine with me.
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>>>
>>>>> /Mikael
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Vladimir
>>>>>>
>>>>>> On 2/6/13 12:52 AM, Igor Ignatyev wrote:
>>>>>>>> Why you need to pass -J-XX:+UnlockDiagnosticVMOptions
>>>>>>>> -J-XX:+WhiteBoxAPI
>>>>>>>> to javac (@compile)? javac usually uses Client VM so you will test
>>>>>>>> different VM and it will be hard to diagnose it.
>>>>>>>
>>>>>>> Because these flags are needed for adding wb.jar to classpath, w/o
>>>>>>> them
>>>>>>> javac could not find sun.hotspot.WhiteBox:
>>>>>>>
>>>>>>> test/compiler/whitebox/MakeMethodNotCompilableTest.java:38: error:
>>>>>>> cannot access WhiteBox
>>>>>>> if (!WHITE_BOX.isMethodCompilable(METHOD)) {
>>>>>>> ^
>>>>>>> class file for sun.hotspot.WhiteBox not found
>>>>>>> 1 error
>>>>>>> result: Failed. Compilation failed: Compilation failed
>>>>>>>
>>>>>>>
>>>>>>>> SetDontInlineMethodTest.java also have additional "-cp ./". Why?
>>>>>>> my oversight
>>>>>>>
>>>>>>> Best regards,
>>>>>>> Igor Ignatyev
>>>>>>>
>>>>>>> On 02/06/2013 06:17 AM, Vladimir Kozlov wrote:
>>>>>>>> The directories and files layout is good.
>>>>>>>>
>>>>>>>> Why you need to pass -J-XX:+UnlockDiagnosticVMOptions
>>>>>>>> -J-XX:+WhiteBoxAPI
>>>>>>>> to javac (@compile)? javac usually uses Client VM so you will test
>>>>>>>> different VM and it will be hard to diagnose it.
>>>>>>>>
>>>>>>>> SetDontInlineMethodTest.java also have additional "-cp ./". Why?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Vladimir
>>>>>>>>
>>>>>>>> On 2/5/13 9:37 AM, Igor Ignatyev wrote:
>>>>>>>>> 1. added new functions:
>>>>>>>>> public native void makeMethodNotCompilable(Method method);
>>>>>>>>> public native int getMethodCompilationLevel(Method
>>>>>>>>> method);
>>>>>>>>> 2. tests were moved to separate files in compiler/whitebox
>>>>>>>>> directory
>>>>>>>>> 3. removed redundant '(value ? JNI_TRUE : JNI_FALSE)'
>>>>>>>>>
>>>>>>>>> webrev: http://cr.openjdk.java.net/~iignatyev/8006683/webrev.01/
>>>>>>>>>
>>>>>>>>> PS compiler/whitebox/IsMethodCompilableTest fails due to
>>>>>>>>> JDK-8007270
>>>>>>>>>
>>>>>>>>> On 01/31/2013 04:28 AM, Vladimir Kozlov wrote:
>>>>>>>>>> On 1/30/13 4:12 PM, Igor Ignatyev wrote:
>>>>>>>>>>> Vladimir, thank you for your feedback.
>>>>>>>>>>>
>>>>>>>>>>>> Could you also add call to get
>>>>>>>>>>>> compilation level code->comp_level() of compiled code?
>>>>>>>>>>> Add this is not a problem, but then we will need to have a
>>>>>>>>>>> copy of
>>>>>>>>>>> enum
>>>>>>>>>>> 'CompLevel' in java code. Or you suggest to return int?
>>>>>>>>>>
>>>>>>>>>> Just int. And may be not for you current test but in one of
>>>>>>>>>> next to
>>>>>>>>>> check that we have expected comp_level (could be difficult with
>>>>>>>>>> tiered).
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Do we plan to add more WB tests later as separate *.java tests
>>>>>>>>>>>> or we
>>>>>>>>>>>> keep only one CompilerWhiteBoxTest.java and update it?
>>>>>>>>>>> I think it's better to write tests as separates file, because it
>>>>>>>>>>> will
>>>>>>>>>>> allow not care about state of counters after previous tests.
>>>>>>>>>>
>>>>>>>>>> Could you then create subdir test/compiler/whitebox for this and
>>>>>>>>>> future
>>>>>>>>>> WB tests?
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> During testing of my changes I have found strange behavior of
>>>>>>>>>>> compiler:
>>>>>>>>>>> C1 continues compilation of method even after reaching of
>>>>>>>>>>> recompilation's limit (PerMethodRecompilationCutoff). For C2
>>>>>>>>>>> (w/o
>>>>>>>>>>> Tiered) all is correct.
>>>>>>>>>>>
>>>>>>>>>>> Is this behavior correct? Or this is a bug?
>>>>>>>>>>>
>>>>>>>>>>> PS Cause of this behavior is calling of 'Method::
>>>>>>>>>>> set_not_compilable()'
>>>>>>>>>>> with argument 'CompLevel_full_optimization' from
>>>>>>>>>>> 'MethodData::inc_decompile_count()', so for C1 the method is
>>>>>>>>>>> still
>>>>>>>>>>> compilable.
>>>>>>>>>>
>>>>>>>>>> File bug. Recently we separated method not-compilable state
>>>>>>>>>> for C1
>>>>>>>>>> and
>>>>>>>>>> C2, and it is side effect (missed this place).
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Vladimir
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Best regards,
>>>>>>>>>>> Igor Ignatyev
>>>>>>>>>>>
>>>>>>>>>>> On 01/30/2013 11:53 PM, Vladimir Kozlov wrote:
>>>>>>>>>>>> Igor,
>>>>>>>>>>>>
>>>>>>>>>>>> I agree with Mikael to give different name to test.
>>>>>>>>>>>>
>>>>>>>>>>>> Calls to get info in VM looks fine to me. Could you also add
>>>>>>>>>>>> call to
>>>>>>>>>>>> get
>>>>>>>>>>>> compilation level code->comp_level() of compiled code?
>>>>>>>>>>>>
>>>>>>>>>>>> Do we plan to add more WB tests later as separate *.java tests
>>>>>>>>>>>> or we
>>>>>>>>>>>> keep only one CompilerWhiteBoxTest.java and update it?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Vladimir
>>>>>>>>>>>>
>>>>>>>>>>>> On 1/29/13 12:31 PM, Igor Ignatyev wrote:
>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please review the patch
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1. added new functions to WhiteBox:
>>>>>>>>>>>>> public native void deoptimizeAll();
>>>>>>>>>>>>> public native boolean isMethodCompiled(Method method);
>>>>>>>>>>>>> public native boolean isMethodCompilable(Method method);
>>>>>>>>>>>>> public native boolean isMethodQueuedForCompilation(Method
>>>>>>>>>>>>> method);
>>>>>>>>>>>>> public native int deoptimizeMethod(Method method);
>>>>>>>>>>>>> public native boolean setDontInlineMethod(Method method,
>>>>>>>>>>>>> boolean
>>>>>>>>>>>>> value);
>>>>>>>>>>>>> public native int getCompileQueuesSize();
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2. added test 'test/compiler/WBApiTest.java' which exercises
>>>>>>>>>>>>> these
>>>>>>>>>>>>> functions
>>>>>>>>>>>>>
>>>>>>>>>>>>> 3. added result type to macro WB_METHOD_DECLARE
>>>>>>>>>>>>>
>>>>>>>>>>>>> webrev:
>>>>>>>>>>>>> http://cr.openjdk.java.net/~vlivanov/8006683/webrev.00/
More information about the hotspot-compiler-dev
mailing list