From 93c6be496e5a7907d8b3ece079c3c31cd20eedb8 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Tue, 10 Dec 2024 16:53:05 -0800 Subject: [PATCH] Configure __RCTProfileIsProfiling for perfetto builds (#48201) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48201 For any build for which we enable the perfetto build flag, we should probably enable the `__RCTProfileIsProfiling` so we get systrace markers. Changelog: [Internal] Reviewed By: bgirard Differential Revision: D67031171 fbshipit-source-id: 5e7f56f911acacd3156778bd9151202fc809e291 --- packages/react-native/ReactAndroid/build.gradle.kts | 1 + .../main/java/com/facebook/react/ReactInstanceManager.java | 3 ++- .../main/java/com/facebook/react/runtime/ReactInstance.java | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 70233798f95..a5ecbf6111f 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -512,6 +512,7 @@ android { buildConfigField("boolean", "IS_INTERNAL_BUILD", "false") buildConfigField("int", "EXOPACKAGE_FLAGS", "0") buildConfigField("boolean", "UNSTABLE_ENABLE_FUSEBOX_RELEASE", "false") + buildConfigField("boolean", "ENABLE_PERFETTO", "false") resValue("integer", "react_native_dev_server_port", reactNativeDevServerPort()) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 1ba517b3075..ed7f80bbea4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -1521,7 +1521,8 @@ public class ReactInstanceManager { if (mBridgeIdleDebugListener != null) { catalystInstance.addBridgeIdleDebugListener(mBridgeIdleDebugListener); } - if (Systrace.isTracing(TRACE_TAG_REACT_APPS | TRACE_TAG_REACT_JS_VM_CALLS)) { + if (BuildConfig.ENABLE_PERFETTO + || Systrace.isTracing(TRACE_TAG_REACT_APPS | TRACE_TAG_REACT_JS_VM_CALLS)) { catalystInstance.setGlobalVariable("__RCTProfileIsProfiling", "true"); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java index 5c523cbfb46..53cd2ee20c8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java @@ -17,6 +17,7 @@ import com.facebook.infer.annotation.ThreadConfined; import com.facebook.infer.annotation.ThreadSafe; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.BuildConfig; import com.facebook.react.DebugCorePackage; import com.facebook.react.ReactPackage; import com.facebook.react.ViewManagerOnDemandReactPackage; @@ -144,7 +145,9 @@ final class ReactInstance { BindingsInstaller bindingsInstaller = delegate.getBindingsInstaller(); // Notify JS if profiling is enabled boolean isProfiling = - Systrace.isTracing(Systrace.TRACE_TAG_REACT_APPS | Systrace.TRACE_TAG_REACT_JS_VM_CALLS); + BuildConfig.ENABLE_PERFETTO + || Systrace.isTracing( + Systrace.TRACE_TAG_REACT_APPS | Systrace.TRACE_TAG_REACT_JS_VM_CALLS); mHybridData = initHybrid(