Instrument RCTModuleData create

Summary:
`RCTModuleData` holds our NativeModule classes/objects. This diff instruments `RCTModuleData` create.

Changelog: [Internal]

Reviewed By: PeteTheHeat

Differential Revision: D21415433

fbshipit-source-id: 7738f763c185e20f756d9bb2eff4a9493cde74e8
This commit is contained in:
Ramanpreet Nara
2020-05-13 20:28:16 -07:00
committed by Facebook GitHub Bot
parent c98f36c676
commit 0b7bcd36ef
+17
View File
@@ -27,6 +27,7 @@
#import <React/RCTRedBox.h>
#import <React/RCTReloadCommand.h>
#import <React/RCTUtils.h>
#import <ReactCommon/NativeModulePerfLogger.h>
#import <cxxreact/CxxNativeModule.h>
#import <cxxreact/Instance.h>
#import <cxxreact/JSBundleType.h>
@@ -68,6 +69,12 @@ typedef NS_ENUM(NSUInteger, RCTBridgeFields) {
namespace {
int32_t getUniqueId()
{
static std::atomic<int32_t> counter{0};
return counter++;
}
class GetDescAdapter : public JSExecutorFactory {
public:
GetDescAdapter(RCTCxxBridge *bridge, std::shared_ptr<JSExecutorFactory> factory) : bridge_(bridge), factory_(factory)
@@ -653,7 +660,10 @@ struct RCTInstanceCallback : public InstanceCallback {
// Instantiate moduleData
// TODO #13258411: can we defer this until config generation?
int32_t moduleDataId = getUniqueId();
NativeModulePerfLogger::getInstance().moduleDataCreateStart([moduleName UTF8String], moduleDataId);
moduleData = [[RCTModuleData alloc] initWithModuleClass:moduleClass bridge:self];
NativeModulePerfLogger::getInstance().moduleDataCreateEnd([moduleName UTF8String], moduleDataId);
_moduleDataByName[moduleName] = moduleData;
[_moduleClassesByID addObject:moduleClass];
@@ -713,7 +723,11 @@ struct RCTInstanceCallback : public InstanceCallback {
}
// Instantiate moduleData container
int32_t moduleDataId = getUniqueId();
NativeModulePerfLogger::getInstance().moduleDataCreateStart([moduleName UTF8String], moduleDataId);
RCTModuleData *moduleData = [[RCTModuleData alloc] initWithModuleInstance:module bridge:self];
NativeModulePerfLogger::getInstance().moduleDataCreateEnd([moduleName UTF8String], moduleDataId);
_moduleDataByName[moduleName] = moduleData;
[_moduleClassesByID addObject:moduleClass];
[_moduleDataByID addObject:moduleData];
@@ -760,7 +774,10 @@ struct RCTInstanceCallback : public InstanceCallback {
}
}
int32_t moduleDataId = getUniqueId();
NativeModulePerfLogger::getInstance().moduleDataCreateStart([moduleName UTF8String], moduleDataId);
moduleData = [[RCTModuleData alloc] initWithModuleClass:moduleClass bridge:self];
NativeModulePerfLogger::getInstance().moduleDataCreateEnd([moduleName UTF8String], moduleDataId);
_moduleDataByName[moduleName] = moduleData;
[_moduleClassesByID addObject:moduleClass];