RFR: 8176593: Throwable::getStackTrace performance regression
Jiangli Zhou
jiangli.zhou at oracle.com
Tue Mar 14 18:20:06 UTC 2017
Hi Claes,
Looks good! Thank you for making the changes.
I just noticed you used 4-space for indentation at line 212 and 231. Hotspot coding style is 2-space for indentation.
Thanks!
Jiangli
> On Mar 14, 2017, at 11:09 AM, Claes Redestad <claes.redestad at oracle.com> wrote:
>
> Hi Jiangli,
>
> On 2017-03-14 18:22, Jiangli Zhou wrote:
>> Hi Claes,
>>
>> Thank you for looking into this! The changes look good to me. I have
>> some small suggestions below.
>>
>> I’d suggest to add a comment explaining the
>> java_lang_String::hash_code() call before lookup_shared(). For example,
>> “shared table requires java_lang_String::hash_code()”.
>
> Sure!
>
>>
>> How about changing the following hash_string() calls to
>> AltHashing::murmur3_32() directly? That would avoid the second
>> use_alternate_hashcode() check in hash_string().
>>
>> 206 if (use_alternate_hashcode()) {
>> 207 hash = hash_string(name, len);
>> 208 }
>>
>> 224 if (use_alternate_hashcode()) {
>> 225 hashValue = hash_string(name, len);
>> 226 }
>
> I'm not so sure manually inlining matters here, but I haven't inspected
> the disassembly, but with a little refactoring and it arguably makes the
> intent clearer:
>
> http://cr.openjdk.java.net/~redestad/8176593/hotspot.02/
> http://cr.openjdk.java.net/~redestad/8176593/hotspot.01.02.diff/
>
> Thanks!
>
> /Claes
>
>>
>> Thanks,
>> Jiangli
>>
>>> On Mar 14, 2017, at 9:57 AM, Claes Redestad <claes.redestad at oracle.com
>>> <mailto:claes.redestad at oracle.com>> wrote:
>>>
>>> Hi,
>>>
>>> current implementation of StringTable::lookup_shared computes hash
>>> values twice even when the same hash algorithm is used, which stand out
>>> in profiles as the primary cause for a performance regression on things
>>> like Throwable::getStackTrace.
>>>
>>> By refactoring the logic to not compute hashes using a specific
>>> algorithm more than once we recuperate the regression and actually beat
>>> JDK 8 on reported microbenchmarks.
>>>
>>> Webrev: http://cr.openjdk.java.net/~redestad/8176593/hotspot.01/
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8176593
>>>
>>> Testing: RBT jdk-tier1,hs-runtime-pre-checkin,hs-tier2
>>>
>>> Thanks!
>>>
>>> /Claes
>>>
>>
More information about the hotspot-runtime-dev
mailing list