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