Joshua Haberman
adb6580d97
Let the JIT emit hasbit-setting code in addition to calling a callback.
...
This leads to a major (20-40%) improvement in the parsetoproto2
benchmark with small messages. We now are faster than proto2 in all
apples-to-apples comparisons, at least given the (admittedly
limited) set of benchmarks in this source tree.
13 years ago
Joshua Haberman
a5e6a7b029
Fix stack alignment on OS X.
13 years ago
Joshua Haberman
8bdc6d233e
Prime the decoder buf for modest perf improvement on small messages.
13 years ago
Joshua Haberman
d5324d1d5c
Some Makefile cleanup.
13 years ago
Joshua Haberman
7935b702c5
More cleanup.
13 years ago
Joshua Haberman
282b34529f
Some source cleanup/commenting.
13 years ago
Joshua Haberman
08e7ad94f9
Renamed lang_ext -> bindings, README updates.
13 years ago
Josh Haberman
3387ccaffd
Avoid longjmp() in successful case.
...
Speeds up short messages by 15-25%.
13 years ago
Josh Haberman
a090a7abf6
Fix proto2 benchmark for newer proto2.
13 years ago
Joshua Haberman
06b8181f97
Benchmark to parse into proto2 messages.
13 years ago
Joshua Haberman
40f271b854
x86 JIT: add callback specializations for a 10% speedup when parsing to struct.
13 years ago
Joshua Haberman
fa82e4fbf0
Benchmark JIT vs no JIT without forcing a whole-project recompile.
13 years ago
Joshua Haberman
51d4e295a4
Python: fleshed out accessors.
13 years ago
Joshua Haberman
fe3df2c9bc
Python: basic SymbolTable support and empty accessors.
13 years ago
Joshua Haberman
2cf930ef51
Python: fixed object cache and fleshed out MessageDef a bit.
13 years ago
Joshua Haberman
25cdf1e6f7
Fixed overzealous assert().
13 years ago
Joshua Haberman
336268b3d7
Fixed a few memory leaks and Makefile tweaks.
13 years ago
Joshua Haberman
be74572455
Fixed off-by-one stack allocation error.
13 years ago
Joshua Haberman
fc9c49860b
Python: Implemented weak-ref'd object cache.
...
Also some preliminary work on upb.MessageDef.
13 years ago
Joshua Haberman
a1bb3dc448
Makefile target for running Python tests.
13 years ago
Joshua Haberman
ce425df78c
More Python upb.FieldDef functionality and tests.
13 years ago
Joshua Haberman
487bfdfc06
Begin port of Python extension to new APIs.
13 years ago
Joshua Haberman
6981e468a3
More work on Lua extension, and consequent core refactoring.
14 years ago
Joshua Haberman
c2c853fa21
More work on Lua extension.
14 years ago
Joshua Haberman
57abebaaf9
Fixed "make descriptorgen".
14 years ago
Joshua Haberman
56984e8db8
Significant work on Lua extension.
...
Also changes in core library to accommodate.
14 years ago
Joshua Haberman
92b4c38fa5
Added comment about how to disassemble JIT output.
14 years ago
Joshua Haberman
daf36f0747
Get rid of upb_symtabtxn.
...
This type was nothing but a map of defs.
We can as easily just pass an array of defs
into upb_symtab_add().
14 years ago
Joshua Haberman
b6ca2718c8
Make Lua extension build again.
14 years ago
Joshua Haberman
10265aa56b
Directory restructure.
...
Includes are now via upb/foo.h.
Files specific to the protobuf format are
now in upb/pb (the core library is concerned
with message definitions, handlers, and
byte streams, but knows nothing about any
particular serializationf format).
14 years ago
Joshua Haberman
6a1f3a6693
Major refactoring: upb_string is gone in favor of upb_strref.
14 years ago
Joshua Haberman
559e23c796
Major refactoring: abandon upb_msg, add upb_accessors.
...
Next on the chopping block is upb_string.
14 years ago
Joshua Haberman
a503b8859c
Make all handlers objects refcounted.
...
I'm realizing that basically all upb objects
will need to be refcounted to be sharable
across languages, but *not* messages which
are on their way out so we can get out of
the business of data representations.
Things which must be refcounted:
- encoders, decoders
- handlers objects
- defs
14 years ago
Joshua Haberman
2ccebb74c3
Add proof-of-concept C++ wrapper header.
14 years ago
Joshua Haberman
0941664215
Add startseq/endseq handlers.
...
Startseq/endseq handlers are called at the beginning
and end of a sequence of repeated values. Protobuf
does not really have direct support for this (repeated
primitive fields do not delimit "begin" and "end" of
the sequence) but we can infer them from the bytestream.
The benefit of supporting them explicitly is that they
get their own stack frame and closure, so we can avoid
having to find the array's address over and over and
deciding if we need to initialize it.
This will also pave the way for better support of JSON,
which does have explicit "startseq/endseq" markers: [].
14 years ago
Josh Haberman
74102e836d
JIT: factor out push/pop frame into macros.
14 years ago
Joshua Haberman
d619852e06
Change dispatcher error handling model.
...
Now the dispatcher will call error handlers
instaed of returning statuses that the caller
has to constantly check.
14 years ago
Joshua Haberman
a5506318aa
Fix JIT for new interface.
14 years ago
Joshua Haberman
2fe68c6a5a
Fix aliasing violation.
14 years ago
Joshua Haberman
3231fd0fdd
Vastly improved/simplified the upb_handlers API.
14 years ago
Joshua Haberman
ea2a80840e
More renaming.
14 years ago
Joshua Haberman
1782f28c86
Documentation, some type renaming, nix unknown handler for now.
14 years ago
Joshua Haberman
eb622c0531
Split upb_stream -> upb_bytestream/upb_handlers.
14 years ago
Joshua Haberman
f74534b42a
Decoder redesign in preparation for packed fields and start/endseq.
14 years ago
Joshua Haberman
4a99abba12
Refactor varint encoding/decoding.
14 years ago
Joshua Haberman
7cf5893dcc
Revise/clarify comment about clear() implementation.
14 years ago
Joshua Haberman
6955dfb302
Calculate and print string sizes in test messages.
14 years ago
Joshua Haberman
4d209efd23
Merge branch 'master' of git@github.com:haberman/upb
14 years ago
Joshua Haberman
6b16e74cdc
Fix GDB JIT registration on Linux.
14 years ago
Joshua Haberman
c110061a73
Small change to make Lua extension compile again.
14 years ago