RFR: 8292741: Convert JvmtiTagMapTable to ResourceHashtable [v7]

Afshin Zafari duke at openjdk.org
Wed Jan 11 10:10:45 UTC 2023


On Fri, 6 Jan 2023 14:13:05 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> The issue is not the underlying RHT methods but the semantics of the `jvmtiTagMap` methods. If a call to add always expects to add then it should be a fatal error if it actually did an update as that indicates something is broken. Similarly if an update actually does an add.
>
> The JvmtiTagMap code adds/updates and removes the entries like below in two places which could probably be simplified, but I think that's outside the scope of this RFE.   I suggest removing the bool return from add, remove and update, and add the assert(true) in the remove case.  There's already an assert that add/update happened in the other cases.
> 
>  ``` // if the object is not already tagged then we tag it
>   if (found_tag == 0) {
>     if (tag != 0) {
>       hashmap->add(o, tag);
>     } else {
>       // no-op
>     }
>   } else {
>     // if the object is already tagged then we either update
>     // the tag (if a new tag value has been provided)
>     // or remove the object if the new tag value is 0.
>     if (tag == 0) {
>       hashmap->remove(o);
>     } else {
>       hashmap->update(o, tag);
>     }
>   }

The methods of HashmapTable are void and have assert to verify the expected function (add/update/remove) is done.

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

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


More information about the serviceability-dev mailing list