RFR: 8296776: Stop using mtNone as marker for CHeap allocations in GrowableArray [v5]

Thomas Stuefe stuefe at openjdk.org
Tue Nov 15 10:17:07 UTC 2022


On Tue, 15 Nov 2022 09:32:03 GMT, Stefan Karlsson <stefank at openjdk.org> wrote:

>> Today we use mtNone to denote that a GrowableArray should *NOT* be backed by a CHeap allocated array.
>> 
>> I've gotten feedback that it would probably be good to limit the usage of mtNone, and at some point maybe completely remove it.
>> 
>> This patch takes a small step to remove mtNone from the GrowableArray. What's left is only asserts to forbid that value. Those asserts will be trivial to remove when/if mtNone is removed.
>> 
>> Just like in the proposed patch to make MEMFLAGS non-optional in CHeapBitMap (see JDK-[JDK-8296774](https://bugs.openjdk.org/browse/JDK-8296774)), I have thrown around the parameter order for GrowableArray. When looking at the changes to the usages of CHeap-backed GrowableArrays it becomes apparent that all of these usages where forced to provide a value for the initial capacity. When MEMFLAGS move to the front, we can now skip having to figure an initial capacity.
>
> Stefan Karlsson has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Try to fix 32-bit builds

src/hotspot/share/utilities/growableArray.hpp line 603:

> 601: 
> 602:   // Resource allocation
> 603:   uintptr_t bits() const {

Is there still a point to this overload? Can we just init with literal 0 instead?

src/hotspot/share/utilities/growableArray.hpp line 609:

> 607:   // CHeap allocation
> 608:   uintptr_t bits(MEMFLAGS memflags) const {
> 609:     assert(memflags != mtNone, "Must provide a proper MEMFLAGS");

Can be made static?

src/hotspot/share/utilities/growableArray.hpp line 613:

> 611:   }
> 612: 
> 613:   // Arena allocation

Can be made static?

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

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


More information about the hotspot-dev mailing list