mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/44797 Noticed when profiling bridgeless that that every call into JS would be passed via a (default priority) background thread first. This is inefficient from a scheduling perspective. Instead use the Task's default/immediate executor to immediately execute the success callback on the current thread and avoid a thread change. This diff adds a new feature flag, to use the immediate executor for any ReactInstance method that doesn't require further synchronization within ReactInstance. For most methods, this is indeed unnecessary as ReactInstance will synchronize internally by scheduling work on the JS thread. Changelog: [Android][Added] Added featureflag to avoid additional background threads during execution Reviewed By: cortinico Differential Revision: D58186090 fbshipit-source-id: 67ffed2d34083a6b6e7871160a2f3d6f1967d630
139 lines
4.1 KiB
C++
139 lines
4.1 KiB
C++
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @generated SignedSource<<ec12fd62d1dc2109e52a95094d7ad167>>
|
|
*/
|
|
|
|
/**
|
|
* IMPORTANT: Do NOT modify this file directly.
|
|
*
|
|
* To change the definition of the flags, edit
|
|
* packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js.
|
|
*
|
|
* To regenerate this code, run the following script from the repo root:
|
|
* yarn featureflags-update
|
|
*/
|
|
|
|
#include "ReactNativeFeatureFlags.h"
|
|
|
|
namespace facebook::react {
|
|
|
|
bool ReactNativeFeatureFlags::commonTestFlag() {
|
|
return getAccessor().commonTestFlag();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::allowCollapsableChildren() {
|
|
return getAccessor().allowCollapsableChildren();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::allowRecursiveCommitsWithSynchronousMountOnAndroid() {
|
|
return getAccessor().allowRecursiveCommitsWithSynchronousMountOnAndroid();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::batchRenderingUpdatesInEventLoop() {
|
|
return getAccessor().batchRenderingUpdatesInEventLoop();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::destroyFabricSurfacesInReactInstanceManager() {
|
|
return getAccessor().destroyFabricSurfacesInReactInstanceManager();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::enableBackgroundExecutor() {
|
|
return getAccessor().enableBackgroundExecutor();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::enableCleanTextInputYogaNode() {
|
|
return getAccessor().enableCleanTextInputYogaNode();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::enableGranularShadowTreeStateReconciliation() {
|
|
return getAccessor().enableGranularShadowTreeStateReconciliation();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::enableMicrotasks() {
|
|
return getAccessor().enableMicrotasks();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::enableSynchronousStateUpdates() {
|
|
return getAccessor().enableSynchronousStateUpdates();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::enableUIConsistency() {
|
|
return getAccessor().enableUIConsistency();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak() {
|
|
return getAccessor().fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::forceBatchingMountItemsOnAndroid() {
|
|
return getAccessor().forceBatchingMountItemsOnAndroid();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::fuseboxEnabledDebug() {
|
|
return getAccessor().fuseboxEnabledDebug();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::fuseboxEnabledRelease() {
|
|
return getAccessor().fuseboxEnabledRelease();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::lazyAnimationCallbacks() {
|
|
return getAccessor().lazyAnimationCallbacks();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::preventDoubleTextMeasure() {
|
|
return getAccessor().preventDoubleTextMeasure();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::setAndroidLayoutDirection() {
|
|
return getAccessor().setAndroidLayoutDirection();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::useImmediateExecutorInAndroidBridgeless() {
|
|
return getAccessor().useImmediateExecutorInAndroidBridgeless();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::useModernRuntimeScheduler() {
|
|
return getAccessor().useModernRuntimeScheduler();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::useNativeViewConfigsInBridgelessMode() {
|
|
return getAccessor().useNativeViewConfigsInBridgelessMode();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::useRuntimeShadowNodeReferenceUpdate() {
|
|
return getAccessor().useRuntimeShadowNodeReferenceUpdate();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::useRuntimeShadowNodeReferenceUpdateOnLayout() {
|
|
return getAccessor().useRuntimeShadowNodeReferenceUpdateOnLayout();
|
|
}
|
|
|
|
bool ReactNativeFeatureFlags::useStateAlignmentMechanism() {
|
|
return getAccessor().useStateAlignmentMechanism();
|
|
}
|
|
|
|
void ReactNativeFeatureFlags::override(
|
|
std::unique_ptr<ReactNativeFeatureFlagsProvider> provider) {
|
|
getAccessor().override(std::move(provider));
|
|
}
|
|
|
|
void ReactNativeFeatureFlags::dangerouslyReset() {
|
|
getAccessor(true);
|
|
}
|
|
|
|
ReactNativeFeatureFlagsAccessor& ReactNativeFeatureFlags::getAccessor(
|
|
bool reset) {
|
|
static std::unique_ptr<ReactNativeFeatureFlagsAccessor> accessor;
|
|
if (accessor == nullptr || reset) {
|
|
accessor = std::make_unique<ReactNativeFeatureFlagsAccessor>();
|
|
}
|
|
return *accessor;
|
|
}
|
|
|
|
} // namespace facebook::react
|