RFR: 8331193: Return references when possible in GrowableArray

Johan Sjölen jsjolen at openjdk.org
Fri Apr 26 12:16:44 UTC 2024


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.

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

Commit messages:
 - Remove semantics changes in find_sorted
 - Use references more in GA

Changes: https://git.openjdk.org/jdk/pull/18975/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18975&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8331193
  Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/18975.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18975/head:pull/18975

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


More information about the hotspot-dev mailing list