From 340013548784a4e1634e38e56550a792cc81dcc2 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Wed, 26 Feb 2020 22:03:14 -0800 Subject: [PATCH] Fabric: Using `traitCast` in `layoutMetricsFromShadowNode` Summary: We use this function in Diffing, and Diffing is one of the hottest pieces of Fabric. Removing `dynamic_cast` here should improve perf. See the previous diff for more details. Changelog: [Internal] Fabric-specific internal change. Reviewed By: sammy-SC Differential Revision: D20052023 fbshipit-source-id: d6427ebf076d7f8244f0aeaf16407efa2368957e --- ReactCommon/fabric/mounting/ShadowView.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ReactCommon/fabric/mounting/ShadowView.cpp b/ReactCommon/fabric/mounting/ShadowView.cpp index 0bf2e57cd18..800308add54 100644 --- a/ReactCommon/fabric/mounting/ShadowView.cpp +++ b/ReactCommon/fabric/mounting/ShadowView.cpp @@ -12,11 +12,11 @@ namespace facebook { namespace react { -static LayoutMetrics layoutMetricsFromShadowNode(const ShadowNode &shadowNode) { - auto layoutableShadowNode = - dynamic_cast(&shadowNode); - return layoutableShadowNode ? layoutableShadowNode->getLayoutMetrics() - : EmptyLayoutMetrics; +static LayoutMetrics layoutMetricsFromShadowNode(ShadowNode const &shadowNode) { + auto layotableShadowNode = + traitCast(&shadowNode); + return layotableShadowNode ? layotableShadowNode->getLayoutMetrics() + : EmptyLayoutMetrics; } ShadowView::ShadowView(const ShadowNode &shadowNode)