From 37eca5d6cdf2ce80b13635e9c52d0062461270ab Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Mon, 8 Apr 2024 19:36:04 -0700 Subject: [PATCH] Refactor: ReactInstance: Make ctor more readable (#43984) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/43984 Just improvemnts for readability. Changelog: [Internal] Reviewed By: cipolleschi Differential Revision: D55563578 fbshipit-source-id: cb0ee311091db187bb938547c335c5583243116b --- .../react/runtime/ReactInstance.cpp | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp b/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp index 5014bdb1a14..7f51293d038 100644 --- a/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp +++ b/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp @@ -41,7 +41,7 @@ ReactInstance::ReactInstance( RuntimeExecutor runtimeExecutor = [weakRuntime = std::weak_ptr(runtime_), weakTimerManager = std::weak_ptr(timerManager_), - weakJsMessageQueueThread = + weakJsThread = std::weak_ptr(jsMessageQueueThread_), weakJsErrorHander = std::weak_ptr( jsErrorHandler_)](auto callback) { @@ -57,26 +57,28 @@ ReactInstance::ReactInstance( return; } - if (std::shared_ptr sharedJsMessageQueueThread = - weakJsMessageQueueThread.lock()) { - sharedJsMessageQueueThread->runOnQueue( + if (auto jsThread = weakJsThread.lock()) { + jsThread->runOnQueue( [weakRuntime, weakTimerManager, callback = std::move(callback)]() { - if (auto strongRuntime = weakRuntime.lock()) { - jsi::Runtime& jsiRuntime = strongRuntime->getRuntime(); - SystraceSection s("ReactInstance::_runtimeExecutor[Callback]"); - try { - callback(jsiRuntime); + auto runtime = weakRuntime.lock(); + if (!runtime) { + return; + } - // If we have first-class support for microtasks, - // they would've been called as part of the previous callback. - if (!ReactNativeFeatureFlags::enableMicrotasks()) { - if (auto strongTimerManager = weakTimerManager.lock()) { - strongTimerManager->callReactNativeMicrotasks(jsiRuntime); - } + jsi::Runtime& jsiRuntime = runtime->getRuntime(); + SystraceSection s("ReactInstance::_runtimeExecutor[Callback]"); + try { + callback(jsiRuntime); + + // If we have first-class support for microtasks, + // they would've been called as part of the previous callback. + if (!ReactNativeFeatureFlags::enableMicrotasks()) { + if (auto timerManager = weakTimerManager.lock()) { + timerManager->callReactNativeMicrotasks(jsiRuntime); } - } catch (jsi::JSError& originalError) { - handleJSError(jsiRuntime, originalError, true); } + } catch (jsi::JSError& originalError) { + handleJSError(jsiRuntime, originalError, true); } }); } @@ -118,14 +120,11 @@ ReactInstance::ReactInstance( runtimeScheduler_ = std::make_shared(runtimeExecutor); - auto pipedRuntimeExecutor = + bufferedRuntimeExecutor_ = std::make_shared( [runtimeScheduler = runtimeScheduler_.get()]( std::function&& callback) { runtimeScheduler->scheduleWork(std::move(callback)); - }; - - bufferedRuntimeExecutor_ = - std::make_shared(pipedRuntimeExecutor); + }); } void ReactInstance::unregisterFromInspector() {