A surprising amount of time is/was spent comparing keys in the
std::map red/black tree traversing nodes. Since we don't need
the data truly sorted, instead sort in length buckets. Kills
90k rtl_ustring_compare_withLength calls on startup, around
0.9% of headless start.
Change-Id: Ib23aff151ad50d56bbf2ba3e28882cc81898d9ec
Avoid heap allocating UNO object wrappers for the underlying Node
structures only to convert to Any and immediately free them agian
when we can.
Change-Id: Iae4612e9602f872f5d8cca2e516df594c9f1118c
Now that we have default values for Exception constructor params,
remove lots of boilerplate code.
Change-Id: I620bd641eecfed38e6123873b3b94aaf47922e74
...which is explicitly supported by Boost.Container though, but we cannot use
boost::container::map here as Boost.Container is only available since Boost 1.48
and our base is 1.47 still. However, there appears no need for Children to be
sorted, and std::unordered_map (and thus boost::unordered_map) requires that
pointers to elements are not invalidated by insertions, which we do require.
Change-Id: I70ad6f40318d2bafae53ebb67d84c1c89a7d68f6
libicudata exports a single symbol, icudt52_data (for ICU version 52), and
only libicuuc refers to it.
Change-Id: Ia04356fda20cf8109156ccd1cbbd9091e70adf27
...mostly done with a rewriting Clang plugin, with just some manual tweaking
necessary to fix poor macro usage.
Change-Id: I71fa20213e86be10de332ece0aa273239df7b61a
It's not very efficient, because we generally end up copying it twice -
once into the parameter and again into the destination OUString.
So I create a clang plugin that finds such places and generates a
warning so that we can convert them to pass-by-reference.
Change-Id: I5341a6ea9e3190f4b4c05c42c85595e3dcd83361
...it avoids false warnings about unchecked dynamic_cast results from static
code analyzers, and potentially makes the code a little faster, too. (Most of
these dynamic_casts were kind of a leftover from a very early design that
dispateched on Node type via dynamic_cast instead of a Node::Kind, but which was
much too slow.)
Change-Id: I8db08a1c35783f8ea6c51eed55b11faa2d958807
This reverts commit 753eeac8a641d70ad0c44bb15fa8949ac991f5d9, which added bogus
if (... != 0)
checks after dynamic_casts that cannot fail, making the code now look as if it
was expected that those casts can fail and the code is prepared to handle it
(which it is not). Silencing the false coverity reports will be addressed in a
follow-up commit.
(That commit unfortunately mixed those changes with mass cosmetic changes.)
...for internal loader="com.sun.star.loader.SharedLibrary" components, instead
of exported component_getImplementationEnvironmen (or implicit
CPPU_CURRENT_LANGUAGE_BINDING_NAME). Adapted a few .component files as proof-
of-concept, more to follow.
Change-Id: I82332e0a48e6fc1da245990bb72265fe6e58447e
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>: I wonder why I originally
introduced State::locked in addition to State:ignored in the first place, but
can't find a good reason for that now. So the patch looks ok, though it could be
further simplified to completely get rid of State::locked. Will do that in a
follow-up commit.
Change-Id: If07a07b21effbf42918408a0b60b2d18bdc8665c
A final pass through the code, converting code to use the new
OUString and OString methods that can detect string literals.
Change-Id: Ifa6382335e5650a1c67e52006b26354e0692c710
to use cppu::supportsService and other pieces.
Change-Id: I16893b3d31a8055acd214ff23d01e63d38fe0826
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>