Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate changes from latest master branch into csharp branch. #382

Merged
merged 60 commits into from May 13, 2015

Conversation

jtattermusch
Copy link
Contributor

This is preparation for the pull request that will merge csharp into master.

fizbin and others added 30 commits November 25, 2014 12:45
Fix issues 579 and 501 on the code.google.com issues list.

Specifically, large .proto files lead to too much static code, leading to a
compilation error from javac: "code too large". This divides the code used
in static initialization into multiple methods to avoid that error. Also,
this incorporates the fix in issue 501 on the code.google.com issues list
to call registry.add only once per extension.
Change-Id: I4c81808e6ace77d2b5737a43417045321b0b10f0
1. make google/protobuf/stubs/pbconfig.h before making protoc, otherwise it
won't build a freshly checked-out code.
2. Document the build environments that have been tested to work.
3. Add support for MINGW64
Change-Id: I122f1cee71a8a739ea603e52582cb0fa9698f0ed
Include all well-known type protos.
…ts-fixup

A few fix-ups for protoc-artifacts
Change-Id: I66f216c70a19f44637090878d7e442d4d0f8991b
Change-Id: I8f082ee3117ed873ab472a539867ff7cae58e8fd
Change-Id: Iede1dc4e70427663e0d3c5304fa86b3aebf492b7
Previously, extensions with field numbers greater than 268435455 would
result in a compile time error in generated code that looks something
like this:

Foo.java:3178: error: integer number too large: 3346754610
                3346754610);

This is because we were trying to represent the tag number (an
unsigned int) using a java int constant, but java int constants are
signed, and can't exceed Integer.MAX_VALUE.

Fixed by declaring it as a long instead, and casting it down to an
int in the implementation. This is safe, because the tag value always
fits in 32 bis.

Change-Id: If2017bacb4e20af667eaeaf9b65ddc2c30a7709f
Measuring the serialized size of nano protos is now a zero-alloc operation, and serializing a proto now allocates no memory (other than the output buffer) instead of O(total length of strings).

Change-Id: Id5e2ac3bdc4ac56c0bf13d725472da3a00c9baec
Signed-off-by: Charles Munger <clm@google.com>
Forgot to update these in https://android-review.googlesource.com/#/c/109809/

Change-Id: I53f838e2f134f53964161d9620d5ead00c4a3939
https://android-review.googlesource.com/#/c/67890/ removed field
initialization from the ctor, making it just call clear() instead.

When I added the generate_clear option back (as part of the reftypes
compat mode) in https://android-review.googlesource.com/#/c/109530/,
I forgot to ensure that what clear() used to do was inlined in the
constructor.

This change fixes NPEs that are happening for users of
reftypes_compat_mode who rely on unset repeated fields being empty
arrays rather than null.

Change-Id: Idb58746c60f4a4054b7ebb5c3b0e76b16ff88184
Upstreamed from Another Place (cr/57247854).

Change-Id: I2aaf59544c0f5ae21a51891d8a5eeda1dc722c90
Change-Id: I85563b74237d38c1e447b7286f5f6e62d57e3d63
…eger.

When building, some instances expect createMessageTyped to have the signature
(int, Class, long), while others expect (int, Class, int). Simply having
the former signature meant that builds expecting the latter would fail.

This is a cherrypick of change b2a9d43
from master.

Change-Id: Ib02dbf66173510f4edea32c7b43e82c1a7a38aa2
Change-Id: Ie2a9e36276ac35e10b3f8d379b5742d50a0374e9
@IntDef is a support library annotation which allows build tools to
determine the valid set of values for a given integer field when that
field is intended to be restricted like an enum. This avoids the
overhead of enums while still allowing for compile-time type checking
in most circumstances.

Change-Id: Iee02e0b49a8e069f6456572f538e0a0d301fdfd5
I wasn't able to get the clear() method to inline into the
constructor when optimizations are on in proguard. As a result,
every message has an extra superfluous kept method assuming the
app never uses clear() directly.

There are a couple of instances where setting this option false is
necessary in order to get code dexing successfully without hitting
the method limit, e.g. https://goto.google.com/tltzq

In this example, I tried turning on the method/inlining/unique and
method/inlining/short optimizations before resorting to adding the
generate_clear option, but the method count did not decrease. The
clear() methods were contributing over a thousand extra methods.

Change-Id: If6a9651d6a59cdf70b1040d8248779710ac73105
It turns out dex (apparently) was inlining these protected final
methods from ExtendableMessageNano into every message class. Removing
these methods from the base class and inlining their code reduces
the method count by 2 methods / message when the store_unknown_fields
option is on.

Change-Id: I0aa09f2016d39939c4c8b8219601793b8fab301f
When a MessageNano containing a String is serialized into a buffer that
is too small to contain it, and the buffer's boundary happens to be
where the string field's length delimiting varint is serialized,
and the string's length and 3*length have the same length when
encoded as a varint, an IllegalArgumentException is thrown rather than
an OutOfSpaceException.

Github issue: protocolbuffers#292

Change-Id: If478d68cf15bfd0662252d008e42b2bf1ff1c75e
This is less ideal from a dex count perspective because it requires a
new variable for each message, and because most apps have proguard
rules that will ensure that CREATOR classes are retained.

However, it is required to be able to use nano protos inside of AIDL
files, as the autogenerated AIDL code fails to compile otherwise. This
is a substantial benefit as it allows for backwards-compatible
parameters and return types in AIDL methods along the lines of
safeparcel.

Bug: 19084705
Change-Id: I66a2c0424b96cf8ff6b631b186cc4f9407dfc1f4
Include well-known type protos in "make install".
Generate pbconfig.h in generate_descriptor_proto.sh
thomasvl and others added 21 commits May 6, 2015 13:19
Adds conformance test support for Java.
- Comply with flake8, except for indentation width, which is 2.

- Move human-centric metadata to top of 'setup()' call.

- Add Trove classifiers for supported Python versions.

- Use 'find_packages()' + MANIFEST.in to avoid errors in listing
  modules and packages.

Closes protocolbuffers#131 and protocolbuffers#161.
Change-Id: I8ef8664f7facf86028be3f4f0d5d2efc8a685d6d
…-travis

Run conformance tests against Java for the Travis build.
…va_code

Fix java compilation issues when processing large .proto files
Handle 0-length byte buffers in micro and nano protobufs
adding globals() to exec call for python3 compatibility
The referenced bug was fixed in 2007 and has been released in pkg-config-0.23
(16.Jan.2008). The fixed version is widely available.
Uncomment conflict fields from pkg-config files.
Dockerfile for building protoc on Centos 6.6
@googlebot
Copy link

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project, in which case you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.


  • If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address. Check your existing CLA data and verify that your email is set on your git commits.
  • If you signed the CLA as a corporation, please let us know the company's name.

@anandolee
Copy link
Contributor

For cla:no
It is merged from google/protobuf master, all the contributions have been reviewed before except the last contribution "Regenerate UnittestDropUnknownFields.cs".

UnittestDropUnknownFields.cs is modified here because google/protobuf master has changed unittest_drop_unknown_fields.proto

anandolee added a commit that referenced this pull request May 13, 2015
Integrate changes from latest master branch into csharp branch.
@anandolee anandolee merged commit 2d9b1c5 into protocolbuffers:csharp May 13, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet