linker: only generate log messages when logging is enabled
Avoids some unnecessary work during dlopen/dlclose/dlsym for most
cases.
Bug: 122471935
Test: fewer page faults during app startup
Change-Id: Ie886e1e671066af3c6f3a895f9a8126f209d6660
diff --git a/linker/linker_logger.h b/linker/linker_logger.h
index 1828799..f9fc38e 100644
--- a/linker/linker_logger.h
+++ b/linker/linker_logger.h
@@ -35,10 +35,10 @@
#include <android-base/macros.h>
-#define LD_LOG(type, x...) \
- { \
- g_linker_logger.Log(type, x); \
- }
+#define LD_LOG(type, x...) \
+ do { \
+ if (g_linker_logger.IsEnabled(type)) g_linker_logger.Log(x); \
+ } while (0)
constexpr const uint32_t kLogErrors = 1 << 0;
constexpr const uint32_t kLogDlopen = 1 << 1;
@@ -49,7 +49,12 @@
LinkerLogger() : flags_(0) { }
void ResetState();
- void Log(uint32_t type, const char* format, ...);
+ void Log(const char* format, ...);
+
+ uint32_t IsEnabled(uint32_t type) {
+ return flags_ & type;
+ }
+
private:
uint32_t flags_;