Optimize arg conversion in SurfaceRegistryBinding (#39094)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39094

We can construct the outer jsi::Object directly instead of going through `valueFromDynamic` for the whole thing.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D48519751

fbshipit-source-id: d3efd60472103ce7c9d13646d0a9bf4164bf73e2
This commit is contained in:
Pieter De Baets
2023-08-22 04:47:57 -07:00
committed by Facebook GitHub Bot
parent 4f8a8ce316
commit c22cc8f2d3
@@ -36,10 +36,11 @@ void SurfaceRegistryBinding::startSurface(
folly::dynamic const &initialProps,
DisplayMode displayMode) {
SystraceSection s("SurfaceRegistryBinding::startSurface");
folly::dynamic parameters = folly::dynamic::object();
parameters["rootTag"] = surfaceId;
parameters["initialProps"] = initialProps;
parameters["fabric"] = true;
jsi::Object parameters(runtime);
parameters.setProperty(runtime, "rootTag", surfaceId);
parameters.setProperty(
runtime, "initialProps", jsi::valueFromDynamic(runtime, initialProps));
parameters.setProperty(runtime, "fabric", true);
auto global = runtime.global();
auto registry = global.getProperty(runtime, "RN$AppRegistry");
@@ -49,7 +50,7 @@ void SurfaceRegistryBinding::startSurface(
method.call(
runtime,
{jsi::String::createFromUtf8(runtime, moduleName),
jsi::valueFromDynamic(runtime, parameters),
std::move(parameters),
jsi::Value(runtime, displayModeToInt(displayMode))});
} else {
throwIfBridgeless(runtime, global, "startSurface");
@@ -58,7 +59,7 @@ void SurfaceRegistryBinding::startSurface(
"AppRegistry",
"runApplication",
{jsi::String::createFromUtf8(runtime, moduleName),
jsi::valueFromDynamic(runtime, parameters),
std::move(parameters),
jsi::Value(runtime, displayModeToInt(displayMode))});
}
}
@@ -70,10 +71,11 @@ void SurfaceRegistryBinding::setSurfaceProps(
folly::dynamic const &initialProps,
DisplayMode displayMode) {
SystraceSection s("UIManagerBinding::setSurfaceProps");
folly::dynamic parameters = folly::dynamic::object();
parameters["rootTag"] = surfaceId;
parameters["initialProps"] = initialProps;
parameters["fabric"] = true;
jsi::Object parameters(runtime);
parameters.setProperty(runtime, "rootTag", surfaceId);
parameters.setProperty(
runtime, "initialProps", jsi::valueFromDynamic(runtime, initialProps));
parameters.setProperty(runtime, "fabric", true);
auto global = runtime.global();
auto registry = global.getProperty(runtime, "RN$AppRegistry");
@@ -83,7 +85,7 @@ void SurfaceRegistryBinding::setSurfaceProps(
method.call(
runtime,
{jsi::String::createFromUtf8(runtime, moduleName),
jsi::valueFromDynamic(runtime, parameters),
std::move(parameters),
jsi::Value(runtime, displayModeToInt(displayMode))});
} else {
throwIfBridgeless(runtime, global, "setSurfaceProps");
@@ -92,7 +94,7 @@ void SurfaceRegistryBinding::setSurfaceProps(
"AppRegistry",
"setSurfaceProps",
{jsi::String::createFromUtf8(runtime, moduleName),
jsi::valueFromDynamic(runtime, parameters),
std::move(parameters),
jsi::Value(runtime, displayModeToInt(displayMode))});
}
}