RFR: 8331193: Return references when possible in GrowableArray [v11]

Johan Sjölen jsjolen at openjdk.org
Tue Jun 4 10:57:09 UTC 2024


On Tue, 28 May 2024 16:09:19 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:

>> Hi,
>> 
>> This PR introduces the possibility of using references more often when using GrowableArray, where as previously this was only possible when using the `at()` method. This lets us avoid copying and redundant method calls and makes the API more streamlined. After the patch, we can use `at_grow` just like `at` works. The same goes for `top`, `first`, and `last`.
>> 
>> 
>> Some example code:
>> ```c++
>> // Before this patch this worked:
>> GrowableArray<int> arr(8,8,-1); // Pre-fill with 8 -1s
>> int& x = arr.at(7);
>> if (x == -1) {
>>   x = 2;
>> }
>> assert(arr.at(7) == 2, "this holds");
>> // but this was forbidden
>> int& x = arr.at_grow(9, -1); // Compilation error! at_grow returns E, not E&
>> // so we had to do
>> int x = arr.at_grow(9, -1);
>> if (x == -1) {
>>   arr.at_put(9, 2);
>> }
>> 
>> 
>> Thanks.
>
> Johan Sjölen has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Merge remote-tracking branch 'origin/return-reference' into return-reference
>  - Also add test for first and last

Thanks!

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

PR Comment: https://git.openjdk.org/jdk/pull/18975#issuecomment-2147229294


More information about the hotspot-dev mailing list