mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Roll out package info validation
Summary: ## Context Every time we require a NativeModule in Java, we [first try to create it with the TurboModuleManager](https://fburl.com/diffusion/3nkjwea2). In the TurboModule infra, when a NativeModule is requested, [we first create it](https://fburl.com/diffusion/d2c6iout), then [if it's not a TurboModule, we discard the newly created object](https://fburl.com/diffusion/44gjlo6y). This is extremely wasteful, especially when a NativeModule is requested frequently and periodically, like UIManagerModule. Therefore, in D24811838 (https://github.com/facebook/react-native/commit/803a26cb003e6b790e3a1ab31beb0c95795fff0c) fkgozali launched a fix to the infra that would avoid creating the non-TurboModule object in the first place. Today, we're launching this optimization. Reviewed By: fkgozali Differential Revision: D25621570 fbshipit-source-id: dedba4d5ac6fcf2ec3c31e7163a6a226065c708b
This commit is contained in:
committed by
Facebook GitHub Bot
parent
5a37773e53
commit
40115d87d4
@@ -29,11 +29,6 @@ public class ReactFeatureFlags {
|
||||
/** Enable TurboModule JS Codegen. */
|
||||
public static volatile boolean useTurboModuleJSCodegen = false;
|
||||
|
||||
/**
|
||||
* Enable the fix to validate the TurboReactPackage's module info before resolving a TurboModule.
|
||||
*/
|
||||
public static volatile boolean enableTurboModulePackageInfoValidation = false;
|
||||
|
||||
/*
|
||||
* This feature flag enables logs for Fabric
|
||||
*/
|
||||
|
||||
+10
-20
@@ -15,7 +15,6 @@ import com.facebook.react.TurboReactPackage;
|
||||
import com.facebook.react.bridge.CxxModuleWrapper;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.config.ReactFeatureFlags;
|
||||
import com.facebook.react.module.model.ReactModuleInfo;
|
||||
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
||||
import java.util.ArrayList;
|
||||
@@ -37,9 +36,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule
|
||||
if (reactPackage instanceof TurboReactPackage) {
|
||||
TurboReactPackage pkg = (TurboReactPackage) reactPackage;
|
||||
mPackages.add(pkg);
|
||||
if (ReactFeatureFlags.enableTurboModulePackageInfoValidation) {
|
||||
mPackageModuleInfos.put(pkg, pkg.getReactModuleInfoProvider().getReactModuleInfos());
|
||||
}
|
||||
mPackageModuleInfos.put(pkg, pkg.getReactModuleInfoProvider().getReactModuleInfos());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,23 +78,16 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule
|
||||
|
||||
for (final TurboReactPackage pkg : mPackages) {
|
||||
try {
|
||||
if (ReactFeatureFlags.enableTurboModulePackageInfoValidation) {
|
||||
final ReactModuleInfo moduleInfo = mPackageModuleInfos.get(pkg).get(moduleName);
|
||||
if (moduleInfo == null
|
||||
|| !moduleInfo.isTurboModule()
|
||||
|| resolvedModule != null && !moduleInfo.canOverrideExistingModule()) {
|
||||
continue;
|
||||
}
|
||||
final ReactModuleInfo moduleInfo = mPackageModuleInfos.get(pkg).get(moduleName);
|
||||
if (moduleInfo == null
|
||||
|| !moduleInfo.isTurboModule()
|
||||
|| resolvedModule != null && !moduleInfo.canOverrideExistingModule()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
final NativeModule module = pkg.getModule(moduleName, mReactApplicationContext);
|
||||
if (module != null) {
|
||||
resolvedModule = module;
|
||||
}
|
||||
} else {
|
||||
final NativeModule module = pkg.getModule(moduleName, mReactApplicationContext);
|
||||
if (resolvedModule == null || module != null && module.canOverrideExistingModule()) {
|
||||
resolvedModule = module;
|
||||
}
|
||||
final NativeModule module = pkg.getModule(moduleName, mReactApplicationContext);
|
||||
if (module != null) {
|
||||
resolvedModule = module;
|
||||
}
|
||||
} catch (IllegalArgumentException ex) {
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user