On Tue, 30 Jul 2024 07:16:21 GMT, Kim Barrett <[email protected]> wrote:
>> This is value-initialization syntax. Value-initialization of a primitive
>> type is zero-initialization.
>>
>> However, I think we don't need the local variable at all. Here and in the
>> other 5(?) similar places, rather than
>>
>> ResultType ret{};
>> ...
>> ret = jvalue.get_##ResultType();
>> return ret;
>>
>> I think we could just have
>>
>> ...
>> return jvalue.get_##ResultType();
>
> Looks like eliminating the variable doesn't work. It gets used in a
> `DT_RETURN_MARK_FOR` form, which
> needs the address of the return value. That address is obtained using a
> reference. Taking a reference
> to an uninitialized variable is (I think) okay, so long as one doesn't
> attempt to use the uninitialized value.
> But then the assignment could be problematic if it's uninitialized and the
> assignment operator is non-trivial.
> I expect the compiler will optimize away a trivial zero initialization if
> it's not needed. So ensuring it is
> value-initialized seems like the cleanest thing to do.
One day I will remember what this syntax is and does.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20385#discussion_r1696496369