mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-02 02:04:20 +03:00
Delete jemalloc_internal_includes.h (umbrella header)
After the per-TU explicit-include conversion in batches 1-7, no .c file in src/ needs the umbrella anymore. test/jemalloc_test.h.in is the last consumer; it's the template for the header used by unit and stress tests that want all of jemalloc's internals visible, so its #include of the umbrella is replaced with the same set of explicit includes the umbrella used to expand to. No behavioral change for tests. With that, the umbrella is gone. Every translation unit now declares the headers it actually uses, and the hidden-transitive- include patterns that motivated this cleanup are no longer possible to introduce silently -- a missing include now fails at the failing file rather than silently working because something upstream pulled in the world. Step 6 (Option B) of the cyclical-dep cleanup, complete.
This commit is contained in:
parent
d20b19f76b
commit
2502195964
2 changed files with 28 additions and 72 deletions
|
|
@ -1,70 +0,0 @@
|
|||
#ifndef JEMALLOC_INTERNAL_INCLUDES_H
|
||||
#define JEMALLOC_INTERNAL_INCLUDES_H
|
||||
|
||||
/*
|
||||
* jemalloc can conceptually be broken into components (arena, tcache, etc.),
|
||||
* but there are circular dependencies that cannot be broken without
|
||||
* substantial performance degradation.
|
||||
*
|
||||
* Historically, we dealt with this by each header into four sections (types,
|
||||
* structs, externs, and inlines), and included each header file multiple times
|
||||
* in this file, picking out the portion we want on each pass using the
|
||||
* following #defines:
|
||||
* JEMALLOC_H_TYPES : Preprocessor-defined constants and pseudo-opaque data
|
||||
* types.
|
||||
* JEMALLOC_H_STRUCTS : Data structures.
|
||||
* JEMALLOC_H_EXTERNS : Extern data declarations and function prototypes.
|
||||
* JEMALLOC_H_INLINES : Inline functions.
|
||||
*
|
||||
* We're moving toward a world in which the dependencies are explicit; each file
|
||||
* will #include the headers it depends on (rather than relying on them being
|
||||
* implicitly available via this file including every header file in the
|
||||
* project).
|
||||
*
|
||||
* We're now in an intermediate state: we've broken up the header files to avoid
|
||||
* having to include each one multiple times, but have not yet moved the
|
||||
* dependency information into the header files (i.e. we still rely on the
|
||||
* ordering in this file to ensure all a header's dependencies are available in
|
||||
* its translation unit). Each component is now broken up into multiple header
|
||||
* files, corresponding to the sections above (e.g. instead of "foo.h", we now
|
||||
* have "foo_types.h", "foo_structs.h", "foo_externs.h", "foo_inlines.h").
|
||||
*
|
||||
* Those files which have been converted to explicitly include their
|
||||
* inter-component dependencies are now in the initial HERMETIC HEADERS
|
||||
* section. All headers may still rely on jemalloc_preamble.h (which, by fiat,
|
||||
* must be included first in every translation unit) for system headers and
|
||||
* global jemalloc definitions, however.
|
||||
*/
|
||||
|
||||
#include "jemalloc/internal/arena.h"
|
||||
|
||||
/******************************************************************************/
|
||||
/* EXTERNS */
|
||||
/******************************************************************************/
|
||||
|
||||
#include "jemalloc/internal/jemalloc_internal_externs.h"
|
||||
#include "jemalloc/internal/large.h"
|
||||
#include "jemalloc/internal/tcache.h"
|
||||
#include "jemalloc/internal/malloc_dispatch_externs.h"
|
||||
#include "jemalloc/internal/prof.h"
|
||||
#include "jemalloc/internal/background_thread.h"
|
||||
|
||||
/******************************************************************************/
|
||||
/* INLINES */
|
||||
/******************************************************************************/
|
||||
|
||||
#include "jemalloc/internal/jemalloc_internal_inlines_a.h"
|
||||
/*
|
||||
* Include portions of arena code interleaved with tcache code in order to
|
||||
* resolve circular dependencies.
|
||||
*/
|
||||
#include "jemalloc/internal/arena_inlines_a.h"
|
||||
#include "jemalloc/internal/jemalloc_internal_inlines_b.h"
|
||||
#include "jemalloc/internal/tcache_inlines.h"
|
||||
#include "jemalloc/internal/arena_inlines_b.h"
|
||||
#include "jemalloc/internal/malloc_dispatch_inlines.h"
|
||||
#include "jemalloc/internal/jemalloc_internal_inlines_c.h"
|
||||
#include "jemalloc/internal/prof_inlines.h"
|
||||
#include "jemalloc/internal/background_thread_inlines.h"
|
||||
|
||||
#endif /* JEMALLOC_INTERNAL_INCLUDES_H */
|
||||
|
|
@ -47,7 +47,20 @@ extern "C" {
|
|||
# define JEMALLOC_JET
|
||||
# define JEMALLOC_MANGLE
|
||||
# include "jemalloc/internal/jemalloc_preamble.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_includes.h"
|
||||
# include "jemalloc/internal/arena.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_externs.h"
|
||||
# include "jemalloc/internal/large.h"
|
||||
# include "jemalloc/internal/tcache.h"
|
||||
# include "jemalloc/internal/prof.h"
|
||||
# include "jemalloc/internal/background_thread.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_inlines_a.h"
|
||||
# include "jemalloc/internal/arena_inlines_a.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_inlines_b.h"
|
||||
# include "jemalloc/internal/tcache_inlines.h"
|
||||
# include "jemalloc/internal/arena_inlines_b.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_inlines_c.h"
|
||||
# include "jemalloc/internal/prof_inlines.h"
|
||||
# include "jemalloc/internal/background_thread_inlines.h"
|
||||
|
||||
/******************************************************************************/
|
||||
/*
|
||||
|
|
@ -92,7 +105,20 @@ extern "C" {
|
|||
|
||||
# define JEMALLOC_JET
|
||||
# include "jemalloc/internal/jemalloc_preamble.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_includes.h"
|
||||
# include "jemalloc/internal/arena.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_externs.h"
|
||||
# include "jemalloc/internal/large.h"
|
||||
# include "jemalloc/internal/tcache.h"
|
||||
# include "jemalloc/internal/prof.h"
|
||||
# include "jemalloc/internal/background_thread.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_inlines_a.h"
|
||||
# include "jemalloc/internal/arena_inlines_a.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_inlines_b.h"
|
||||
# include "jemalloc/internal/tcache_inlines.h"
|
||||
# include "jemalloc/internal/arena_inlines_b.h"
|
||||
# include "jemalloc/internal/jemalloc_internal_inlines_c.h"
|
||||
# include "jemalloc/internal/prof_inlines.h"
|
||||
# include "jemalloc/internal/background_thread_inlines.h"
|
||||
# include "jemalloc/internal/public_unnamespace.h"
|
||||
# undef JEMALLOC_JET
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue