For the cpp runtime, call the `Message::CopyFrom` method.
For the upb runtime, expose the message `MiniTable` and call `upb_Message_DeepCopy`.
PiperOrigin-RevId: 595166276
To satisfy the layering check, we need to depend on :gtest for the headers, in
addition to :gtest_main which provides the main() function.
There are a bunch of formatting changes as a side effect of this, but they
should be harmless.
PiperOrigin-RevId: 594318263
- Stop emitting a clear thunk for without-presence string/bytes fields (was unused, but would link-error it was used since there's no such operation).
- Remove unused clearer_thunk variable in message.cc
- Remove unsafe{} block surrounding non-unsafe BytesMutVTable::new
- Add #[allow(non_snake_case)] on module names (the new mangling added in cr/593048297 puts double-underscore in names which rustc recognizes as non-snake).
PiperOrigin-RevId: 594287606
This is based on the mangling Mercurial used in its fncache system, and leaves
us room to need to escape other symbols in the future.
PiperOrigin-RevId: 593048297
This was missed in the previous CL. DEL characters would be printed unescaped, which makes them more difficult to read but should still be data-preserving.
PiperOrigin-RevId: 592946127
Generic services have been deprecated for about 14 years. This is technically a
breaking change, but fortunately the `php_generic_services` option appears to
have little or no usage. I could not find any examples of open source code
using it.
PiperOrigin-RevId: 592677762
The `VarintParse()` function is ordinarily called only by the proto parser,
which always provides 16 bytes of "slop" space at the end of the buffer. The
ARM-specific optimized path takes advantage of this by always reading at least
8 bytes. However, this caused some test failures in msan due to unit tests not
providing a sufficient amount of initialized padding. This CL fixes the problem
by making sure the unit tests initialize the full 10-byte buffer and adding a
comment stating that this is a precondition of the function.
PiperOrigin-RevId: 592366291
This CL collapses (strings, bytes) into primitives for message.cc::GetterForViewOrMut.
Strings, bytes, and all primitives have been unified, properly parameterized based on RsType.
Returning $pb$::Mut<$RsType$> and $pb$::View<$RsType$> made this possible.
Note that the vtables for primitives take in an additional type arg, so we've added that.
In addition, strings / bytes (aka stringlikes) require a transform, so that'll be invoked on an as-needed basis.
PiperOrigin-RevId: 592328216
Without this it shows up as a spurious warning of dead code from never constructed enum cases (rustc can't 'see' that the value can come across from C++)
PiperOrigin-RevId: 592209619
The x86 microbenchmark speedups here are only representative for packed repeated primitive fields, as they benefit from some improved vectorization.
For normal cases like non-repeated fields, the util/coding microbenchmarks showed roughly 18% for arm and 2-3% for 32 bit x86, 10% for 64 bit x86 (including loop overhead)
PiperOrigin-RevId: 592061508
This allows to reduce binary bloat (all calls to Clear are now defined out of line) and eliminate redundant calls to clear (since we only call it when it is needed).
PiperOrigin-RevId: 590944438
Do more inlining in certain callers of ParseLoop to avoid the extra stack frame.
This reduces the overall cost of maintaining the stack frames in functions like FastMtS1.
PiperOrigin-RevId: 590943926
This won't have much effect over the edition zero migration, since enums in any proto2/proto3 file are either exclusively closed/open, respectively. However, it will prefer enum-level features if there's only a single enum
PiperOrigin-RevId: 590642827
We do not expect well-behaved code to ever rely on this check and well-behaved code should not being paying the price for it. We still need to keep it until b/290091828 is fixed but we can move it to slow out-of-line function.
```
name old cpu/op new cpu/op delta
BM_RepeatedPtrField_Ctor 75.3ns ± 4% 63.8ns ± 1% -15.27% (p=0.000 n=99+86)
```
PiperOrigin-RevId: 590139004