RFR: 8321033: Avoid casting Array to GrowableArray

Kim Barrett kbarrett at openjdk.org
Wed Jun 5 03:38:56 UTC 2024


On Tue, 4 Jun 2024 20:49:16 GMT, Matias Saavedra Silva <matsaave at openjdk.org> wrote:

> `ModuleEntry::_reads` is declared as an GrowableArray<ModuleEntry*>*, but when stored in a CDS archive, it's assigned to an Array<ModuleEntry*>*. To ensure better type safety, `ModuleEntry::_reads` is changed to a generic pointer which uses two different getters and setters as well as two booleans to ensure the value is interpreted correctly. This was chosen to avoid introducing a new field to the ModuleEntry class, as another pointer and further alignment would increase the size of the ModuleEntry array. Verified with tier1-5 tests.

Changes requested by kbarrett (Reviewer).

src/hotspot/share/classfile/moduleEntry.hpp line 71:

> 69:   Symbol*          _name;              // name of this module
> 70:   ClassLoaderData* _loader_data;
> 71:   void* _reads; // list of modules that are readable by this module

Use a union rather than a void* plus casts.

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

PR Review: https://git.openjdk.org/jdk/pull/19549#pullrequestreview-2097958086
PR Review Comment: https://git.openjdk.org/jdk/pull/19549#discussion_r1626873872


More information about the hotspot-runtime-dev mailing list