Index: third_party/tcmalloc/chromium/src/base/googleinit.h |
diff --git a/third_party/tcmalloc/chromium/src/base/googleinit.h b/third_party/tcmalloc/chromium/src/base/googleinit.h |
index 62ad84c60251665e5e8fae2139d0714457bc838f..a48375d429ddcf3c85e3a0727c142b62e87e493d 100644 |
--- a/third_party/tcmalloc/chromium/src/base/googleinit.h |
+++ b/third_party/tcmalloc/chromium/src/base/googleinit.h |
@@ -33,19 +33,55 @@ |
#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) { |
+ // TODO(dmikurube): Re-enable the commented-out code. |
+ // We commented out the following line, since Chromium does not have the |
+ // proper includes to log using these macros. |
+ // |
+ // Commended-out code: |
+ // RAW_VLOG(10, "<GoogleModuleObject> constructing: %s\n", name_); |
+ // |
+ // This googleinit.h is included from out of third_party/tcmalloc, such as |
+ // net/tools/flip_server/balsa_headers.cc. |
+ // "base/logging.h" (included above) indicates Chromium's base/logging.h |
+ // when this googleinit.h is included from out of third_party/tcmalloc. |
+ if (ctor) |
+ ctor(); |
+ } |
+ ~GoogleInitializer() { |
+ // TODO(dmikurube): Re-enable the commented-out code. |
+ // The same as above. The following line is commented out in Chromium. |
+ // |
+ // Commended-out code: |
+ // 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 */ |