[9] RFR(S): 8072398: assert fails in L1RGenerator::increment_event_counter_impl
Zoltán Majó
zoltan.majo at oracle.com
Thu Feb 5 22:37:52 UTC 2015
Hi Vladimir,
thank you for the review!
Best regards,
Zoltan
On 02/05/2015 06:42 PM, Vladimir Kozlov wrote:
> Looks fine to me.
>
> Thanks,
> Vladimir
>
> On 2/5/15 8:18 AM, Zoltán Majó wrote:
>> Hi,
>>
>>
>> please review the following small patch.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8072398
>>
>> Problem: The reported assert is triggered because the method
>> LIRGenerator::increment_event_counter_impl is called with
>> parameter 'frequency' set to -1.
>>
>> The value originates from Arguments::scaled_freq_log(): If both
>> variables 'freq_log' and 'scale' are small,
>> 'scaled_freq' can become 0 and the function log2_intptr returns -1
>> for the value 0. A similar problem appears if
>> freq_log == 0.
>>
>>
>> Solution:
>>
>> To treat the above mentioned cases graciously, this patch:
>>
>> - Changes Arguments::scaled_freq_log() and
>> Arguments::scaled_compile_threshold() to allow scaling the
>> frequency/threshold by 0.0 and return 0.0 in these cases without
>> calling log2_intptr().
>>
>> - Adds a new condition to Arguments::set_tiered_flags(): Threshold
>> values are *not scaled* if 'CompileThresholdScaling'
>> is 0.0 (behavior equivalent to -Xint). Previously, this functionality
>> was encoded in scaled_freq_log() and
>> scaled_compile_threshold(). Handling this case in set_tiered_flags()
>> results in clearer code.
>>
>> - Improves comments.
>>
>>
>> Webrev: http://cr.openjdk.java.net/~zmajo/8072398/webrev.00/
>>
>> Testing:
>> - manual testing with failing test cases
>> - compiler/arguments/CheckCompileThresholdScaling.java
>> - JPRT
>>
>> Thank you and best regards,
>>
>>
>> Zoltan
>>
More information about the hotspot-compiler-dev
mailing list