Gate TurboModule block copy behind an MC

Summary: Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D24145506

fbshipit-source-id: 7e374c3bd2378cc1dcd9372d7cbb10ae445a2582
This commit is contained in:
Ramanpreet Nara
2020-10-06 18:40:20 -07:00
committed by Facebook GitHub Bot
parent fd9787ecc0
commit 5535031ba4
3 changed files with 27 additions and 3 deletions
+4
View File
@@ -161,6 +161,10 @@ RCT_EXTERN void RCTEnableTurboModuleEagerInit(BOOL enabled);
RCT_EXTERN BOOL RCTTurboModuleSharedMutexInitEnabled(void);
RCT_EXTERN void RCTEnableTurboModuleSharedMutexInit(BOOL enabled);
// Turn on TurboModule block copy
RCT_EXTERN BOOL RCTTurboModuleBlockCopyEnabled(void);
RCT_EXTERN void RCTEnableTurboModuleBlockCopy(BOOL enabled);
/**
* Async batched bridge used to communicate with the JavaScript application.
*/
+11
View File
@@ -136,6 +136,17 @@ void RCTEnableTurboModuleSharedMutexInit(BOOL enabled)
turboModuleSharedMutexInitEnabled = enabled;
}
static BOOL turboModuleBlockCopyEnabled = NO;
BOOL RCTTurboModuleBlockCopyEnabled(void)
{
return turboModuleBlockCopyEnabled;
}
void RCTEnableTurboModuleBlockCopy(BOOL enabled)
{
turboModuleBlockCopyEnabled = enabled;
}
@interface RCTBridge () <RCTReloadListener>
@end
@@ -195,7 +195,11 @@ convertJSIFunctionToCallback(jsi::Runtime &runtime, const jsi::Function &value,
wrapperWasCalled = YES;
};
return [callback copy];
if (RCTTurboModuleBlockCopyEnabled()) {
return [callback copy];
}
return callback;
}
namespace facebook {
@@ -636,8 +640,13 @@ jsi::Value ObjCTurboModule::invokeObjCMethod(
runtime,
jsInvoker_,
^(RCTPromiseResolveBlock resolveBlock, RCTPromiseRejectBlock rejectBlock) {
RCTPromiseResolveBlock resolveCopy = [resolveBlock copy];
RCTPromiseRejectBlock rejectCopy = [rejectBlock copy];
RCTPromiseResolveBlock resolveCopy = resolveBlock;
RCTPromiseRejectBlock rejectCopy = rejectBlock;
if (RCTTurboModuleBlockCopyEnabled()) {
resolveCopy = [resolveBlock copy];
rejectCopy = [rejectBlock copy];
}
[inv setArgument:(void *)&resolveCopy atIndex:count + 2];
[inv setArgument:(void *)&rejectCopy atIndex:count + 3];