mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Ship bridge RuntimeExecutor JSIExecutor flushing
Summary: The RuntimeExecutor that Fabric gets from the bridge doesn't call JSIExecutor::flush(). In the legacy NativeModule system, we're supposed to flush the queue of NativeModule calls after every call into JavaScript. The lack of this flushing means that we execute NativeModule calls less frequently with Fabric enabled, and TurboModules disabled. It also means that [the microtask checkpoints we placed inside JSIExecutor::flush()](https://www.internalfb.com/code/fbsource/[62f69606ae81530f7d6f0cba8466ac604934c901]/xplat/js/react-native-github/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp?lines=427%2C445) won't be executed as frequently, with Fabric enabled. Changelog: [Android][Fixed] - Flush NativeModule calls with Fabric on Android, on every Native -> JS call. Reviewed By: JoshuaGross, mdvacca Differential Revision: D28620982 fbshipit-source-id: ae4d1c16c62b6d4a5089e63104ad97f4ed44c440
This commit is contained in:
committed by
Facebook GitHub Bot
parent
502b819049
commit
281daf1222
@@ -549,12 +549,7 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
return mJavaScriptContextHolder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RuntimeExecutor getRuntimeExecutor() {
|
||||
return getRuntimeExecutor(ReactFeatureFlags.enableRuntimeExecutorFlushing());
|
||||
}
|
||||
|
||||
public native RuntimeExecutor getRuntimeExecutor(boolean shouldFlush);
|
||||
public native RuntimeExecutor getRuntimeExecutor();
|
||||
|
||||
@Override
|
||||
public void addJSIModules(List<JSIModuleSpec> jsiModules) {
|
||||
|
||||
@@ -18,12 +18,6 @@ import com.facebook.proguard.annotations.DoNotStripAny;
|
||||
*/
|
||||
@DoNotStripAny
|
||||
public class ReactFeatureFlags {
|
||||
|
||||
/** An interface used to compute flags on demand. */
|
||||
public interface FlagProvider {
|
||||
boolean get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Should this application use TurboModules? If yes, then any module that inherits {@link
|
||||
* com.facebook.react.turbomodule.core.interfaces.TurboModule} will NOT be passed in to C++
|
||||
@@ -59,13 +53,6 @@ public class ReactFeatureFlags {
|
||||
/** Feature flag to configure eager initialization of MapBuffer So file */
|
||||
public static boolean enableEagerInitializeMapBufferSoFile = false;
|
||||
|
||||
/** Should the RuntimeExecutor call JSIExecutor::flush()? */
|
||||
private static FlagProvider enableRuntimeExecutorFlushingProvider = null;
|
||||
|
||||
public static void setEnableRuntimeExecutorFlushingFlagProvider(FlagProvider provider) {
|
||||
enableRuntimeExecutorFlushingProvider = provider;
|
||||
}
|
||||
|
||||
private static boolean mapBufferSerializationEnabled = false;
|
||||
|
||||
/** Enables or disables MapBuffer Serialization */
|
||||
@@ -77,14 +64,6 @@ public class ReactFeatureFlags {
|
||||
return mapBufferSerializationEnabled;
|
||||
}
|
||||
|
||||
public static boolean enableRuntimeExecutorFlushing() {
|
||||
if (enableRuntimeExecutorFlushingProvider != null) {
|
||||
return enableRuntimeExecutorFlushingProvider.get();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Enables Fabric for LogBox */
|
||||
public static boolean enableFabricInLogBox = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user