RFR: 8292375: Convert ProtectionDomainCacheTable to ResourceHashtable [v7]

Ioi Lam iklam at openjdk.org
Thu Sep 1 07:16:09 UTC 2022


On Wed, 31 Aug 2022 12:39:08 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Please review this simple conversion for the ProtectionDomainCacheTable from Old Hashtable to ResourceHashtable.  There are specific tests for this table in test/hotspot/jtreg/runtime/Dictionary and serviceability/dcmd/vm/DictionaryStatsTest.java.
>> Also tested with tier1-7.
>
> Coleen Phillimore has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix comments, add assert.

I am utterly confused about why we need ProtectionDomainCacheTable at all. The only interface between this class and the rest of the world is:


DictionaryEntry::add_protection_domain() {
 
    WeakHandle obj = ProtectionDomainCacheTable::add_if_absent(protection_domain);
    // Additions and deletions hold the SystemDictionary_lock, readers are lock-free
    ProtectionDomainEntry* new_head = new ProtectionDomainEntry(obj, _pd_set);
}


(and there's code elsewhere for cleaning up this table, but that wouldn't be necessary if no one calls `add_if_absent`!).

Why doesn't DictionaryEntry::add_protection_domain allocate the WeakHandle itself?

I am looking at the JDK 8 code. It seems like ProtectionDomainCacheTable was needed before we had WeakHandle, so we had to do all the reference management by hand:

https://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/87ee5ee27509/src/share/vm/classfile/dictionary.hpp#l137

But for today, is ProtectionDomainCacheTable a relic that can be thrown away?

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

PR: https://git.openjdk.org/jdk/pull/10043


More information about the hotspot-dev mailing list