RFR: JDK-8256844: Make NMT late-initializable
Thomas Stuefe
stuefe at openjdk.java.net
Fri Jul 30 09:35:28 UTC 2021
On Fri, 30 Jul 2021 04:03:57 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:
>> src/hotspot/share/services/nmtPreInit.hpp line 128:
>>
>>> 126: // Returns start of the user data area
>>> 127: void* payload() { return this + 1; }
>>> 128: const void* payload() const { return this + 1; }
>>
>> This is an odd looking overload (that I wouldn't have thought possible). Maybe one of these payloads can be renamed to why it's const.
>
> [Not a review, just a drive-by comment.] This is a normal and idiomatic overload on the const-ness of `this`.
To expand on Kim's answer. This is a way to solve const/nonconst problems like https://github.com/openjdk/jdk/pull/4938/files#r679639391.
You get a const version (suitably returning a write-protected pointer) which the compiler chooses in const code, and a non-const version for non-const code, and no awkward const-casts are needed from the outside.
In this case the implementation is simple enough that I just duplicated it; were it more complex, I'd call one in terms of the other. We do this in other places too, see e.g. `ResourceHashTable::lookup_node`.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4874
More information about the hotspot-dev
mailing list