diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index ec4090a862c..aed3293cf3e 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -27,6 +27,7 @@ #import #import #import +#import #import #import #import @@ -68,6 +69,12 @@ typedef NS_ENUM(NSUInteger, RCTBridgeFields) { namespace { +int32_t getUniqueId() +{ + static std::atomic counter{0}; + return counter++; +} + class GetDescAdapter : public JSExecutorFactory { public: GetDescAdapter(RCTCxxBridge *bridge, std::shared_ptr 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];