diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java index d19cb336a7e..9bde9cc9e7d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java @@ -5,6 +5,8 @@ package com.facebook.react.bridge; import javax.annotation.Nullable; import javax.inject.Provider; +import java.util.concurrent.atomic.AtomicInteger; + import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactMarker; @@ -30,6 +32,8 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; @DoNotStrip public class ModuleHolder { + private static final AtomicInteger sInstanceKeyCounter = new AtomicInteger(1); + private final String mName; private final boolean mCanOverrideExistingModule; private final boolean mHasConstants; @@ -96,7 +100,8 @@ public class ModuleHolder { private NativeModule create() { SoftAssertions.assertCondition(mModule == null, "Creating an already created module."); - ReactMarker.logMarker(CREATE_MODULE_START, mName); + int instanceKey = sInstanceKeyCounter.getAndIncrement(); + ReactMarker.logMarker(CREATE_MODULE_START, mName, instanceKey); SystraceMessage.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "createModule") .arg("name", mName) .flush(); @@ -110,7 +115,7 @@ public class ModuleHolder { } } finally { Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); - ReactMarker.logMarker(CREATE_MODULE_END); + ReactMarker.logMarker(CREATE_MODULE_END, instanceKey); } return module; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java index 8382d9e35a8..e4293fffd03 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java @@ -14,7 +14,7 @@ import com.facebook.proguard.annotations.DoNotStrip; public class ReactMarker { public interface MarkerListener { - void logMarker(ReactMarkerConstants name, @Nullable String tag); + void logMarker(ReactMarkerConstants name, @Nullable String tag, int instanceKey); }; private static @Nullable MarkerListener sMarkerListener = null; @@ -35,22 +35,42 @@ public class ReactMarker { logMarker(name, null); } + @DoNotStrip + public static void logMarker(String name, int instanceKey) { + logMarker(name, null, instanceKey); + } + @DoNotStrip public static void logMarker(String name, @Nullable String tag) { + logMarker(name, tag, 0); + } + + @DoNotStrip + public static void logMarker(String name, @Nullable String tag, int instanceKey) { if (sMarkerListener != null) { - sMarkerListener.logMarker(ReactMarkerConstants.valueOf(name), tag); + sMarkerListener.logMarker(ReactMarkerConstants.valueOf(name), tag, instanceKey); } } @DoNotStrip public static void logMarker(ReactMarkerConstants name) { - logMarker(name, null); + logMarker(name, null, 0); + } + + @DoNotStrip + public static void logMarker(ReactMarkerConstants name, int instanceKey) { + logMarker(name, null, instanceKey); } @DoNotStrip public static void logMarker(ReactMarkerConstants name, @Nullable String tag) { + logMarker(name, null, 0); + } + + @DoNotStrip + public static void logMarker(ReactMarkerConstants name, @Nullable String tag, int instanceKey) { if (sMarkerListener != null) { - sMarkerListener.logMarker(name, tag); + sMarkerListener.logMarker(name, tag, instanceKey); } } }