Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(210)

Side by Side Diff: Source/core/rendering/RenderGrid.cpp

Issue 869323003: Oilpan: move RenderObjects off heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: minor fixes Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 , rowTracks(gridRowCount) 241 , rowTracks(gridRowCount)
242 { 242 {
243 } 243 }
244 244
245 Vector<GridTrack> columnTracks; 245 Vector<GridTrack> columnTracks;
246 Vector<GridTrack> rowTracks; 246 Vector<GridTrack> rowTracks;
247 Vector<size_t> contentSizedTracksIndex; 247 Vector<size_t> contentSizedTracksIndex;
248 248
249 // Performance optimization: hold onto these Vectors until the end of Layout to avoid repeated malloc / free. 249 // Performance optimization: hold onto these Vectors until the end of Layout to avoid repeated malloc / free.
250 Vector<GridTrack*> filteredTracks; 250 Vector<GridTrack*> filteredTracks;
251 WillBeHeapVector<GridItemWithSpan> itemsSortedByIncreasingSpan; 251 Vector<GridItemWithSpan> itemsSortedByIncreasingSpan;
252 Vector<GridTrack*> growBeyondGrowthLimitsTracks; 252 Vector<GridTrack*> growBeyondGrowthLimitsTracks;
253 }; 253 };
254 254
255 RenderGrid::RenderGrid(Element* element) 255 RenderGrid::RenderGrid(Element* element)
256 : RenderBlock(element) 256 : RenderBlock(element)
257 , m_gridIsDirty(true) 257 , m_gridIsDirty(true)
258 , m_orderIterator(this) 258 , m_orderIterator(this)
259 { 259 {
260 ASSERT(!childrenInline()); 260 ASSERT(!childrenInline());
261 } 261 }
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 659
660 return logicalHeightForChild(child, columnTracks); 660 return logicalHeightForChild(child, columnTracks);
661 } 661 }
662 662
663 // We're basically using a class instead of a std::pair for two reasons. First o f all, accessing gridItem() or 663 // We're basically using a class instead of a std::pair for two reasons. First o f all, accessing gridItem() or
664 // coordinate() is much more self-explanatory that using .first or .second membe rs in the pair. Secondly the class 664 // coordinate() is much more self-explanatory that using .first or .second membe rs in the pair. Secondly the class
665 // allows us to precompute the value of the span, something which is quite conve nient for the sorting. Having a 665 // allows us to precompute the value of the span, something which is quite conve nient for the sorting. Having a
666 // std::pair<RenderBox*, size_t> does not work either because we still need the GridCoordinate so we'd have to add an 666 // std::pair<RenderBox*, size_t> does not work either because we still need the GridCoordinate so we'd have to add an
667 // extra hash lookup for each item at the beginning of RenderGrid::resolveConten tBasedTrackSizingFunctionsForItems(). 667 // extra hash lookup for each item at the beginning of RenderGrid::resolveConten tBasedTrackSizingFunctionsForItems().
668 class GridItemWithSpan { 668 class GridItemWithSpan {
669 ALLOW_ONLY_INLINE_ALLOCATION(); 669 ALLOW_ONLY_INLINE_ALLOCATION();
haraken 2015/02/04 05:48:56 You can drop ALLOW_ONLY_INLINE_ALLOCATION().
sof 2015/02/04 08:44:31 Done.
670 public: 670 public:
671 GridItemWithSpan(RenderBox& gridItem, const GridCoordinate& coordinate, Grid TrackSizingDirection direction) 671 GridItemWithSpan(RenderBox& gridItem, const GridCoordinate& coordinate, Grid TrackSizingDirection direction)
672 : m_gridItem(gridItem) 672 : m_gridItem(&gridItem)
673 , m_coordinate(coordinate) 673 , m_coordinate(coordinate)
674 { 674 {
675 const GridSpan& span = (direction == ForRows) ? coordinate.rows : coordi nate.columns; 675 const GridSpan& span = (direction == ForRows) ? coordinate.rows : coordi nate.columns;
676 m_span = span.resolvedFinalPosition.toInt() - span.resolvedInitialPositi on.toInt() + 1; 676 m_span = span.resolvedFinalPosition.toInt() - span.resolvedInitialPositi on.toInt() + 1;
677 } 677 }
678 678
679 RenderBox& gridItem() const { return *m_gridItem; } 679 RenderBox& gridItem() const { return *m_gridItem; }
680 GridCoordinate coordinate() const { return m_coordinate; } 680 GridCoordinate coordinate() const { return m_coordinate; }
681 #if ENABLE(ASSERT) 681 #if ENABLE(ASSERT)
682 size_t span() const { return m_span; } 682 size_t span() const { return m_span; }
683 #endif 683 #endif
684 684
685 bool operator<(const GridItemWithSpan other) const { return m_span < other.m _span; } 685 bool operator<(const GridItemWithSpan other) const { return m_span < other.m _span; }
686 686
687 void trace(Visitor* visitor)
688 {
689 visitor->trace(m_gridItem);
690 }
691
692 private: 687 private:
693 RawPtrWillBeMember<RenderBox> m_gridItem; 688 RenderBox* m_gridItem;
694 GridCoordinate m_coordinate; 689 GridCoordinate m_coordinate;
695 size_t m_span; 690 size_t m_span;
696 }; 691 };
697 692
698 bool RenderGrid::spanningItemCrossesFlexibleSizedTracks(const GridCoordinate& co ordinate, GridTrackSizingDirection direction) const 693 bool RenderGrid::spanningItemCrossesFlexibleSizedTracks(const GridCoordinate& co ordinate, GridTrackSizingDirection direction) const
699 { 694 {
700 const GridResolvedPosition initialTrackPosition = (direction == ForColumns) ? coordinate.columns.resolvedInitialPosition : coordinate.rows.resolvedInitialPo sition; 695 const GridResolvedPosition initialTrackPosition = (direction == ForColumns) ? coordinate.columns.resolvedInitialPosition : coordinate.rows.resolvedInitialPo sition;
701 const GridResolvedPosition finalTrackPosition = (direction == ForColumns) ? coordinate.columns.resolvedFinalPosition : coordinate.rows.resolvedFinalPosition ; 696 const GridResolvedPosition finalTrackPosition = (direction == ForColumns) ? coordinate.columns.resolvedFinalPosition : coordinate.rows.resolvedFinalPosition ;
702 697
703 for (GridResolvedPosition trackPosition = initialTrackPosition; trackPositio n <= finalTrackPosition; ++trackPosition) { 698 for (GridResolvedPosition trackPosition = initialTrackPosition; trackPositio n <= finalTrackPosition; ++trackPosition) {
(...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after
1736 if (isOutOfFlowPositioned()) 1731 if (isOutOfFlowPositioned())
1737 return "RenderGrid (positioned)"; 1732 return "RenderGrid (positioned)";
1738 if (isAnonymous()) 1733 if (isAnonymous())
1739 return "RenderGrid (generated)"; 1734 return "RenderGrid (generated)";
1740 if (isRelPositioned()) 1735 if (isRelPositioned())
1741 return "RenderGrid (relative positioned)"; 1736 return "RenderGrid (relative positioned)";
1742 return "RenderGrid"; 1737 return "RenderGrid";
1743 } 1738 }
1744 1739
1745 } // namespace blink 1740 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698