Indeed, this has actually been fixed internally but the changes have not
been released yet.

(Although, the code you referenced is the code to generate the clearFoo()
method, which still must set things to the default)

On Wed, Sep 8, 2010 at 1:05 PM, David Dabbs <dmda...@gmail.com> wrote:

>
> IIRC Java initializes these primitive types as
>
>   private boolean foo_boolean;    // false
>   private int     foo_int;        // 0
>   private long    foo_long;       // 0L
>   private float   foo_float;      // 0.0f
>   private double  foo_double;     // 0.0d
>
> But java_primitive_field.cc unconditionally emits initialization code even
> when the proto -derived default value from is the same as the organic
> default.
>
> Was there a performance reason for including the (seemingly) unnecessary
> init code?
> If not, would there be any harm is NOT explicitly initializing these
> primitive field(s)?
> Seems like not doing so would reduce code size.
>
>
>
> //
> // from java_primitive_field.cc
> //
>
>  JavaType type = GetJavaType(descriptor_);
>  if (type == JAVATYPE_STRING || type == JAVATYPE_BYTES) {
>    // The default value is not a simple literal so we want to avoid
> executing
>    // it multiple times.  Instead, get the default out of the default
> instance.
>    printer->Print(variables_,
>      "  result.$name$_ = getDefaultInstance().get$capitalized_name$();\n");
>  } else {
>    printer->Print(variables_,
>      "  result.$name$_ = $default$;\n");
>  }
>
>
> I didn't go as far as creating a patch in case there were specific reasons
> for the init code.
>
>
> Thanks,
>
> David
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To post to this group, send email to proto...@googlegroups.com.
> To unsubscribe from this group, send email to
> protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/protobuf?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to