From 4a5fed3c42f92fb0f77e4b2d9bcadf9fb208a6f3 Mon Sep 17 00:00:00 2001 From: Mike Armstrong Date: Mon, 5 Oct 2015 07:57:36 -0700 Subject: [PATCH] Markers for JSC and Bridge Initialization Differential Revision: D2507869 --- .../react/bridge/CatalystInstance.java | 9 +++++++- .../react/bridge/NativeModuleRegistry.java | 22 +++++++++++++++---- .../src/main/jni/react/JSCExecutor.cpp | 4 ++++ .../src/main/jni/react/jni/JSLoader.cpp | 14 ++++++++++++ .../src/main/jni/react/jni/OnLoad.cpp | 16 ++++++++++++++ 5 files changed, 60 insertions(+), 5 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java index be3cd5d0a..4621914f0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java @@ -111,7 +111,14 @@ public class CatalystInstance { mBridge.setGlobalVariable( "__fbBatchedBridgeConfig", buildModulesConfigJSONProperty(registry, jsModulesConfig)); - jsBundleLoader.loadScript(mBridge); + Systrace.beginSection( + Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, + "CatalystInstance_initializeBridge"); + try { + jsBundleLoader.loadScript(mBridge); + } finally { + Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE); + } } /* package */ void callFunction( diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java index 42a794eca..9e00799a6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java @@ -70,15 +70,29 @@ public class NativeModuleRegistry { /* package */ void notifyCatalystInstanceDestroy() { UiThreadUtil.assertOnUiThread(); - for (NativeModule nativeModule : mModuleInstances.values()) { - nativeModule.onCatalystInstanceDestroy(); + Systrace.beginSection( + Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, + "NativeModuleRegistry_notifyCatalystInstanceDestroy"); + try { + for (NativeModule nativeModule : mModuleInstances.values()) { + nativeModule.onCatalystInstanceDestroy(); + } + } finally { + Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE); } } /* package */ void notifyCatalystInstanceInitialized() { UiThreadUtil.assertOnUiThread(); - for (NativeModule nativeModule : mModuleInstances.values()) { - nativeModule.initialize(); + Systrace.beginSection( + Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, + "NativeModuleRegistry_notifyCatalystInstanceInitialized"); + try { + for (NativeModule nativeModule : mModuleInstances.values()) { + nativeModule.initialize(); + } + } finally { + Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE); } } diff --git a/ReactAndroid/src/main/jni/react/JSCExecutor.cpp b/ReactAndroid/src/main/jni/react/JSCExecutor.cpp index 583e0fe92..f6360f0a5 100644 --- a/ReactAndroid/src/main/jni/react/JSCExecutor.cpp +++ b/ReactAndroid/src/main/jni/react/JSCExecutor.cpp @@ -70,6 +70,10 @@ void JSCExecutor::executeApplicationScript( const std::string& sourceURL) { String jsScript(script.c_str()); String jsSourceURL(sourceURL.c_str()); + #ifdef WITH_FBSYSTRACE + FbSystraceSection s(TRACE_TAG_REACT_CXX_BRIDGE, "JSCExecutor::executeApplicationScript", + "sourceURL", sourceURL); + #endif evaluateScriptWithJSC(m_context, jsScript, jsSourceURL); } diff --git a/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp b/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp index 4e8345c74..416640a37 100644 --- a/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +++ b/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp @@ -10,6 +10,11 @@ #include #include +#ifdef WITH_FBSYSTRACE +#include +using fbsystrace::FbSystraceSection; +#endif + namespace facebook { namespace react { @@ -17,6 +22,11 @@ std::string loadScriptFromAssets( JNIEnv *env, jobject assetManager, std::string assetName) { + #ifdef WITH_FBSYSTRACE + FbSystraceSection s(TRACE_TAG_REACT_CXX_BRIDGE, "reactbridge_jni_loadScriptFromAssets", + "assetName", assetName); + #endif + auto manager = AAssetManager_fromJava(env, assetManager); if (manager) { auto asset = AAssetManager_open( @@ -41,6 +51,10 @@ std::string loadScriptFromAssets( } std::string loadScriptFromFile(std::string fileName) { + #ifdef WITH_FBSYSTRACE + FbSystraceSection s(TRACE_TAG_REACT_CXX_BRIDGE, "reactbridge_jni_loadScriptFromFile", + "fileName", fileName); + #endif std::ifstream jsfile(fileName); if (jsfile) { std::string output; diff --git a/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp b/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp index c471480ed..fde064b85 100644 --- a/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +++ b/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp @@ -17,6 +17,11 @@ #include "NativeArray.h" #include "ProxyExecutor.h" +#ifdef WITH_FBSYSTRACE +#include +using fbsystrace::FbSystraceSection; +#endif + using namespace facebook::jni; namespace facebook { @@ -583,6 +588,11 @@ static void loadScriptFromAssets(JNIEnv* env, jobject obj, jobject assetManager, auto bridge = extractRefPtr(env, obj); auto assetNameStr = fromJString(env, assetName); auto script = react::loadScriptFromAssets(env, assetManager, assetNameStr); + #ifdef WITH_FBSYSTRACE + FbSystraceSection s(TRACE_TAG_REACT_CXX_BRIDGE, "reactbridge_jni_" + "executeApplicationScript", + "assetName", assetNameStr); + #endif bridge->executeApplicationScript(script, assetNameStr); } @@ -593,6 +603,12 @@ static void loadScriptFromNetworkCached(JNIEnv* env, jobject obj, jstring source if (tempFileName != NULL) { script = react::loadScriptFromFile(jni::fromJString(env, tempFileName)); } + #ifdef WITH_FBSYSTRACE + auto sourceURLStr = fromJString(env, sourceURL); + FbSystraceSection s(TRACE_TAG_REACT_CXX_BRIDGE, "reactbridge_jni_" + "executeApplicationScript", + "sourceURL", sourceURLStr); + #endif bridge->executeApplicationScript(script, jni::fromJString(env, sourceURL)); }