protozero: simplify packed field and allow heap growth
This CL makes the code that handles packed repeated
field encoding simpler, more ergonomic and easy to use.
It mainly adds support for dynamic growing on the heap.
The driving rationale of this CL is the upcoming code
that will handle proto parsing and re-encoding without
libprotobuf, which needs to deal with packed fields.
In that context, the code cannot have an upper bound,
it just needs to pass through as many fields as necessary.
This CL catches the occasion to simplify the code that
handles packed fields. The previous architecture was
too clever, had too many extensions points which turned
out to be hard to really extend.
This CL is simplifying that code making the following
assumptions:
- We don't really care about making the stack size
configurable. One size should fit everybody.
- Having a hard-limit for StackAllocated has always been
brittle. There seems to be lot of clever code in ftrace
that tries to size everything accordingly to this limtation.
- Less code and less templates overall, the code seems easier
to reason about now.
Bug: 132880619
Test: perfetto_unittests
Change-Id: Ic3397b101e14482358f9755673ce196c0a3a1bb7
diff --git a/BUILD b/BUILD
index cf821db..80ba731 100644
--- a/BUILD
+++ b/BUILD
@@ -530,6 +530,7 @@
srcs = [
"src/protozero/message.cc",
"src/protozero/message_handle.cc",
+ "src/protozero/packed_repeated_fields.cc",
"src/protozero/proto_decoder.cc",
"src/protozero/scattered_heap_buffer.cc",
"src/protozero/scattered_stream_null_delegate.cc",