RFR(xs): 8244733: Add ResourceHashtable::compute_if_absent
Ioi Lam
ioi.lam at oracle.com
Tue May 12 04:33:32 UTC 2020
Hi Thomas,
This is something that I've been wanting.
Would it be possible for you to change the VM code so we will have at
least one example of using it for real? How about here :-)
DumpTimeSharedClassInfo* find_or_allocate_info_for(InstanceKlass* k) {
DumpTimeSharedClassInfo* p = get(k);
if (p == NULL) {
assert(!SystemDictionaryShared::no_class_loading_should_happen(),
"no new classes can be loaded while dumping archive");
put(k, DumpTimeSharedClassInfo());
p = get(k);
assert(p != NULL, "sanity");
p->_klass = k;
}
return p;
}
Thanks
- Ioi
On 5/11/20 9:25 PM, Thomas Stüfe wrote:
> Hi all,
>
> May I please have reviews for this enhancement:
>
> JBS: https://bugs.openjdk.java.net/browse/JDK-8244733
> Webrev:
> http://cr.openjdk.java.net/~stuefe/webrevs/8244733--add-resourcehashtable--compute_if_absent/webrev.00/webrev/
>
> A common pattern when using ResourceHashTable is:
>
> if (table.get(k) == NULL) table.add(k,v);
>
> This runs the lookup code twice. By providing a new method which combines
> these two operations we would save one lookup.
>
> The new method is named ResourceHashTable::compute_if_absent() and behaves
> very similar to the similarly named variant in j.u.Map.
>
> Note: Actually replacing caller code will happen in a separate RFE. The
> first caller to use this will be the ClassLoaderStats VM operation - I was
> able to significantly reduce runtime for that vm op. But since that is JFR
> territory and this is more of a runtime topic I wanted to keep the review
> separate.
>
> Thanks, Thomas
More information about the hotspot-runtime-dev
mailing list