| Index: third_party/tcmalloc/vendor/src/base/googleinit.h
|
| diff --git a/third_party/tcmalloc/vendor/src/base/googleinit.h b/third_party/tcmalloc/vendor/src/base/googleinit.h
|
| index 62ad84c60251665e5e8fae2139d0714457bc838f..dbf610cb0dd9b3eb7d9070e72093fcef85554705 100644
|
| --- a/third_party/tcmalloc/vendor/src/base/googleinit.h
|
| +++ b/third_party/tcmalloc/vendor/src/base/googleinit.h
|
| @@ -33,19 +33,41 @@
|
| #ifndef _GOOGLEINIT_H
|
| #define _GOOGLEINIT_H
|
|
|
| +#include "base/logging.h"
|
| +
|
| class GoogleInitializer {
|
| public:
|
| - typedef void (*void_function)(void);
|
| - GoogleInitializer(const char* name, void_function f) {
|
| - f();
|
| + typedef void (*VoidFunction)(void);
|
| + GoogleInitializer(const char* name, VoidFunction ctor, VoidFunction dtor)
|
| + : name_(name), destructor_(dtor) {
|
| + RAW_VLOG(10, "<GoogleModuleObject> constructing: %s\n", name_);
|
| + if (ctor)
|
| + ctor();
|
| + }
|
| + ~GoogleInitializer() {
|
| + RAW_VLOG(10, "<GoogleModuleObject> destroying: %s\n", name_);
|
| + if (destructor_)
|
| + destructor_();
|
| }
|
| +
|
| + private:
|
| + const char* const name_;
|
| + const VoidFunction destructor_;
|
| };
|
|
|
| #define REGISTER_MODULE_INITIALIZER(name, body) \
|
| namespace { \
|
| static void google_init_module_##name () { body; } \
|
| GoogleInitializer google_initializer_module_##name(#name, \
|
| - google_init_module_##name); \
|
| + google_init_module_##name, NULL); \
|
| }
|
|
|
| +#define REGISTER_MODULE_DESTRUCTOR(name, body) \
|
| + namespace { \
|
| + static void google_destruct_module_##name () { body; } \
|
| + GoogleInitializer google_destructor_module_##name(#name, \
|
| + NULL, google_destruct_module_##name); \
|
| + }
|
| +
|
| +
|
| #endif /* _GOOGLEINIT_H */
|
|
|