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

David Holmes dholmes at openjdk.org
Mon Nov 14 00:16:16 UTC 2022


On Fri, 11 Nov 2022 08:47:39 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:
> 
>   Mark constructors explicit

> 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.

The default initial capacity is 2, the explicit initial capacities are not 2 and in many case >>>2. So without an explicit capacity passed in these GrowableArrays would likely waste a lot of time unnecessarily growing. I don't think either of these parameters should really have a default value - in which case the order could have remained as it was.

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

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


More information about the hotspot-dev mailing list