| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Change-Id: I3ff47358e66965cab34736eed2a477ae29f02f61
|
| |
|
| |
|
|
|
| |
Since Java 7, Strings produced with String.substring do not share byte arrays.
|
| |
|
| |
|
|
|
|
| |
Change-Id: Ib2bb5042deaabdf452d5be2ad1ce40d739ad8d1b
|
|
|
|
|
|
| |
Also fixed javadoc errors.
[ci skip]
|
|
|
|
| |
Change-Id: I43f7e04a53d1445dfa86db310bdb18ceb446398c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently some public API methods are defined in GenreatedMessage.java
and they have a generric return type:
class GeneratedMessage {
class Builder<BuilderType extends Builder<BuilderType>> {
public BuilderType setField(...);
public BuilderType setExtension(...);
}
}
With these definitions, the compiled byte code of a callsite will have
a direct reference to GeneratedMessage. For example:
fooBuilder.setField(...);
becomes:
##: invokevirtual // Method Builder.setField:(...)LGeneratedMessage.Builder
##: checkcast // class Builder
This will prevent us from updating generated classes to subclass a
different versioned GeneratedMessageV3 class in the future (we can't do
it in a binary compatible way).
This change addresses the problem by overriding these methods directly
in the generated class:
class Foo {
class Builder extends GeneratedMessage.Builder<Builder> {
public Builder setField(...) {
return super.setField(...);
}
}
}
After this, fooBuilder.setField(...) will be compiled to:
##: invokevirtual // Method Builder.setField:(...)LFoo.Builder
The callsites will no longer reference GeneratedMessage directly and we
can change Foo to subclass GeneratedMessageV3 without breaking binary
compatiblity.
The downside of this change is:
1. It increases generated code size (though it saves some instructions
on the callsites).
2. We can never stop generating these overrides because doing that
will break binary compatibility.
Change-Id: I879afbbc1325a66324a51565e017143489b06e97
|
| |
|
| |
|
| |
|
|
|
|
| |
This includes all internal changes from around May 20 to now.
|
| |
|
|\ |
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Java files are moved to un-do the hack in the prevous commit, which
moved the java files to the original position for integration.
|
|
|
|
|
|
|
|
|
| |
Moving the files to their original location, so that opensource changes
can be picked during the internal merge. Those files will be moved into
the correct location after merging with internal code.
Note: do NOT merge this into master without the other internal
down-integration commit.
|
| |
|
| |
|
|
protobuf/java will become a parent pom that will contain two modules:
core - contains all of the code for the protobuf-java artifact
util - contains all of the code for the protobuf-java-util artifact
Also cleaned up various Maven warnings.
|