diff --git a/React/Base/RCTModuleData.mm b/React/Base/RCTModuleData.mm index 5f49c347a..06d572026 100644 --- a/React/Base/RCTModuleData.mm +++ b/React/Base/RCTModuleData.mm @@ -83,7 +83,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init); - (void)setUpInstanceAndBridge { - RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"[RCTModuleData setUpInstanceAndBridge] [_instanceLock lock]", @{ @"moduleClass": _moduleClass }); + RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"[RCTModuleData setUpInstanceAndBridge] [_instanceLock lock]", @{ @"moduleClass": NSStringFromClass(_moduleClass) }); { std::unique_lock lock(_instanceLock); @@ -92,7 +92,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init); if (RCT_DEBUG && _requiresMainQueueSetup) { RCTAssertMainQueue(); } - RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"[RCTModuleData setUpInstanceAndBridge] [_moduleClass new]", @{ @"moduleClass": _moduleClass }); + RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"[RCTModuleData setUpInstanceAndBridge] [_moduleClass new]", @{ @"moduleClass": NSStringFromClass(_moduleClass) }); _instance = [_moduleClass new]; RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"", nil); if (!_instance) { @@ -293,8 +293,8 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init); self->_constantsToExport = [self->_instance constantsToExport] ?: @{}; }, YES); #pragma clang diagnostic pop + RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"", nil); } - RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"", nil); } - (NSArray *)config diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index b4cf66d47..05ad4a594 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -332,6 +332,7 @@ void JSCExecutor::setJSModulesUnbundle(std::unique_ptr unbund } void JSCExecutor::bindBridge() throw(JSException) { + SystraceSection s("JSCExecutor::bindBridge"); auto global = Object::getGlobalObject(m_context); auto batchedBridgeValue = global.getProperty("__fbBatchedBridge"); if (batchedBridgeValue.isUndefined()) { @@ -345,11 +346,12 @@ void JSCExecutor::bindBridge() throw(JSException) { } void JSCExecutor::callNativeModules(Value&& value) { + SystraceSection s("JSCExecutor::callNativeModules"); try { auto calls = value.toJSONString(); m_delegate->callNativeModules(*this, std::move(calls), true); } catch (...) { - std::string message = "Error in flush()"; + std::string message = "Error in callNativeModules()"; try { message += ":" + value.toString().str(); } catch (...) { @@ -360,10 +362,12 @@ void JSCExecutor::callNativeModules(Value&& value) { } void JSCExecutor::flush() { + SystraceSection s("JSCExecutor::flush"); callNativeModules(m_flushedQueueJS->callAsFunction({})); } void JSCExecutor::callFunction(const std::string& moduleId, const std::string& methodId, const folly::dynamic& arguments) { + SystraceSection s("JSCExecutor::callFunction"); // This weird pattern is because Value is not default constructible. // The lambda is inlined, so there's no overhead. @@ -384,6 +388,7 @@ void JSCExecutor::callFunction(const std::string& moduleId, const std::string& m } void JSCExecutor::invokeCallback(const double callbackId, const folly::dynamic& arguments) { + SystraceSection s("JSCExecutor::invokeCallback"); auto result = [&] { try { return m_invokeCallbackAndReturnFlushedQueueJS->callAsFunction({ diff --git a/ReactCommon/cxxreact/JSCHelpers.cpp b/ReactCommon/cxxreact/JSCHelpers.cpp index 194cc4737..366feb39e 100644 --- a/ReactCommon/cxxreact/JSCHelpers.cpp +++ b/ReactCommon/cxxreact/JSCHelpers.cpp @@ -6,6 +6,7 @@ #include #include +#include "SystraceSection.h" #include "Value.h" namespace facebook { @@ -41,6 +42,7 @@ String jsStringFromBigString(const JSBigString& bigstr) { } JSValueRef evaluateScript(JSContextRef context, JSStringRef script, JSStringRef source) { + SystraceSection s("evaluateScript"); JSValueRef exn, result; result = JSEvaluateScript(context, script, NULL, source, 0, &exn); if (result == nullptr) {