4830085f40
Summary: ## Motivation We got this crash T67304907, which shows a `EXC_BAD_ACCESS / KERN_INVALID_ADDRESS` when calling this line: ``` NativeModulePerfLogger::getInstance().asyncMethodCallBatchPreprocessStart(); ``` There are no arguments in that call, so I figured the only error could be when we try to invoke `getInstance()` or `asyncMethodCallBatchPreprocessStart()`. This diff: 1. Removes the `NativeModulePerfLogger::getInstance()` bit. Now NativeModulePerfLogger is used via regular static C functions. So, there's no way that simply invoking one of the logging functions crashes the application: there's no vtable lookup. 2. Inside each logging function, when perf-logging is disabled, the global perflogger should be `nullptr`. This diff makes it so that in that case, we won't execute any code in the control group of the perf-logging experiment. ## Changes **How do we enable NativeModule perf-logging?** - Previously: - `NativeModulePerfLogger::setInstance(std::make_shared<FBReactNativeModulePerfLogger>(...))` - `TurboModulePerfLogger::setInstance(std::make_shared<FBReactNativeModulePerfLogger>(...))`. - Now: - `BridgeNativeModulePerfLogger::enableLogging(std::make_unique<FBReactNativeModulePerfLogger>(...))` - `TurboModulePerfLogger::enableLogging(std::make_unique<FBReactNativeModulePerfLogger>(...))` **How do we do NativeModule perf-logging now?** - Previously: - `NativeModulePerfLogger::getInstance().command(...args)` - `TurboModulePerfLogger::getInstance().command(...args)`. - Now: - `BridgeNativeModulePerfLogger::command(...args)` - `TurboModulePerfLogger::command(...args)`. The benefit of this approach is that each method in `BridgeNativeModulePerfLogger` is guarded with an if check. Example: ``` void moduleCreateConstructStart(const char *moduleName, int32_t id) { NativeModulePerfLogger *logger = g_perfLogger.get(); if (logger != nullptr) { logger->moduleCreateConstructStart(moduleName, id); } } ``` Therefore, we don't actually execute any code when perf-logging is disabled. Changelog: [Internal] Reviewed By: fkgozali Differential Revision: D21669888 fbshipit-source-id: 80c73754c430ce787404b563878bad146295e01f |
||
---|---|---|
.. | ||
jsireact | ||
.clang-tidy | ||
Android.mk | ||
BUCK | ||
React-jsiexecutor.podspec |