RFR: 8270333: -XX:+VerifyStringTableAtExit should not do linear search
David Holmes
dholmes at openjdk.java.net
Wed Jul 14 05:17:12 UTC 2021
On Wed, 14 Jul 2021 02:34:19 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.
Changes seem fine, but I don't like your use of templates here.
Thanks,
David
src/hotspot/share/classfile/javaClasses.cpp line 506:
> 504:
> 505: template<bool update>
> 506: unsigned int java_lang_String::hash_code_impl(oop java_string) {
This looks like a really weird way to pass a parameter! Why do we want a template here?
-------------
Marked as reviewed by dholmes (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/4772
More information about the hotspot-runtime-dev
mailing list