RFR(M): 8007288: Additional WB API for compiler's testing

Igor Ignatyev igor.ignatyev at oracle.com
Wed Apr 3 12:35:05 PDT 2013


 >>> compileBroker.cpp - add assert() to check that.
 >> If I add it, WB.enqueueMethodForCompilation() will trigger this assert,
 >> e.g. in test 'compiler/whitebox/EnqueueMethodForCompilationTest'.
 >
 > Which means the test introduces the case which never happens in normal
 > execution. I am not sure it is good or bad.
 > You can relax assert with WhiteBoxAPI check. I really want this assert
 > for normal execution.
i added assert and changed 'NonTieredCompPolicy::initial_compile_level' 
since it return 'CompLevel_full_profile' instead of 
'CompLevel_full_optimization' for non-tiered C2 with Xcomp. sorry, i 
missed this it due to poor preprocessor in my brain.

>>> compilationPolicy.cpp - I don't think the change is correct since
>>> is_compile(CompLevel_any) returns false.
>> 'comp_level == CompLevel_any' is the same that 'comp_level ==
>> CompLevel_all' and this situation is processed in
>> compilationPolicy.cpp:124, so I think that it's correct, isn't it?
>> I can add explicit checking for equality to 'CompLevel_any'.
should i add this check?

> You are right about CompLevel_any. What about next check in
> m->is_not_compilable():
>
>    if (is_method_handle_intrinsic())
>      return !is_synthetic();  // the generated adapters must be compiled
>
even if CompilationPolicy::can_be_compiled() return 'true' for invalid 
comp_level, method won't be compiled since 
CompileBroker::compiler(comp_level) will be 'NULL' in 
CompileBroker::compile_method():

AbstractCompiler *comp = CompileBroker::compiler(comp_level);
if (comp == NULL || !comp->can_compile_method(method) ||
     compilation_is_prohibited(method, osr_bci, comp_level)) {
   return NULL;
}

updated webrev: http://cr.openjdk.java.net/~iignatyev/8007288/webrev.02/

Best regards,
Igor Ignatyev

On 04/02/2013 11:19 PM, Vladimir Kozlov wrote:
> On 4/2/13 1:49 AM, Igor Ignatyev wrote:
>>  > compileBroker.cpp - add assert() to check that.
>> If I add it, WB.enqueueMethodForCompilation() will trigger this assert,
>> e.g. in test 'compiler/whitebox/EnqueueMethodForCompilationTest'.
>
> Which means the test introduces the case which never happens in normal
> execution. I am not sure it is good or bad.
> You can relax assert with WhiteBoxAPI check. I really want this assert
> for normal execution.
>
>>
>>  > compilationPolicy.cpp - I don't think the change is correct since
>>  > is_compile(CompLevel_any) returns false.
>> 'comp_level == CompLevel_any' is the same that 'comp_level ==
>> CompLevel_all' and this situation is processed in
>> compilationPolicy.cpp:124, so I think that it's correct, isn't it?
>> I can add explicit checking for equality to 'CompLevel_any'.
>
> You are right about CompLevel_any. What about next check in
> m->is_not_compilable():
>
>    if (is_method_handle_intrinsic())
>      return !is_synthetic();  // the generated adapters must be compiled
>
> Thanks,
> Vladimir
>
>>
>>> Could you rename setForceInlineMethod() to testSetForceInlineMethod() to
>>> be more clear what it does?
>> I will rename setForceInlineMethod() and setDontInlineMethod().
>>
>> Best regards,
>> Igor Ignatyev
>>
>> On 04/01/2013 09:30 PM, Vladimir Kozlov wrote:
>>> compileBroker.cpp - add assert() to check that.
>>>
>>> compilationPolicy.cpp - I don't think the change is correct since
>>> is_compile(CompLevel_any) returns false.
>>>
>>> Could you rename setForceInlineMethod() to testSetForceInlineMethod() to
>>> be more clear what it does?
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 4/1/13 7:15 AM, Igor Ignatyev wrote:
>>>> test 'compiler/whitebox/EnqueueMethodForCompilationTest' has failed
>>>> during testing, because 'CompilationPolicy::can_be_compiled()' returns
>>>> 'true' for invalid comp_level (less that -1 or great that 4).
>>>>
>>>> i added method 'is_compile' to check whether a value is valid level of
>>>> compilation and rerun jprt.
>>>>
>>>> in new results:
>>>>    - compiler/whitebox/IsMethodCompilableTest failed on on *-i586-*-c1
>>>> due to JDK-8007270
>>>>    - timeouts in other compiler's tests:
>>>>      * compiler/6663848/Tester
>>>>      * compiler/6711100/Test
>>>>      * compiler/6792161/Test6792161
>>>>      * compiler/6863420/Test
>>>>      * compiler/6863420/Test
>>>>      * compiler/6901572/Test
>>>>      * compiler/7100757/Test7100757
>>>>      * compiler/7119644/TestFloatVect
>>>>      * compiler/7196199/Test7196199
>>>>      * compiler/7199742/Test7199742
>>>>
>>>> updated webrev:
>>>> http://cr.openjdk.java.net/~iignatyev/8007288/webrev.01/
>>>>
>>>> Best regards,
>>>> Igor Ignatyev
>>>>
>>>> On 03/29/2013 01:52 AM, David Chase wrote:
>>>>> (Not a reviewer)
>>>>>
>>>>> Could you run these tests on the "east" JPRT queue and see if they
>>>>> have any problems there?
>>>>> We seem to have some surprisingly slow machines there, and that has
>>>>> caused problems with other tests.
>>>>>
>>>>> David
>>>>>
>>>>>
>>>>> On 2013-03-28, at 5:41 PM, Igor Ignatyev <igor.ignatyev at oracle.com>
>>>>> wrote:
>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> Please review the patch.
>>>>>>
>>>>>> 1. added new functions to WhiteBox:
>>>>>>   public native boolean setForceInlineMethod(Method method, boolean
>>>>>> value);
>>>>>>   public native boolean enqueueMethodForCompilation(Method method,
>>>>>> int compLevel);
>>>>>>   public native void    clearMethodState(Method method);
>>>>>> 2. related changes in not whitebox code:
>>>>>>   - added 'Method::clear_not_*_compilable()' and corresponded
>>>>>> 'AccessFlags::clear_not_*_compilable()'
>>>>>>   - added 'MethodData::init()' - reset method data into original
>>>>>> state. reset all counters, flags
>>>>>> 3. removed useless code:
>>>>>>   - 'if (!TieredCompilation) { comp_level = CompLevel_highest_tier;
>>>>>> }' in CompileBroker::compile_method() -- there is no method calls w/
>>>>>> comp_level != CompLevel_highest_tier in non-tiered
>>>>>>   - 'MethodData::initialize(methodHandle method)' -- declaration w/o
>>>>>> definition
>>>>>> 4. added tests for new WB functions
>>>>>>
>>>>>> webrev: http://cr.openjdk.java.net/~iignatyev/8007288/webrev.00/
>>>>>> jbs: https://jbs.oracle.com/bugs/browse/JDK-8007288
>>>>>> --
>>>>>> Best regards,
>>>>>> Igor Ignatyev
>>>>>


More information about the hotspot-compiler-dev mailing list