Roll out TurboModule Promise Async Dispatch

Summary:
## Context
The legacy NativeModule infra implements promise methods using [async NativeModule method calls](https://fburl.com/diffusion/tpkff6vg). In the TurboModule infra, promise methods [treat as sync methods](https://fburl.com/diffusion/yde7xw71), and executed directly on the JavaScript thread. This experiment makes TurboModule promise methods async, and dispatches them to the NativeModules thread, when they're executed from JavaScript.

Reviewed By: fkgozali

Differential Revision: D25623192

fbshipit-source-id: 2b50d771c5272af3b6edf150054bb3e80cab0040
This commit is contained in:
Ramanpreet Nara
2020-12-17 17:27:09 -08:00
committed by Facebook GitHub Bot
parent 40115d87d4
commit 5c4f145e33
5 changed files with 40 additions and 76 deletions
@@ -61,7 +61,6 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
(CallInvokerHolderImpl) jsCallInvokerHolder,
(CallInvokerHolderImpl) nativeCallInvokerHolder,
delegate,
ReactFeatureFlags.enableTurboModulePromiseAsyncDispatch,
ReactFeatureFlags.useTurboModuleJSCodegen);
installJSIBindings();
@@ -295,7 +294,6 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
CallInvokerHolderImpl jsCallInvokerHolder,
CallInvokerHolderImpl nativeCallInvokerHolder,
TurboModuleManagerDelegate tmmDelegate,
boolean enablePromiseAsyncDispatch,
boolean enableTurboModuleJSCodegen);
private native void installJSIBindings();
@@ -43,13 +43,10 @@ jni::local_ref<TurboModuleManager::jhybriddata> TurboModuleManager::initHybrid(
jni::alias_ref<CallInvokerHolder::javaobject> jsCallInvokerHolder,
jni::alias_ref<CallInvokerHolder::javaobject> nativeCallInvokerHolder,
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate,
bool enablePromiseAsyncDispatch,
bool enableJSCodegen) {
auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker();
auto nativeCallInvoker = nativeCallInvokerHolder->cthis()->getCallInvoker();
JavaTurboModule::enablePromiseAsyncDispatch(enablePromiseAsyncDispatch);
return makeCxxInstance(
jThis,
runtimeExecutor->cthis()->get(),
@@ -33,7 +33,6 @@ class TurboModuleManager : public jni::HybridClass<TurboModuleManager> {
jni::alias_ref<CallInvokerHolder::javaobject> jsCallInvokerHolder,
jni::alias_ref<CallInvokerHolder::javaobject> nativeCallInvokerHolder,
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate,
bool enablePromiseAsyncDispatch,
bool enableJSCodegen);
static void registerNatives();