RFR: 8316669: ImmutableOopMapSet destructor not called

Vladimir Kozlov kvn at openjdk.org
Thu Sep 21 19:31:58 UTC 2023


On Thu, 21 Sep 2023 12:52:33 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:

> Hi all,
> 
>   please review this addition to call the destructor of `ImmutableOopMapSet` before its memory is deleted. There is no functional problem as the destructor is empty, but it is surprising to free new'ed objects without calling its destructor.
> 
> Testing: gha
> 
> Thanks,
>   Thomas

src/hotspot/share/code/codeBlob.cpp line 179:

> 177:   if (_oop_maps != nullptr) {
> 178:     _oop_maps->~ImmutableOopMapSet();
> 179:     FREE_C_HEAP_ARRAY(unsigned char, _oop_maps);

Using FREE_C_HEAP_ARRAY here is concerning (even if it worked for years). CodeBlob should not know what `_oop_maps` is look like inside - he sees its type is `ImmutableOopMapSet*` and not an array.

Thank you for adding the destructor. It should free memory used by `_oop_maps`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15862#discussion_r1333512407


More information about the hotspot-compiler-dev mailing list