From cd0191c2470523b996a379a6761d3a57b1b83f45 Mon Sep 17 00:00:00 2001 From: Sidharth Guglani Date: Fri, 15 Nov 2019 06:37:39 -0800 Subject: [PATCH] not using templates for updating styles which are used via bitfield Summary: We want completely remove usages of Bitfield as it uses templates which bloats binary size This stack will reduce 2.2 Kb in binary size bringing it down to 61.3KB on armv7 In this diff we are removing usage of template while updating styles. ## Changelog: [Internal][Yoga] : Not using templates for updating styles Reviewed By: astreet Differential Revision: D18519570 fbshipit-source-id: 2324088b8c63154f818b1da1edf24c0533e10082 --- yoga/Yoga.cpp | 54 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index 41de5119..1821c867 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -582,7 +582,10 @@ void updateIndexedStyleProp( YOGA_EXPORT void YGNodeStyleSetDirection( const YGNodeRef node, const YGDirection value) { - updateStyle(node, &YGStyle::direction, value); + if (node->getStyle().direction() != value) { + node->getStyle().direction() = value; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGDirection YGNodeStyleGetDirection(const YGNodeConstRef node) { return node->getStyle().direction(); @@ -591,8 +594,10 @@ YOGA_EXPORT YGDirection YGNodeStyleGetDirection(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetFlexDirection( const YGNodeRef node, const YGFlexDirection flexDirection) { - updateStyle( - node, &YGStyle::flexDirection, flexDirection); + if (node->getStyle().flexDirection() != flexDirection) { + node->getStyle().flexDirection() = flexDirection; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGFlexDirection YGNodeStyleGetFlexDirection(const YGNodeConstRef node) { @@ -602,8 +607,10 @@ YGNodeStyleGetFlexDirection(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetJustifyContent( const YGNodeRef node, const YGJustify justifyContent) { - updateStyle( - node, &YGStyle::justifyContent, justifyContent); + if (node->getStyle().justifyContent() != justifyContent) { + node->getStyle().justifyContent() = justifyContent; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGJustify YGNodeStyleGetJustifyContent(const YGNodeConstRef node) { return node->getStyle().justifyContent(); @@ -612,8 +619,10 @@ YOGA_EXPORT YGJustify YGNodeStyleGetJustifyContent(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetAlignContent( const YGNodeRef node, const YGAlign alignContent) { - updateStyle( - node, &YGStyle::alignContent, alignContent); + if (node->getStyle().alignContent() != alignContent) { + node->getStyle().alignContent() = alignContent; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGAlign YGNodeStyleGetAlignContent(const YGNodeConstRef node) { return node->getStyle().alignContent(); @@ -622,7 +631,10 @@ YOGA_EXPORT YGAlign YGNodeStyleGetAlignContent(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetAlignItems( const YGNodeRef node, const YGAlign alignItems) { - updateStyle(node, &YGStyle::alignItems, alignItems); + if (node->getStyle().alignItems() != alignItems) { + node->getStyle().alignItems() = alignItems; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGAlign YGNodeStyleGetAlignItems(const YGNodeConstRef node) { return node->getStyle().alignItems(); @@ -631,7 +643,10 @@ YOGA_EXPORT YGAlign YGNodeStyleGetAlignItems(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetAlignSelf( const YGNodeRef node, const YGAlign alignSelf) { - updateStyle(node, &YGStyle::alignSelf, alignSelf); + if (node->getStyle().alignSelf() != alignSelf) { + node->getStyle().alignSelf() = alignSelf; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGAlign YGNodeStyleGetAlignSelf(const YGNodeConstRef node) { return node->getStyle().alignSelf(); @@ -640,8 +655,10 @@ YOGA_EXPORT YGAlign YGNodeStyleGetAlignSelf(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetPositionType( const YGNodeRef node, const YGPositionType positionType) { - updateStyle( - node, &YGStyle::positionType, positionType); + if (node->getStyle().positionType() != positionType) { + node->getStyle().positionType() = positionType; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGPositionType YGNodeStyleGetPositionType(const YGNodeConstRef node) { @@ -651,7 +668,10 @@ YGNodeStyleGetPositionType(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetFlexWrap( const YGNodeRef node, const YGWrap flexWrap) { - updateStyle(node, &YGStyle::flexWrap, flexWrap); + if (node->getStyle().flexWrap() != flexWrap) { + node->getStyle().flexWrap() = flexWrap; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGWrap YGNodeStyleGetFlexWrap(const YGNodeConstRef node) { return node->getStyle().flexWrap(); @@ -660,7 +680,10 @@ YOGA_EXPORT YGWrap YGNodeStyleGetFlexWrap(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetOverflow( const YGNodeRef node, const YGOverflow overflow) { - updateStyle(node, &YGStyle::overflow, overflow); + if (node->getStyle().overflow() != overflow) { + node->getStyle().overflow() = overflow; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGOverflow YGNodeStyleGetOverflow(const YGNodeConstRef node) { return node->getStyle().overflow(); @@ -669,7 +692,10 @@ YOGA_EXPORT YGOverflow YGNodeStyleGetOverflow(const YGNodeConstRef node) { YOGA_EXPORT void YGNodeStyleSetDisplay( const YGNodeRef node, const YGDisplay display) { - updateStyle(node, &YGStyle::display, display); + if (node->getStyle().display() != display) { + node->getStyle().display() = display; + node->markDirtyAndPropogate(); + } } YOGA_EXPORT YGDisplay YGNodeStyleGetDisplay(const YGNodeConstRef node) { return node->getStyle().display();