Commit Graph

88 Commits

Author SHA1 Message Date
Evan Huus ade9361071 Loop the timing test 128 times so that statistics work more in our favour.
Print the times to stdout so that in a failure case we can see how badly it
was off.

svn path=/trunk/; revision=48590
2013-03-27 17:30:12 +00:00
Evan Huus 0d2e02954f Add a timing test to check that the block allocator is actually faster than the
simple one. At the moment it seems to be between 2x and 2.5x faster in the
common case (a simple sequence of allocations followed by free_all).

svn path=/trunk/; revision=48588
2013-03-27 16:37:12 +00:00
Evan Huus 0a8b96a41b Generalize the allocator test function and use it to test the simple and
the strict allocators as well.

svn path=/trunk/; revision=48586
2013-03-27 12:43:29 +00:00
Evan Huus 7959275717 Copy over a missing flag in the block allocator to fix the build-bot failure
at http://buildbot.wireshark.org/trunk/builders/Ubuntu-12.04-x64/builds/4250

Adding --verbose to get the random seed has payed off already!

svn path=/trunk/; revision=48584
2013-03-27 12:01:36 +00:00
Evan Huus 64af18ddda Fix -Wshadow that happens with some old versions of gcc (not mine, for some
reason).

Don't use g_assert_cmpuint, since it apparently causes warnings on windows that
I don't know how to get rid of safely without breaking the conditions being
checked.

svn path=/trunk/; revision=48575
2013-03-27 02:28:45 +00:00
Evan Huus 4252a18c90 Greatly improve wmem tests, including random fuzz-style testing. Improve
assertions in the block allocator, and fix one rare potential underflow caught
by the improved tests.

The tests now take ~200MB and 5-10 seconds to run. Hopefully this is small
enough for the build-bots to handle, if not then we can reduce the max
allocation size or max iterations to suit.

svn path=/trunk/; revision=48574
2013-03-27 00:27:45 +00:00
Guy Harris 986d423b5b Replace implicit conversions with explicit casts.
svn path=/trunk/; revision=48533
2013-03-24 18:17:21 +00:00
Evan Huus d30dbcbf9e Fix a few small bugs in the block allocator and add some more assertions to it
that run during normal usage. Simplify, expand and enable the test coverage,
since what's there now passes.

svn path=/trunk/; revision=48522
2013-03-24 12:53:22 +00:00
Evan Huus 8ccea72f10 Initial simple block allocator tests, not being run by default because they're
failing. I suspect it has to do with my lack of understanding of glib's unit
test framework, not the code being tested.

svn path=/trunk/; revision=48519
2013-03-24 00:45:32 +00:00
Evan Huus 4ba4e1df70 Add wmem unit test binary (still empty) to nmake build and to
the unit test part of the test suite. Once I know it's building and
running properly on the buildbots then I'll actually start writing tests.

svn path=/trunk/; revision=48517
2013-03-23 23:51:07 +00:00
Bill Meier 0df5a9390d From beroset:
remove C++ incompatibilities
 https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416 attachment #10397

svn path=/trunk/; revision=48438
2013-03-20 01:18:10 +00:00
Evan Huus 4ef09071b5 Add empty placeholder wmem test suite. Hopefully my automake skills were
up for the challenge.

svn path=/trunk/; revision=48436
2013-03-20 00:28:36 +00:00
Evan Huus 8a874b238e Trivial tweaks to clean up cppcheck warnings.
svn path=/trunk/; revision=48435
2013-03-20 00:10:07 +00:00
Evan Huus b7b30a7cdf More block allocator fixes and cleanup. Most of the issues seem to have been
from one case I consistently forgot when typing it up originally, even though
it's clearly listed several places in my design notes.

Also include an #if0-ed out block of code to redirect emem to wmem for easy
testing (since there are very few common dissectors that use wmem right now).

svn path=/trunk/; revision=48434
2013-03-20 00:04:01 +00:00
Evan Huus 9be306d162 Add more and stricter wmem block allocator debug functions.
Re-enable the block allocator by default in trunk since it is much better
tested now - I've spent some time with a hack redirecting all emem allocations
to wmem, so it's seen a lot of traffic. I will still likely turn it off for
1.10 whenever that branches, just to be safe.

svn path=/trunk/; revision=48416
2013-03-19 15:32:42 +00:00
Jaap Keuter 827eb58b04 From David Arnold:
Replace use of INCLUDES with AM_CPPFLAGS in all Makefiles to placate recent autotools.

svn path=/trunk/; revision=48261
2013-03-12 06:53:39 +00:00
Evan Huus e9e54d662f Minor improvements to block allocator debugging.
svn path=/trunk/; revision=48252
2013-03-11 19:24:51 +00:00
Evan Huus 7f738de7b4 Glib docs recommend using the slice API if you know you won't need to realloc.
svn path=/trunk/; revision=48228
2013-03-10 15:04:04 +00:00
Evan Huus e7de549c8c Add the appropriate new WS_DLL_* declarations to the wmem API.
svn path=/trunk/; revision=48220
2013-03-09 20:25:44 +00:00
Evan Huus aafe8b18e9 Remove the wmem slab. It was an optimization mimicking the emem slab
(removed in r48218) which did nothing particularly useful. Also lets us remove
another debugging environment variable.

svn path=/trunk/; revision=48219
2013-03-09 20:16:33 +00:00
Evan Huus 3e919d2b03 Add a debug function (ifdef'ed out by default) and fix another two bugs found by
reading it's output.

svn path=/trunk/; revision=48198
2013-03-08 18:50:34 +00:00
Evan Huus 680d806afc Add another pair of assertions.
svn path=/trunk/; revision=48197
2013-03-08 18:27:29 +00:00
Evan Huus 66688f928f Use only simple allocators until I can work out the kinks with the block
allocator.

svn path=/trunk/; revision=48194
2013-03-08 17:52:13 +00:00
Evan Huus 1a78a717ed Should fix assertion failure seen by Anders on -dev.
https://www.wireshark.org/lists/wireshark-dev/201303/msg00081.html

svn path=/trunk/; revision=48193
2013-03-08 17:51:45 +00:00
Evan Huus 5c05c9e0e1 Export some wmem functions using the new scheme.
svn path=/trunk/; revision=48019
2013-03-02 21:29:05 +00:00
Balint Reczey 1ebdb2e521 Export libwireshark symbols using WS_DLL_PUBLIC define
Also remove old WS_VAR_IMPORT define and related Makefile magic
everywhere in the project.

svn path=/trunk/; revision=47992
2013-03-01 23:53:11 +00:00
Bill Meier 96a24cc79f Fix spelling/typos found using a list of commonly misspelled words.
The misspellings were mostly in comments but some were
in text strings visible to the user.


svn path=/trunk/; revision=47899
2013-02-26 04:42:26 +00:00
Evan Huus 48e188b560 Remove blocks from the free list when gc'ing them in wmem's block allocator.
Thanks to Jakub Zawadzki for catching this one.

svn path=/trunk/; revision=47843
2013-02-23 22:26:18 +00:00
Evan Huus 9b45e7ad74 Fix an *extraordinarily* embarassing copy-paste error. Much thanks to Bill
Meier for finding it before it made it into a stable release!

svn path=/trunk/; revision=47816
2013-02-22 16:41:41 +00:00
Evan Huus 3b5017cc0e Validate that the pointer passed to wmem_free is valid when using the
simple allocator. Thanks to Bill Meier for suggesting this.

svn path=/trunk/; revision=47815
2013-02-22 16:38:22 +00:00
Evan Huus cb679f279b If the requested wmem allocator is NULL, take that to mean manually-managed
memory. This permits using manually-scoped versions of certain wmem structures.

svn path=/trunk/; revision=47657
2013-02-14 16:23:22 +00:00
Evan Huus 5071e8b627 Add an option for bypassing the wmem slab similar to the one for
bypassing the emem slab, to aid in debugging with valgrind.

svn path=/trunk/; revision=47656
2013-02-14 16:07:25 +00:00
Evan Huus 8c8533e0dd Use the new realloc API when growing a string-buffer.
svn path=/trunk/; revision=47571
2013-02-08 17:09:18 +00:00
Evan Huus e1bfc1c61c Fix issue where using realloc() to shrink a chunk could result in
multiple adjacent free chunks. When splitting a used chunk, the resulting
extra unused chunk may need to be merged to its right.

svn path=/trunk/; revision=47552
2013-02-08 02:40:05 +00:00
Evan Huus ebc2067e30 Add explicit casts to pacify MSVC buildbot.
svn path=/trunk/; revision=47551
2013-02-08 02:15:03 +00:00
Evan Huus 9fcb518818 Make use of the new garbage-collection routines when closing a file.
svn path=/trunk/; revision=47550
2013-02-08 01:58:04 +00:00
Evan Huus b636b88646 Expose the new wmem API functions, and use a consistent order of
alloc/free/realloc across all of wmem.

svn path=/trunk/; revision=47548
2013-02-08 01:47:48 +00:00
Evan Huus eea6cb6315 Rewrite the block allocator to support the new wmem API (realloc, free, gc).
Some interesting algorithmic stuff going on in here for those who are
interested.

This completes the allocator rewrites for the API additions, so those can be
exposed now.

svn path=/trunk/; revision=47547
2013-02-08 01:38:03 +00:00
Evan Huus 0cb2a257de Convert the strict allocator to use a hash table similarly to the simple
allocator, allowing it to implement realloc and free.

svn path=/trunk/; revision=47222
2013-01-23 02:31:04 +00:00
Evan Huus 681a3ad5a2 Handle NULL-pointers and 0-lengths in a much simpler allocator-agnostic way,
and document the fact that allocator authors don't have to care.

svn path=/trunk/; revision=47220
2013-01-23 01:11:36 +00:00
Evan Huus c25c5915c5 Add wrapper functions for realloc, free and gc, but don't expose them in the
header yet as not all allocators implement them.

svn path=/trunk/; revision=47219
2013-01-23 00:59:38 +00:00
Evan Huus 7ad70545cc More fixes for handling of NULL-pointers and 0-lengths in calls to
malloc/realloc/free.

svn path=/trunk/; revision=47215
2013-01-22 18:46:35 +00:00
Evan Huus f3ba854bec NULL is also a valid return for g_malloc if the requested size is 0.
svn path=/trunk/; revision=47172
2013-01-20 02:47:58 +00:00
Evan Huus 8df0020ac6 Don't add the new block to the hash table if it is NULL, which is a
valid non-error return from realloc if the new requested size is 0.

svn path=/trunk/; revision=47171
2013-01-20 02:44:32 +00:00
Evan Huus 669b98bb5f Rewrite wmem_allocator_simple to track allocations using a GHashTable instead of
a GSList. This permits it to implement the new realloc and free functions. Also
fill in an empty gc function, since there isn't much it can do as far as
garbage-collection goes.

svn path=/trunk/; revision=47169
2013-01-19 19:56:20 +00:00
Evan Huus 21453d5db6 Add three more slots to the wmem allocater definition (not yet implemented
by any particular allocator) and better document the entire structure.

svn path=/trunk/; revision=47163
2013-01-19 16:15:32 +00:00
Evan Huus e963cec25c Add missing header #include as the slab is part of the API even if nobody
outside wmem itself uses it yet.

svn path=/trunk/; revision=47094
2013-01-15 16:27:17 +00:00
Evan Huus b0a0372cff Use the block allocator for wmem's file-scope by default.
svn path=/trunk/; revision=47093
2013-01-15 16:25:24 +00:00
Evan Huus bab105d094 Add convenience macros wmem_new and wmem_new0
svn path=/trunk/; revision=46941
2013-01-04 22:11:13 +00:00
Evan Huus 8331c0e495 Add a cast to pacify MSVC.
svn path=/trunk/; revision=46850
2012-12-29 21:34:57 +00:00