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:
Ramanpreet Nara
2021-06-02 16:54:33 -07:00
committed by Facebook GitHub Bot
parent 502b819049
commit 281daf1222
6 changed files with 11 additions and 41 deletions
@@ -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) {