зеркало из https://github.com/mozilla/gecko-dev.git
27975ea3b6
This patch essentially creates a separate, static component database for statically-defined CID and contract ID entries, and gives it precedence over the runtime DB. It combines the two separate databases by updating existing code to use lookup functions which understand both databases, and then access all entries through wrappers which defer to the appropriate underlying type. Static component entries require no runtime relocations, and require no writable data allocation aside from one pointer-sized BSS entry per CID, and one bit of BSS per contract ID. To achieve this, all strings in the static lookup tables are stored as indexes into a static string table, all constructor functions live in a switch statement which compiles to a relative jump table, and all writable data for static entries is accessed by indexed lookups into BSS arrays. We also avoid creating nsIFactory entries for static components when possible by adding a CreateInstance method to nsFactoryEntry and the corresponding entry wrapper to directly call the appropriate constructor method, and only create a factory object when required by external code. Differential Revision: https://phabricator.services.mozilla.com/D15035 --HG-- extra : rebase_source : 903a6f31c6290d0090e6765e0e317d1f749c5855 extra : source : b8d2dfdfc324c53ce5aacc822ce52d4e2bfdc31a |
||
---|---|---|
.. | ||
browser | ||
crashtests | ||
gtest | ||
httpserver | ||
mochitests | ||
reftest | ||
unit | ||
unit_ipc | ||
TestBind.cpp | ||
TestCommon.h | ||
TestCookie.cpp | ||
TestNamedPipeService.cpp | ||
TestUDPSocket.cpp | ||
moz.build |