While reviewing code in the Valhalla repository I saw that Reflection::array_set has this funny-looking code:
```
if (a->is_objArray()) {
if (value_type == T_OBJECT) {
...
} // what happens in the else case? here
} else {
assert(a->is_typeArray(), "just checking");
}
```
And wondered what would happen if the `value_type == T_OBJECT` check failed, and how is this handled with flattened arrays, given that we have T_FLAT_ELEMENT there.
It turns out that the calling code passes down T_OBJECT even for flat arrays so they do take the `value_type == T_OBJECT` path, so that's fine.
So, I propose that we just replace one of the ifs with an assert.
```
if (a->is_objArray()) {
if (value_type == T_OBJECT) {
...
} // what happens in the else case? here
} else {
assert(a->is_typeArray(), "just checking");
}
```
And wondered what would happen if the `value_type == T_OBJECT` check failed, and how is this handled with flattened arrays, given that we have T_FLAT_ELEMENT there.
It turns out that the calling code passes down T_OBJECT even for flat arrays so they do take the `value_type == T_OBJECT` path, so that's fine.
So, I propose that we just replace one of the ifs with an assert.
- links to
-
Review(master)
openjdk/jdk/28921