Bug 1344971 - Part 7: Remove AssertDisplayItemData since it has a large runtime cost. r?mstange
MozReview-Commit-ID: Li9lM1TwlWt
--- a/layout/painting/FrameLayerBuilder.cpp
+++ b/layout/painting/FrameLayerBuilder.cpp
@@ -1793,33 +1793,24 @@ FrameLayerBuilder::FlashPaint(gfxContext
{
float r = float(rand()) / RAND_MAX;
float g = float(rand()) / RAND_MAX;
float b = float(rand()) / RAND_MAX;
aContext->SetColor(Color(r, g, b, 0.4f));
aContext->Paint();
}
-static FrameLayerBuilder::DisplayItemData*
-AssertDisplayItemData(FrameLayerBuilder::DisplayItemData* aData)
-{
- MOZ_RELEASE_ASSERT(aData);
- MOZ_RELEASE_ASSERT(sAliveDisplayItemDatas && sAliveDisplayItemDatas->Contains(aData));
- MOZ_RELEASE_ASSERT(aData->mLayer);
- return aData;
-}
-
FrameLayerBuilder::DisplayItemData*
FrameLayerBuilder::GetDisplayItemData(nsIFrame* aFrame, uint32_t aKey)
{
const nsTArray<DisplayItemData*>* array =
aFrame->Properties().Get(LayerManagerDataProperty());
if (array) {
for (uint32_t i = 0; i < array->Length(); i++) {
- DisplayItemData* item = AssertDisplayItemData(array->ElementAt(i));
+ DisplayItemData* item = array->ElementAt(i);
if (item->mDisplayItemKey == aKey &&
item->mLayer->Manager() == mRetainingManager) {
return item;
}
}
}
return nullptr;
}
@@ -2038,34 +2029,34 @@ FrameLayerBuilder::WillEndTransaction()
/* static */ FrameLayerBuilder::DisplayItemData*
FrameLayerBuilder::GetDisplayItemDataForManager(nsDisplayItem* aItem,
LayerManager* aManager)
{
const nsTArray<DisplayItemData*>* array =
aItem->Frame()->Properties().Get(LayerManagerDataProperty());
if (array) {
for (uint32_t i = 0; i < array->Length(); i++) {
- DisplayItemData* item = AssertDisplayItemData(array->ElementAt(i));
+ DisplayItemData* item = array->ElementAt(i);
if (item->mDisplayItemKey == aItem->GetPerFrameKey() &&
item->mLayer->Manager() == aManager) {
return item;
}
}
}
return nullptr;
}
bool
FrameLayerBuilder::HasRetainedDataFor(nsIFrame* aFrame, uint32_t aDisplayItemKey)
{
const nsTArray<DisplayItemData*>* array =
aFrame->Properties().Get(LayerManagerDataProperty());
if (array) {
for (uint32_t i = 0; i < array->Length(); i++) {
- if (AssertDisplayItemData(array->ElementAt(i))->mDisplayItemKey == aDisplayItemKey) {
+ if (array->ElementAt(i)->mDisplayItemKey == aDisplayItemKey) {
return true;
}
}
}
return false;
}
void
@@ -2073,17 +2064,17 @@ FrameLayerBuilder::IterateRetainedDataFo
{
const nsTArray<DisplayItemData*>* array =
aFrame->Properties().Get(LayerManagerDataProperty());
if (!array) {
return;
}
for (uint32_t i = 0; i < array->Length(); i++) {
- DisplayItemData* data = AssertDisplayItemData(array->ElementAt(i));
+ DisplayItemData* data = array->ElementAt(i);
if (data->mDisplayItemKey != nsDisplayItem::TYPE_ZERO) {
aCallback(aFrame, data);
}
}
}
FrameLayerBuilder::DisplayItemData*
FrameLayerBuilder::GetOldLayerForFrame(nsIFrame* aFrame, uint32_t aDisplayItemKey)
@@ -2141,17 +2132,17 @@ FrameLayerBuilder::GetDebugOldLayerFor(n
const nsTArray<DisplayItemData*>* array =
aFrame->Properties().Get(LayerManagerDataProperty());
if (!array) {
return nullptr;
}
for (uint32_t i = 0; i < array->Length(); i++) {
- DisplayItemData *data = AssertDisplayItemData(array->ElementAt(i));
+ DisplayItemData *data = array->ElementAt(i);
if (data->mDisplayItemKey == aDisplayItemKey) {
return data->mLayer;
}
}
return nullptr;
}
@@ -2162,17 +2153,16 @@ FrameLayerBuilder::GetDebugSingleOldPain
aFrame->Properties().Get(LayerManagerDataProperty());
if (!array) {
return nullptr;
}
Layer* layer = nullptr;
for (DisplayItemData* data : *array) {
- AssertDisplayItemData(data);
if (!data->mLayer->AsPaintedLayer()) {
continue;
}
if (layer && layer != data->mLayer) {
// More than one layer assigned, bail.
return nullptr;
}
layer = data->mLayer;
@@ -5788,34 +5778,34 @@ FrameLayerBuilder::InvalidateAllLayers(L
/* static */ void
FrameLayerBuilder::InvalidateAllLayersForFrame(nsIFrame *aFrame)
{
const nsTArray<DisplayItemData*>* array =
aFrame->Properties().Get(LayerManagerDataProperty());
if (array) {
for (uint32_t i = 0; i < array->Length(); i++) {
- AssertDisplayItemData(array->ElementAt(i))->mParent->mInvalidateAllLayers = true;
+ array->ElementAt(i)->mParent->mInvalidateAllLayers = true;
}
}
}
/* static */
Layer*
FrameLayerBuilder::GetDedicatedLayer(nsIFrame* aFrame, uint32_t aDisplayItemKey)
{
//TODO: This isn't completely correct, since a frame could exist as a layer
// in the normal widget manager, and as a different layer (or no layer)
// in the secondary manager
const nsTArray<DisplayItemData*>* array =
aFrame->Properties().Get(LayerManagerDataProperty());
if (array) {
for (uint32_t i = 0; i < array->Length(); i++) {
- DisplayItemData *element = AssertDisplayItemData(array->ElementAt(i));
+ DisplayItemData *element = array->ElementAt(i);
if (!element->mParent->mLayerManager->IsWidgetLayerManager()) {
continue;
}
if (element->mDisplayItemKey == aDisplayItemKey) {
if (element->mOptLayer) {
return element->mOptLayer;
}
@@ -5864,17 +5854,17 @@ FrameLayerBuilder::GetPaintedLayerScaleF
const nsTArray<DisplayItemData*>* array =
f->Properties().Get(LayerManagerDataProperty());
if (!array) {
continue;
}
for (uint32_t i = 0; i < array->Length(); i++) {
- Layer* layer = AssertDisplayItemData(array->ElementAt(i))->mLayer;
+ Layer* layer = array->ElementAt(i)->mLayer;
ContainerLayer* container = layer->AsContainerLayer();
if (!container ||
!layer->Manager()->IsWidgetLayerManager()) {
continue;
}
for (Layer* l = container->GetFirstChild(); l; l = l->GetNextSibling()) {
PaintedDisplayItemLayerUserData* data =
static_cast<PaintedDisplayItemLayerUserData*>
@@ -6304,17 +6294,17 @@ FrameLayerBuilder::GetMostRecentGeometry
properties.Get(LayerManagerDataProperty());
if (!dataArray) {
return nullptr;
}
// Find our display item data, if it exists, and return its geometry.
uint32_t itemPerFrameKey = aItem->GetPerFrameKey();
for (uint32_t i = 0; i < dataArray->Length(); i++) {
- DisplayItemData* data = AssertDisplayItemData(dataArray->ElementAt(i));
+ DisplayItemData* data = dataArray->ElementAt(i);
if (data->GetDisplayItemKey() == itemPerFrameKey) {
return data->GetGeometry();
}
}
return nullptr;
}