RFR: 8270333: -XX:+VerifyStringTableAtExit should not do linear search [v3]

Yumin Qi minqi at openjdk.java.net
Wed Jul 14 15:09:09 UTC 2021


On Wed, 14 Jul 2021 06:02:35 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> The implementation of `-XX:+VerifyStringTableAtExit` used a linear search to check for duplicated strings in the interned string table. This would be excessively slow if there were more than a few thousand strings.
>> 
>> This PR uses a hashtable so we can avoid doing a linear search. The table is sized such that each bucket has 8 items on average.
>> 
>> Since this code is executed only for verification, I added a new `java_lang_String::hash_code_noupdate(oop)` function, so we can avoid causing side effects.
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
> 
>   fixed build and make sure table size is not zero

Looks good, but one question.

src/hotspot/share/classfile/stringTable.cpp line 613:

> 611:  public:
> 612:   size_t _errors;
> 613:   VerifyCompStrings() : _table(unsigned(_items_count + 8 / 8)), _errors(0) {}

I guess you mean unsigned((_items_count + 8) / 8)?

-------------

PR: https://git.openjdk.java.net/jdk/pull/4772


More information about the hotspot-runtime-dev mailing list