mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
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:
committed by
Facebook GitHub Bot
parent
fd9787ecc0
commit
5535031ba4
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user