Integrated: 8271506: Add ResourceHashtable support for deleting selected entries
    Coleen Phillimore 
    coleenp at openjdk.java.net
       
    Tue Aug  3 17:23:38 UTC 2021
    
    
  
On Thu, 29 Jul 2021 21:00:06 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
> The ResourceHashtable doesn't have a way to delete selected entries based on things like their class has been unloaded, which is needed to replace Hashtable with ResourceHashtable.
> The Nodes of the ResourceHashtable has a Key and Value of  template types.
> template<typename K, typename V>
> class ResourceHashtableNode : public ResourceObj {
> public:
>   unsigned _hash;
>   K _key;
>   V _value;
> ...
> But there's no destructor so that ~K and ~V are not called (if I understand C++ correctly).
> 
> When instantiated with a value that's not a pointer, calling code does this:
> 
>   SourceObjInfo src_info(ref, read_only, follow_mode);
>   bool created;
>   SourceObjInfo* p = _src_obj_table.put_if_absent(src_obj, src_info, &created);
> 
> So if SourceObjInfo has a destructor, it'll have to have a careful assignment operator so that the value copied into the hashtable doesn't get deleted.
> 
> In this patch, I assign the responsibility of deleting the Key and Value of the hashtable to the do_entry function, because it's simple.  If we want to use more advanced unreadable C++ code, someone will have to suggest an alternate set of changes, because my C++ is not up to this.
> 
> Tested with tier1-3, gtest, and upcoming patch for JDK-8048190.
This pull request has now been integrated.
Changeset: f15d6cbc
Author:    Coleen Phillimore <coleenp at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/f15d6cbcaf191b9718ab51b1e8b72938c0abdd6b
Stats:     56 lines in 2 files changed: 55 ins; 0 del; 1 mod
8271506: Add ResourceHashtable support for deleting selected entries
Reviewed-by: iklam, stuefe
-------------
PR: https://git.openjdk.java.net/jdk/pull/4938
    
    
More information about the hotspot-dev
mailing list