Title: [291516] trunk/Source/WebCore
Revision
291516
Author
nmouchta...@apple.com
Date
2022-03-18 17:59:09 -0700 (Fri, 18 Mar 2022)

Log Message

Calc() cleanup
https://bugs.webkit.org/show_bug.cgi?id=237982

Reviewed by Simon Fraser.

Small cleanup of CSSCalcExpressionNodeParser and CSSCalcOperationNode needed after
adding more math functions.

* css/calc/CSSCalcExpressionNodeParser.cpp:
(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):
* css/calc/CSSCalcOperationNode.cpp:
(WebCore::determineCategory):
(WebCore::CSSCalcOperationNode::simplifyNode):
* css/calc/CSSCalcOperationNode.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (291515 => 291516)


--- trunk/Source/WebCore/ChangeLog	2022-03-19 00:55:48 UTC (rev 291515)
+++ trunk/Source/WebCore/ChangeLog	2022-03-19 00:59:09 UTC (rev 291516)
@@ -1,3 +1,20 @@
+2022-03-18  Nikolaos Mouchtaris  <nmouchta...@apple.com>
+
+        Calc() cleanup
+        https://bugs.webkit.org/show_bug.cgi?id=237982
+
+        Reviewed by Simon Fraser.
+
+        Small cleanup of CSSCalcExpressionNodeParser and CSSCalcOperationNode needed after 
+        adding more math functions.
+
+        * css/calc/CSSCalcExpressionNodeParser.cpp:
+        (WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):
+        * css/calc/CSSCalcOperationNode.cpp:
+        (WebCore::determineCategory):
+        (WebCore::CSSCalcOperationNode::simplifyNode):
+        * css/calc/CSSCalcOperationNode.h:
+
 2022-03-18  Eric Carlson  <eric.carl...@apple.com>
 
         [iOS] Fix more build breakage from r291361

Modified: trunk/Source/WebCore/css/calc/CSSCalcExpressionNodeParser.cpp (291515 => 291516)


--- trunk/Source/WebCore/css/calc/CSSCalcExpressionNodeParser.cpp	2022-03-19 00:55:48 UTC (rev 291515)
+++ trunk/Source/WebCore/css/calc/CSSCalcExpressionNodeParser.cpp	2022-03-19 00:59:09 UTC (rev 291516)
@@ -140,11 +140,6 @@
     std::optional<unsigned> maxArgumentCount;
 
     switch (functionID) {
-    case CSSValueMin:
-    case CSSValueMax:
-    case CSSValueHypot:
-        maxArgumentCount = std::nullopt;
-        break;
     case CSSValueClamp:
         minArgumentCount = 3;
         maxArgumentCount = 3;

Modified: trunk/Source/WebCore/css/calc/CSSCalcOperationNode.cpp (291515 => 291516)


--- trunk/Source/WebCore/css/calc/CSSCalcOperationNode.cpp	2022-03-19 00:55:48 UTC (rev 291515)
+++ trunk/Source/WebCore/css/calc/CSSCalcOperationNode.cpp	2022-03-19 00:59:09 UTC (rev 291516)
@@ -73,30 +73,7 @@
         if (rightCategory != CalculationCategory::Number)
             return CalculationCategory::Other;
         return leftCategory;
-    case CalcOperator::Sin:
-    case CalcOperator::Cos:
-    case CalcOperator::Tan:
-    case CalcOperator::Min:
-    case CalcOperator::Max:
-    case CalcOperator::Clamp:
-    case CalcOperator::Log:
-    case CalcOperator::Exp:
-    case CalcOperator::Asin:
-    case CalcOperator::Acos:
-    case CalcOperator::Atan:
-    case CalcOperator::Atan2:
-    case CalcOperator::Abs:
-    case CalcOperator::Sign:
-    case CalcOperator::Mod:
-    case CalcOperator::Rem:
-    case CalcOperator::Round:
-    case CalcOperator::Up:
-    case CalcOperator::Down:
-    case CalcOperator::Nearest:
-    case CalcOperator::ToZero:
-    case CalcOperator::Pow:
-    case CalcOperator::Sqrt:
-    case CalcOperator::Hypot:
+    default:
         ASSERT_NOT_REACHED();
         return CalculationCategory::Other;
     }
@@ -162,33 +139,13 @@
                 return CalculationCategory::Other;
             break;
         }
-        case CalcOperator::Sin:
-        case CalcOperator::Cos:
-        case CalcOperator::Tan:
-        case CalcOperator::Abs:
-        case CalcOperator::Sign:
-        case CalcOperator::Min:
-        case CalcOperator::Max:
-        case CalcOperator::Clamp:
-        case CalcOperator::Log:
-        case CalcOperator::Exp:
-        case CalcOperator::Asin:
-        case CalcOperator::Acos:
-        case CalcOperator::Atan:
-        case CalcOperator::Atan2:
-        case CalcOperator::Mod:
-        case CalcOperator::Rem:
-        case CalcOperator::Round:
-        case CalcOperator::Up:
-        case CalcOperator::Down:
-        case CalcOperator::Nearest:
-        case CalcOperator::ToZero:
-        case CalcOperator::Hypot:
-            return CalculationCategory::Other;
         case CalcOperator::Pow:
         case CalcOperator::Sqrt:
             // The type of pow() and sqrt() functions must evaluate to a number.
             return CalculationCategory::Number;
+        default:
+            return CalculationCategory::Other;
+        
         }
     }
 
@@ -933,43 +890,15 @@
         
         if (calcOperationNode.isCalcSumNode()) {
             calcOperationNode.hoistChildrenWithOperator(CalcOperator::Add);
-            calcOperationNode.combineChildren();
         }
 
         if (calcOperationNode.isCalcProductNode()) {
             calcOperationNode.hoistChildrenWithOperator(CalcOperator::Multiply);
-            calcOperationNode.combineChildren();
         }
         
-        if (calcOperationNode.isMinOrMaxNode())
+        if (calcOperationNode.isMinOrMaxNode() || calcOperationNode.isHypotNode() || calcOperationNode.isCalcProductNode() || calcOperationNode.isCalcSumNode() || (calcOperationNode.shouldPreserveFunction() && depth))
             calcOperationNode.combineChildren();
-        
-        if (calcOperationNode.isTrigNode() && depth)
-            calcOperationNode.combineChildren();
-        
-        if (calcOperationNode.isExpNode() && depth)
-            calcOperationNode.combineChildren();
-        
-        if (calcOperationNode.isInverseTrigNode() && depth)
-            calcOperationNode.combineChildren();
-        
-        if (calcOperationNode.isAtan2Node() && depth)
-            calcOperationNode.combineChildren();
-        if (calcOperationNode.isSignNode() && depth)
-            calcOperationNode.combineChildren();
 
-        if (calcOperationNode.isSteppedNode() && depth)
-            calcOperationNode.combineChildren();
-        
-        if (calcOperationNode.isRoundOperation() && depth)
-            calcOperationNode.combineChildren();
-
-        if (calcOperationNode.isHypotNode())
-            calcOperationNode.combineChildren();
-
-        if (calcOperationNode.isPowOrSqrtNode() && depth)
-            calcOperationNode.combineChildren();
-
         // If only one child remains, return the child (except at the root).
         auto shouldCombineParentWithOnlyChild = [](const CSSCalcOperationNode& parent, int depth)
         {

Modified: trunk/Source/WebCore/css/calc/CSSCalcOperationNode.h (291515 => 291516)


--- trunk/Source/WebCore/css/calc/CSSCalcOperationNode.h	2022-03-19 00:55:48 UTC (rev 291515)
+++ trunk/Source/WebCore/css/calc/CSSCalcOperationNode.h	2022-03-19 00:59:09 UTC (rev 291516)
@@ -67,6 +67,7 @@
     bool isRoundConstant() const { return (isRoundOperation()) && !m_children.size(); }
     bool isHypotNode() const { return m_operator == CalcOperator::Hypot; }
     bool isPowOrSqrtNode() const { return m_operator == CalcOperator::Pow || m_operator == CalcOperator::Sqrt; }
+    bool shouldPreserveFunction() const { return isTrigNode() || isExpNode() || isInverseTrigNode() || isAtan2Node() || isSignNode() || isSignNode() || isSteppedNode() || isRoundOperation() || isPowOrSqrtNode(); }
 
     void hoistChildrenWithOperator(CalcOperator);
     void combineChildren();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to