mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Instrument TurboModuleManager.getModule
Summary: This instruments the following marker: - MODULE_CREATE **Note:** This marker isn't necessary to test the JS TurboModule codegen, since the JS codegen should only affect the C++ portion of the TurboModule infra. However, I implemented this while I was in this area of the code, for completeness. Changelog: [Internal] Reviewed By: PeteTheHeat Differential Revision: D22679888 fbshipit-source-id: aa04822bd5a7c889813fcd13ca23c0b7a1d8444a
This commit is contained in:
committed by
Facebook GitHub Bot
parent
3741134bfb
commit
826067736f
+33
-3
@@ -156,7 +156,16 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
moduleHolder = mTurboModuleHolders.get(moduleName);
|
||||
}
|
||||
|
||||
return getModule(moduleName, moduleHolder);
|
||||
TurboModulePerfLogger.moduleCreateStart(moduleName, moduleHolder.getModuleId());
|
||||
TurboModule module = getModule(moduleName, moduleHolder, true);
|
||||
|
||||
if (module != null) {
|
||||
TurboModulePerfLogger.moduleCreateEnd(moduleName, moduleHolder.getModuleId());
|
||||
} else {
|
||||
TurboModulePerfLogger.moduleCreateFail(moduleName, moduleHolder.getModuleId());
|
||||
}
|
||||
|
||||
return module;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,11 +176,16 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
* initialized.
|
||||
*/
|
||||
@Nullable
|
||||
private TurboModule getModule(String moduleName, @NonNull TurboModuleHolder moduleHolder) {
|
||||
private TurboModule getModule(
|
||||
String moduleName, @NonNull TurboModuleHolder moduleHolder, boolean shouldPerfLog) {
|
||||
boolean shouldCreateModule = false;
|
||||
|
||||
synchronized (moduleHolder) {
|
||||
if (moduleHolder.isDoneCreatingModule()) {
|
||||
if (shouldPerfLog) {
|
||||
TurboModulePerfLogger.moduleCreateCacheHit(moduleName, moduleHolder.getModuleId());
|
||||
}
|
||||
|
||||
return moduleHolder.getModule();
|
||||
}
|
||||
|
||||
@@ -183,12 +197,16 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
}
|
||||
|
||||
if (shouldCreateModule) {
|
||||
TurboModulePerfLogger.moduleCreateConstructStart(moduleName, moduleHolder.getModuleId());
|
||||
TurboModule turboModule = mJavaModuleProvider.getModule(moduleName);
|
||||
|
||||
if (turboModule == null) {
|
||||
turboModule = mCxxModuleProvider.getModule(moduleName);
|
||||
}
|
||||
|
||||
TurboModulePerfLogger.moduleCreateConstructEnd(moduleName, moduleHolder.getModuleId());
|
||||
TurboModulePerfLogger.moduleCreateSetUpStart(moduleName, moduleHolder.getModuleId());
|
||||
|
||||
if (turboModule != null) {
|
||||
synchronized (moduleHolder) {
|
||||
moduleHolder.setModule(turboModule);
|
||||
@@ -206,6 +224,7 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
"TurboModuleManager.getModule: TurboModule " + moduleName + " not found in delegate");
|
||||
}
|
||||
|
||||
TurboModulePerfLogger.moduleCreateSetUpEnd(moduleName, moduleHolder.getModuleId());
|
||||
synchronized (moduleHolder) {
|
||||
moduleHolder.endCreatingModule();
|
||||
moduleHolder.notifyAll();
|
||||
@@ -312,7 +331,7 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
* initialized. In this case, we should wait for initialization to complete, before destroying
|
||||
* the TurboModule.
|
||||
*/
|
||||
final TurboModule turboModule = getModule(moduleName, moduleHolder);
|
||||
final TurboModule turboModule = getModule(moduleName, moduleHolder, false);
|
||||
|
||||
if (turboModule != null) {
|
||||
// TODO(T48014458): Rename this to invalidate()
|
||||
@@ -338,6 +357,17 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
private volatile TurboModule mModule = null;
|
||||
private volatile boolean mIsTryingToCreate = false;
|
||||
private volatile boolean mIsDoneCreatingModule = false;
|
||||
private static volatile int sHolderCount = 0;
|
||||
private volatile int mModuleId;
|
||||
|
||||
public TurboModuleHolder() {
|
||||
mModuleId = sHolderCount;
|
||||
sHolderCount += 1;
|
||||
}
|
||||
|
||||
int getModuleId() {
|
||||
return mModuleId;
|
||||
}
|
||||
|
||||
void setModule(@NonNull TurboModule module) {
|
||||
mModule = module;
|
||||
|
||||
+6
@@ -72,6 +72,12 @@ public class TurboModulePerfLogger {
|
||||
}
|
||||
}
|
||||
|
||||
public static void moduleCreateFail(String moduleName, int id) {
|
||||
if (sNativeModulePerfLogger != null) {
|
||||
sNativeModulePerfLogger.moduleCreateFail(moduleName, id);
|
||||
}
|
||||
}
|
||||
|
||||
private static native void jniEnableCppLogging(NativeModulePerfLogger perfLogger);
|
||||
|
||||
public static void enableLogging(NativeModulePerfLogger perfLogger) {
|
||||
|
||||
Reference in New Issue
Block a user