Modified: trunk/Source/WebCore/ChangeLog (279305 => 279306)
--- trunk/Source/WebCore/ChangeLog 2021-06-26 01:47:28 UTC (rev 279305)
+++ trunk/Source/WebCore/ChangeLog 2021-06-26 02:26:41 UTC (rev 279306)
@@ -1,3 +1,13 @@
+2021-06-25 Alan Bujtas <[email protected]>
+
+ [LFC][TFC] Remove redundant struct ResolvedItem
+ https://bugs.webkit.org/show_bug.cgi?id=227405
+
+ Reviewed by Sam Weinig.
+
+ * layout/formattingContexts/table/TableLayout.cpp:
+ (WebCore::Layout::distributeAvailableSpace):
+
2021-06-25 Myles C. Maxfield <[email protected]>
[macOS] WebGL content is unable to use the discrete GPU
Modified: trunk/Source/WebCore/layout/formattingContexts/table/TableLayout.cpp (279305 => 279306)
--- trunk/Source/WebCore/layout/formattingContexts/table/TableLayout.cpp 2021-06-26 01:47:28 UTC (rev 279305)
+++ trunk/Source/WebCore/layout/formattingContexts/table/TableLayout.cpp 2021-06-26 02:26:41 UTC (rev 279306)
@@ -113,14 +113,10 @@
template <typename SpanType>
static Vector<LayoutUnit> distributeAvailableSpace(const TableGrid& grid, LayoutUnit availableSpace, const WTF::Function<GridSpace(const TableGrid::Slot&, size_t)>& slotSpace)
{
- struct ResolvedItem {
- GridSpace slotSpace;
- };
-
auto& columns = grid.columns();
auto& rows = grid.rows();
// 1. Collect the non-spanning spaces first. They are used for the final distribution as well as for distributing the spanning space.
- Vector<std::optional<ResolvedItem>> resolvedItems(SpanType::size(grid));
+ Vector<std::optional<GridSpace>> resolvedItems(SpanType::size(grid));
for (size_t columnIndex = 0; columnIndex < columns.size(); ++columnIndex) {
for (size_t rowIndex = 0; rowIndex < rows.size(); ++rowIndex) {
auto& slot = *grid.slot({ columnIndex, rowIndex });
@@ -128,8 +124,8 @@
continue;
auto index = SpanType::index(columnIndex, rowIndex);
if (!resolvedItems[index])
- resolvedItems[index] = ResolvedItem { };
- resolvedItems[index]->slotSpace = max(resolvedItems[index]->slotSpace, slotSpace(slot, index));
+ resolvedItems[index] = GridSpace { };
+ resolvedItems[index] = max(*resolvedItems[index], slotSpace(slot, index));
}
}
@@ -174,7 +170,7 @@
continue;
ASSERT(unresolvedColumnCount);
--unresolvedColumnCount;
- unresolvedSpanningSpace -= resolvedItems[spanIndex]->slotSpace;
+ unresolvedSpanningSpace -= *resolvedItems[spanIndex];
}
ASSERT(unresolvedColumnCount);
auto equalSpaceForSpannedColumns = unresolvedSpanningSpace / unresolvedColumnCount;
@@ -181,7 +177,7 @@
for (auto spanIndex = SpanType::startSpan(cell); spanIndex < SpanType::endSpan(cell); ++spanIndex) {
if (resolvedItems[spanIndex])
continue;
- resolvedItems[spanIndex] = ResolvedItem { equalSpaceForSpannedColumns };
+ resolvedItems[spanIndex] = equalSpaceForSpannedColumns;
}
} else {
// 1. Collect the non-spaning resolved spaces.
@@ -190,7 +186,7 @@
// New resolved widths: [ 3 ] [ 6 ].
auto resolvedSpanningSpace = GridSpace { };
for (auto spanIndex = SpanType::startSpan(cell); spanIndex < SpanType::endSpan(cell); ++spanIndex)
- resolvedSpanningSpace += resolvedItems[spanIndex]->slotSpace;
+ resolvedSpanningSpace += *resolvedItems[spanIndex];
if (resolvedSpanningSpace.preferredSpace >= unresolvedSpanningSpace.preferredSpace) {
// The spanning cell fits the spanned columns/rows just fine. Nothing to distribute.
continue;
@@ -200,7 +196,7 @@
if (!spaceToDistribute.isEmpty()) {
auto columnsFlexBase = spaceToDistribute.flexBase / resolvedSpanningSpace.flexBase;
for (auto spanIndex = SpanType::startSpan(cell); spanIndex < SpanType::endSpan(cell); ++spanIndex)
- resolvedItems[spanIndex]->slotSpace += GridSpace { resolvedItems[spanIndex]->slotSpace.preferredSpace * columnsFlexBase, resolvedItems[spanIndex]->slotSpace.flexBase * columnsFlexBase};
+ *resolvedItems[spanIndex] += GridSpace { resolvedItems[spanIndex]->preferredSpace * columnsFlexBase, resolvedItems[spanIndex]->flexBase * columnsFlexBase};
}
}
}
@@ -213,7 +209,7 @@
// Fixed size cells don't participate in available space distribution.
auto adjustabledSpace = GridSpace { };
for (auto& resolvedItem : resolvedItems)
- adjustabledSpace += resolvedItem->slotSpace;
+ adjustabledSpace += *resolvedItem;
Vector<LayoutUnit> distributedSpaces(resolvedItems.size());
float spaceToDistribute = availableSpace;
@@ -224,8 +220,8 @@
// we may assign less space to columns.
auto columnsFlexBase = adjustabledSpace.flexBase ? spaceToDistribute / adjustabledSpace.flexBase : 0.f;
for (size_t index = 0; index < resolvedItems.size(); ++index) {
- auto columnExtraSpace = columnsFlexBase * resolvedItems[index]->slotSpace.flexBase;
- distributedSpaces[index] = LayoutUnit { resolvedItems[index]->slotSpace.preferredSpace + columnExtraSpace };
+ auto columnExtraSpace = columnsFlexBase * resolvedItems[index]->flexBase;
+ distributedSpaces[index] = LayoutUnit { resolvedItems[index]->preferredSpace + columnExtraSpace };
}
return distributedSpaces;
}