зеркало из https://github.com/mozilla/gecko-dev.git
8855262939
Since the introduction of the STL wrappers, they have included mozalloc.h, and multiple times, we've hit header reentrancy problems, and worked around them as best as we could. Taking a step back, all mozalloc.h does is: - declare moz_* allocator functions. - define inline implementations of various operator new/delete variants. The first only requires the functions to be declared before they are used, so mozalloc.h only needs to be included before anything that would use those functions. The second doesn't actually require a specific order, as long as the declaration for those functions comes before their use, and they are either declared in <new> or implicitly by the C++ compiler. So all in all, it doesn't matter that mozalloc.h is included before the wrapped STL headers. What matters is that it's included when STL headers are included. So arrange things such that mozalloc.h is included after the first wrapped STL header is fully preprocessed (and all its includes have been included). |
||
---|---|---|
.. | ||
staticruntime | ||
moz.build | ||
mozalloc.cpp | ||
mozalloc.h | ||
mozalloc_abort.cpp | ||
mozalloc_abort.h | ||
mozalloc_oom.cpp | ||
mozalloc_oom.h | ||
msvc_raise_wrappers.cpp | ||
msvc_raise_wrappers.h | ||
throw_gcc.h | ||
throw_msvc.h |