Joshua Haberman
a04627abc8
Added map sorting to binary and text encoders.
...
For the binary encoder, sorting is off by default.
For the text encoder, sorting is on by default.
Both defaults can be explicitly overridden.
This grows code size a bit. I think we could potentially
shave this (and other map-related code size) by having
the generated code inject a function pointer to the map-related
parsing/serialization code if maps are present.
FILE SIZE VM SIZE
-------------- --------------
+86% +1.07Ki +71% +768 upb/msg.c
[NEW] +391 [NEW] +344 _upb_mapsorter_pushmap
[NEW] +158 [NEW] +112 _upb_mapsorter_cmpstr
[NEW] +111 [NEW] +64 _upb_mapsorter_cmpbool
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpi32
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpi64
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpu32
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpu64
-3.6% -8 -4.3% -8 _upb_map_new
+9.5% +464 +9.2% +424 upb/text_encode.c
[NEW] +656 [NEW] +616 txtenc_mapentry
+15% +32 +20% +32 upb_text_encode
-20.1% -224 -20.7% -224 txtenc_msg
+5.7% +342 +5.3% +296 upb/encode.c
[NEW] +344 [NEW] +304 encode_mapentry
[NEW] +246 [NEW] +208 upb_encode_ex
[NEW] +41 [NEW] +16 upb_encode_ex.ch
+0.7% +8 +0.7% +8 encode_scalar
-1.0% -32 -1.0% -32 encode_message
[DEL] -38 [DEL] -16 upb_encode.ch
[DEL] -227 [DEL] -192 upb_encode
+2.0% +152 +2.2% +152 upb/decode.c
+44% +128 +44% +128 [section .rodata]
+3.4% +24 +3.4% +24 _GLOBAL_OFFSET_TABLE_
+0.6% +107 +0.3% +48 upb/def.c
[NEW] +100 [NEW] +48 upb_fielddef_descriptortype
+7.1% +7 [ = ] 0 upb_fielddef_defaultint32
+2.9% +24 +2.9% +24 [section .dynsym]
+1.2% +24 [ = ] 0 [section .symtab]
+3.2% +16 +3.2% +16 [section .plt]
[NEW] +16 [NEW] +16 memcmp@plt
+0.5% +16 +0.6% +16 tests/conformance_upb.c
+1.5% +16 +1.6% +16 DoTestIo
+0.1% +16 +0.1% +16 upb/json_decode.c
+0.4% +16 +0.4% +16 jsondec_wellknown
+3.0% +8 +3.0% +8 [section .got.plt]
+3.0% +8 +3.0% +8 _GLOBAL_OFFSET_TABLE_
+1.6% +7 +1.6% +7 [section .dynstr]
+1.8% +4 +1.8% +4 [section .hash]
+0.5% +3 +0.5% +3 [LOAD #2 [RX]]
+2.8% +2 +2.8% +2 [section .gnu.version]
-60.0% -1.74Ki [ = ] 0 [Unmapped]
+0.3% +496 +1.4% +1.74Ki TOTAL
4 years ago
Joshua Haberman
e8f9eac68c
Added #defines UPB_ENABLE_FASTTABLE and UPB_TRY_ENABLE_FASTTABLE.
...
These control whether fasttable decoding is on.
4 years ago
Joshua Haberman
4ea81ab107
Fixed pedantic warning.
4 years ago
Joshua Haberman
bc1e0b314f
Fixed some strict C89 errors.
4 years ago
Joshua Haberman
2c1664906a
Removed license comments and upb_amalgamation for google3.
4 years ago
Joshua Haberman
b7dc77415a
Added licenses() to all BUILD files.
4 years ago
Joshua Haberman
e3f41de6c7
Split monolithic BUILD file into many build files.
4 years ago
Joshua Haberman
5aa5b77b41
Added simple offset-based accessors for defs, and deprecated old iterators.
4 years ago
Joshua Haberman
b717575cef
Added -Wextra and -Wshorten-64-to-32 and fixed resulting errors. ( #289 )
...
* Added -Wextra and -Wshorten-64-to-32 and fixed resulting errors.
* Disable -Wshorten-32-to-64 since Kokoro is missing Clang.
* Fixed -Wextra warnings for gcc.
* Reordered UPB_UNUSED() to come after declarations.
* Added another -pedantic fix and log CC version.
* Fix compile error and conditionally run use_bazel.sh.
* Moved set -e after use_bazel.sh.
* Fixed typo in conditional.
5 years ago
Joshua Haberman
6c4acba610
Implemented upb_arena_fuse() ( #278 )
...
* WIP.
* WIP.
* Tests are passing.
* Recover some perf: LIKELY doesn't propagate through functions. :(
* Added some more benchmarks.
* Simplify & optimize upb_arena_realloc().
* Only add owned blocks to the freelist.
* More optimization/simplification.
* Re-fixed the bug.
* Revert unintentional changes to parser.rl.
* Revert Lua changes for now.
* Revert the arena fuse changes for now.
* Added last_size to the arena representation.
* Re-applied Lua changes.
* Implemented upb_arena_fuse().
* Fix the compile by re-ordering statements.
* Improve comments.
5 years ago
Joshua Haberman
02c89a8b15
Renamed textencode -> text_encode for greater readability. ( #249 )
5 years ago
Joshua Haberman
4c6dcc3c6b
[textformat]: added missing newline when a message opens. ( #245 )
...
* [textformat]: added missing newline when a message opens.
* Added tostring() support to Lua that prints to text format.
Also fixed a gnarly bug that this exposed.
5 years ago
Joshua Haberman
c4b64e6a20
Slight simplification: NULL arena will avoid creating a new sub-object.
5 years ago
Joshua Haberman
2a85bef825
Generated code interface for maps is complete, though not yet tested.
5 years ago
Joshua Haberman
090a0c33a4
Fixed VLA error and rewrote the map parsing code to be clearer.
5 years ago
Joshua Haberman
c9135e5276
Fixed the build.
5 years ago
Joshua Haberman
e18541a9dd
Added some missing files.
5 years ago
Joshua Haberman
4c57b1fefd
More progress on Lua extension.
5 years ago
Joshua Haberman
d6c3152c0b
Added more Lua tests that are passing.
...
Also ripped out the ctype checking in upb_table, it
was not helpful (didn't help catch bugs) but was causing
problems.
5 years ago
Joshua Haberman
ae66e571d4
Fixed some bugs and added a few more tests.
5 years ago
Joshua Haberman
bfc86d3577
Fixed many bugs, basic Lua test passes!
5 years ago
Joshua Haberman
5239655b99
WIP.
5 years ago
Joshua Haberman
23825332e1
WIP.
5 years ago
Joshua Haberman
27b95c969a
WIP.
5 years ago
Joshua Haberman
9a360ad43d
Moved legacy_msg_reflection.{c,h} -> reflection.{c.h}.
5 years ago
Joshua Haberman
dc58b657ee
New reflection API doesn't need types as parameters for map/array.
...
All tests are passing again.
5 years ago
Joshua Haberman
c486da3970
WIP.
5 years ago
Joshua Haberman
1461da5056
WIP.
5 years ago
Joshua Haberman
da4e616860
Removed type from upb_array also.
6 years ago
Joshua Haberman
56779f09eb
All tests pass again.
6 years ago
Joshua Haberman
cf35baa1ad
Moved macros from upb.h to port_def.inc to avoid leaking them to users. ( #160 )
...
* Use port_def.inc to prevent macros from leaking to users.
* Added helpful comments to port_def.inc/port_undef.inc.
6 years ago
Joshua Haberman
928ef7f2c0
Removed reflection and other extraneous things from the core library. ( #158 )
...
* Removed reflection and other extraneous things from the core library.
* Added missing files and ran buildifier.
* New CMakeLists.txt.
* Made table its own cc_library() for internal usage.
6 years ago
Josh Haberman
32e3f394b4
A few small API tweaks.
...
- Foo_parsenew() -> Foo_parse().
- parse function takes plain (const char*, size_t) instead of
upb_strview. The latter is mainly useful for strings inside
message objects.
6 years ago
Josh Haberman
22ad7121c2
Fixes for google3.
6 years ago
Joshua Haberman
8cd3b9dfa9
Moved some definitions to def.h
6 years ago
Joshua Haberman
cb26d883d1
WIP.
6 years ago
Joshua Haberman
48863ea0be
A lot more tests are working now.
6 years ago
Joshua Haberman
d2f9bec5c6
Removed old-style C++ handlers that relied on UB in favor of more normal ones.
6 years ago
Joshua Haberman
0553eff64a
upb_refcounted is gone! Some tests still to fix.
6 years ago
Josh Haberman
9ea6bb4678
Renamed upb_stringview -> upb_strview for C terseness.
6 years ago
Joshua Haberman
cf0a89ed69
Updated to use the new array accessors.
6 years ago
Joshua Haberman
336402b4d7
WIP, core library compiles now.
6 years ago
Josh Haberman
b79fd65a83
WIP.
6 years ago
Joshua Haberman
ba03d65a8f
Removed unused variable.
6 years ago
Joshua Haberman
694d51f4d6
Changed C API to only define structs, a table, and a few minimal inline functions.
6 years ago
Josh Haberman
e94ac4f757
Moved upb_msg parts that depend on def to a separate msgfactory.{c,h}.
...
Also got rid of the premature "v1" business that was attempting
to create a binary compatibility story.
Also added an in-progress CMakeLists.txt file.
6 years ago
Josh Haberman
1a484d353b
Re-add upb/bindings/stdc++/string.h, which is still used in tests.
6 years ago
Josh Haberman
c0a50de923
Removed a bunch of obsolete code.
...
A lot of this code was experimental or temporarily
useful, but is no longer needed.
6 years ago
Joshua Haberman
c8f6a27e6b
Enforced that upb_msg lives in an Arena only, and other simplifying.
...
upb_msg was trying to be general enough that it could either live in
an arena or be allocated with malloc()/free(). This was too much
complexity for too little benefit. We should commit to just saying
that upb_msg is arena-only.
I also ripped out the code to glue upb_msg to the existing
handlers-based encoder/decoder. upb_msg has its own, small, simple
encoder/decoder. I'm trying to whittle down upb_msg to a small
and simple core.
I updated the Lua extension for these changes. Lua needs some more
work to properly create arenas per message. For now I just created
a single global arena.
6 years ago
Bo Yang
1080117f2b
Revert "Prepare upb_value for encoding/decoding map."
...
This reverts commit f30dd0ff0c
.
7 years ago