On Tue, 30 Jul 2024 07:16:21 GMT, Kim Barrett <kbarr...@openjdk.org> 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

Reply via email to