diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt index d6feda993f1b..14b8a8b60551 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt @@ -8,6 +8,7 @@ package com.facebook.systrace import androidx.tracing.Trace +import kotlin.text.StringBuilder /** * Systrace stub that mostly does nothing but delegates to Trace for beginning/ending sections. The @@ -35,6 +36,28 @@ public object Systrace { Trace.beginSection(sectionName) } + @JvmStatic + public fun beginSection(tag: Long, sectionName: String, args: Array, argsLength: Int) { + Trace.beginSection(sectionName + "|" + convertArgsToText(args, argsLength)) + } + + private fun convertArgsToText(args: Array, argsLength: Int): String { + val argsText: StringBuilder = StringBuilder() + var ii = 1 + while (ii < argsLength) { + val key = args[ii - 1] + val value = args[ii] + argsText.append(key) + argsText.append('=') + argsText.append(value) + if (ii < argsLength - 1) { + argsText.append(';') + } + ii += 2 + } + return argsText.toString() + } + @JvmStatic public fun endSection(tag: Long) { Trace.endSection()