diff options
author | enne <enne@chromium.org> | 2015-12-10 11:50:18 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-10 19:51:19 +0000 |
commit | 3b006fb5a67c9e9bc0adf3f68d72a10afa221198 (patch) | |
tree | 998b86d0c377488598212cb1dc818656eaa77c20 /cc/blink/web_display_item_list_impl.cc | |
parent | 2238dfbf0f1ae3bac2004ea2303c0d9417ae51a3 (diff) | |
download | chromium_src-3b006fb5a67c9e9bc0adf3f68d72a10afa221198.zip chromium_src-3b006fb5a67c9e9bc0adf3f68d72a10afa221198.tar.gz chromium_src-3b006fb5a67c9e9bc0adf3f68d72a10afa221198.tar.bz2 |
cc: Shrink size of display item
This removes all of the base class members from display item and instead
calculates them during allocation. This is done by processing each item
as it is added, which requires passing in all the ctor args to
CreateAndAppendItem. This reduces the size of all display items by 16
bytes so that the largest is now "only" 80 bytes and the smallest is 8.
Also, DisplayItemList had a bug where it would allocate an item,
(maybe) process all added items, and then SetNew on that last item. In
that case, the processing would skip the final item because it was just
a newly allocated item. This patch fixes that by the above changes
to CreateAndAppendItem.
R=vmpstr@chromium.org,chrishtr@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1494223003
Cr-Commit-Position: refs/heads/master@{#364437}
Diffstat (limited to 'cc/blink/web_display_item_list_impl.cc')
-rw-r--r-- | cc/blink/web_display_item_list_impl.cc | 67 |
1 files changed, 25 insertions, 42 deletions
diff --git a/cc/blink/web_display_item_list_impl.cc b/cc/blink/web_display_item_list_impl.cc index b030e93..9859d1c 100644 --- a/cc/blink/web_display_item_list_impl.cc +++ b/cc/blink/web_display_item_list_impl.cc @@ -50,13 +50,11 @@ void WebDisplayItemListImpl::appendDrawingItem( const blink::WebRect& visual_rect, const SkPicture* picture) { if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = - display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>( - visual_rect); - item->SetNew(skia::SharePtr(const_cast<SkPicture*>(picture))); + display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>( + visual_rect, skia::SharePtr(const_cast<SkPicture*>(picture))); } else { - cc::DrawingDisplayItem item; - item.SetNew(skia::SharePtr(const_cast<SkPicture*>(picture))); + cc::DrawingDisplayItem item( + skia::SharePtr(const_cast<SkPicture*>(picture))); display_item_list_->RasterIntoCanvas(item); } } @@ -70,12 +68,10 @@ void WebDisplayItemListImpl::appendClipItem( rounded_rects.push_back(rounded_clip_rects[i]); } if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>( - visual_rect); - item->SetNew(clip_rect, rounded_rects); + display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>( + visual_rect, clip_rect, rounded_rects); } else { - cc::ClipDisplayItem item; - item.SetNew(clip_rect, rounded_rects); + cc::ClipDisplayItem item(clip_rect, rounded_rects); display_item_list_->RasterIntoCanvas(item); } } @@ -96,13 +92,10 @@ void WebDisplayItemListImpl::appendClipPathItem( SkRegion::Op clip_op, bool antialias) { if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = - display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>( - visual_rect); - item->SetNew(clip_path, clip_op, antialias); + display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>( + visual_rect, clip_path, clip_op, antialias); } else { - cc::ClipPathDisplayItem item; - item.SetNew(clip_path, clip_op, antialias); + cc::ClipPathDisplayItem item(clip_path, clip_op, antialias); display_item_list_->RasterIntoCanvas(item); } } @@ -121,13 +114,10 @@ void WebDisplayItemListImpl::appendFloatClipItem( const blink::WebRect& visual_rect, const blink::WebFloatRect& clip_rect) { if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = - display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>( - visual_rect); - item->SetNew(clip_rect); + display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>( + visual_rect, clip_rect); } else { - cc::FloatClipDisplayItem item; - item.SetNew(clip_rect); + cc::FloatClipDisplayItem item(clip_rect); display_item_list_->RasterIntoCanvas(item); } } @@ -149,13 +139,10 @@ void WebDisplayItemListImpl::appendTransformItem( transform.matrix() = matrix; if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = - display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>( - visual_rect); - item->SetNew(transform); + display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>( + visual_rect, transform); } else { - cc::TransformDisplayItem item; - item.SetNew(transform); + cc::TransformDisplayItem item(transform); display_item_list_->RasterIntoCanvas(item); } } @@ -182,15 +169,13 @@ void WebDisplayItemListImpl::appendCompositingItem( // value, but that breaks slimming paint reftests. if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = - display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>( - visual_rect); - item->SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), - xfermode, bounds, skia::SharePtr(color_filter)); + display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>( + visual_rect, static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), + xfermode, bounds, skia::SharePtr(color_filter)); } else { - cc::CompositingDisplayItem item; - item.SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), - xfermode, bounds, skia::SharePtr(color_filter)); + cc::CompositingDisplayItem item( + static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), xfermode, + bounds, skia::SharePtr(color_filter)); display_item_list_->RasterIntoCanvas(item); } } @@ -213,12 +198,10 @@ void WebDisplayItemListImpl::appendFilterItem( static_cast<const WebFilterOperationsImpl&>(filters); if (display_item_list_->RetainsIndividualDisplayItems()) { - auto* item = display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>( - visual_rect); - item->SetNew(filters_impl.AsFilterOperations(), bounds); + display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>( + visual_rect, filters_impl.AsFilterOperations(), bounds); } else { - cc::FilterDisplayItem item; - item.SetNew(filters_impl.AsFilterOperations(), bounds); + cc::FilterDisplayItem item(filters_impl.AsFilterOperations(), bounds); display_item_list_->RasterIntoCanvas(item); } } |