This unifies proto2 and proto3 (and later editions) implementations to incorporate performance optimizations directly referencing unsafe and caching presence field (and offset) originally added in cl/187404278 for proto2 only. This is similar to cl/539189318 which incorporates similar changes for writeFieldsInAscendingOrder().
This change also handles possible extensions for all syntaxes and clarifies when presenceFieldOffset may actually be storing cachedSizeOffset.
PiperOrigin-RevId: 541925703
They are currently unsupported. Up until now we've been generating gencode
assuming that map fields are standard message fields, and the gencode was
expecting thunks such as _serialize to exist, but they don't.
In some toolchains this becomes a linking problem.
PiperOrigin-RevId: 541572265
Using _impl_ makes this trigger on mutations of the first field in _impl_, which makes the triggering change arbitrarily based on field order. Also, if we do TSan validation using the address of a particular field, then there will be false positive data races detected in cases where that field is mutated concurrently with a call to an accessor for another field in the message.
Note that TSan validation is currently disabled so this should be a no-op.
PiperOrigin-RevId: 540978247
available.
This prevents flushing hasbits unnecessarily, and enables the fast dispatch to the next field instead of returning back to ParseLoop to do it.
PiperOrigin-RevId: 540717028
Fixes the following compiler warning:
```
external/com_google_protobuf/src/google/protobuf/compiler/retention.cc:236:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<google::protobuf::SourceCodeInfo_Location*>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
```
Closes#13062
COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/13062 from thomasegriffith:main 9f1b766fba
PiperOrigin-RevId: 540621306
`TextFormat::ParseFieldValueFromString` would take `const std::string &` as the input, but it's a read-only string and immediately passed to `ArrayInputStream`. This CL will change it to `absl::string_view`.
PiperOrigin-RevId: 540609068
This has caused repeated issues due to the fact that it checks the entire repo. Most recently, it decided to complain about a typo in a file that hasn't been touched in 5 years.
PiperOrigin-RevId: 540356791
This unifies proto2 and proto3 (and later editions) implementations to incorporate performance optimizations directly referencing unsafe and caching reflection presence field (and offset) to all syntaxes. These optimizations were originally added in cl/187404278 for proto2 only.
These optimizations do not seem to be meaningfully proto2/3-specific. The UnsafeUtil methods simply wrap the corresponding Unsafe methods. Presence bit fields are used in the same way for proto3, but this optimization seems to predate proto3 optional.
While in there, better document how the buffer encoding and mask/offsets work.
PiperOrigin-RevId: 540320373
Our automation can't currently update release branches, so we need to enable staleness tests as presubmits to force manual regeneration.
PiperOrigin-RevId: 540094169
This implements the associated type change suggested by dmitrig@.
I don't foresee use cases that would make `ViewFor` allowing multiple `T` to be
useful, rather than confusing.
This also implements some suggested wording changes that I agree with.
PiperOrigin-RevId: 540024883