From 0b7bcd36ef67b5b73c748689eaf23ee5550af9f8 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Wed, 13 May 2020 20:24:37 -0700 Subject: [PATCH] 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 --- React/CxxBridge/RCTCxxBridge.mm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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];