Skip to content

Commit

Permalink
Reduce use a raw pointers in containers in rendering code
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=267792

Reviewed by Darin Adler.

* Source/WebCore/rendering/LegacyRootInlineBox.cpp:
(WebCore::LegacyRootInlineBox::verticalPositionForBox):
* Source/WebCore/rendering/RenderFragmentedFlow.cpp:
(WebCore::RenderFragmentedFlow::setFragmentRangeForBox):
* Source/WebCore/rendering/RenderFragmentedFlow.h:
* Source/WebCore/rendering/RenderGrid.cpp:
(WebCore::RenderGrid::gridAreaBreadthForOutOfFlowChild):
* Source/WebCore/rendering/RenderGrid.h:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::adjustOverflowScrollbarContainerLayers):
* Source/WebCore/rendering/RenderMultiColumnFlow.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::rareData const):
(WebCore::RenderObject::ensureRareData):
(WebCore::RenderObject::removeRareData):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/RenderTable.cpp:
(WebCore::RenderTable::updateColumnCache const):
* Source/WebCore/rendering/RenderTable.h:
* Source/WebCore/rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::willBeRemovedFromTree):
* Source/WebCore/rendering/RenderTableSection.h:
* Source/WebCore/rendering/RenderText.cpp:
(WebCore::originalTextMap):
(WebCore::inlineWrapperForDisplayContentsMap):
(WebCore::RenderText::setRenderedText):
(WebCore::RenderText::momentarilyRevealLastTypedCharacter):
(WebCore::RenderText::setInlineWrapperForDisplayContents):
* Source/WebCore/rendering/RenderWidget.cpp:
(WebCore::widgetRendererMap):
(WebCore::WidgetHierarchyUpdatesSuspensionScope::moveWidgets):
(WebCore::RenderWidget::setWidget):
(): Deleted.
* Source/WebCore/rendering/RenderWidget.h:
* Source/WebCore/rendering/VerticalPositionCache.h:
(WebCore::VerticalPositionCache::get const):
(WebCore::VerticalPositionCache::set):
(WebCore::VerticalPositionCache::VerticalPositionCache): Deleted.
* Source/WebCore/rendering/line/LineLayoutState.h:
(WebCore::LineLayoutState::FloatList::append):
(WebCore::LineLayoutState::FloatList::floatWithRect const):
* Source/WebCore/rendering/shapes/ShapeOutsideInfo.h:
* Source/WebCore/rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):
* Source/WebCore/rendering/svg/SVGResourcesCache.cpp:
(WebCore::SVGResourcesCache::addResourcesFromRenderer):
(WebCore::SVGResourcesCache::removeResourcesFromRenderer):
(WebCore::SVGResourcesCache::cachedResourcesForRenderer):
* Source/WebCore/rendering/svg/SVGResourcesCache.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.cpp:
(WebCore::LegacyRenderSVGResourceClipper::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceClipper::applyClippingToContext):
(WebCore::LegacyRenderSVGResourceClipper::resourceBoundingBox):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp:
(WebCore::LegacyRenderSVGResourceFilter::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceFilter::applyResource):
(WebCore::LegacyRenderSVGResourceFilter::postApplyResource):
(WebCore::LegacyRenderSVGResourceFilter::markFilterForRepaint):
(WebCore::LegacyRenderSVGResourceFilter::drawingRegion const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp:
(WebCore::LegacyRenderSVGResourceMasker::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceMasker::applyResource):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp:
(WebCore::LegacyRenderSVGResourcePattern::removeClientFromCache):
(WebCore::LegacyRenderSVGResourcePattern::buildPattern):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.h:
* Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::multiColumnDescendantInserted):

Canonical link: https://commits.webkit.org/273264@main
  • Loading branch information
cdumez committed Jan 20, 2024
1 parent 29875ec commit bb14d7e
Show file tree
Hide file tree
Showing 30 changed files with 86 additions and 85 deletions.
4 changes: 2 additions & 2 deletions Source/WebCore/rendering/LegacyRootInlineBox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -802,7 +802,7 @@ LayoutUnit LegacyRootInlineBox::verticalPositionForBox(LegacyInlineBox* box, Ver
bool isRenderInline = renderer->isRenderInline();
if (isRenderInline && !firstLine) {
LayoutUnit cachedPosition;
if (verticalPositionCache.get(renderer, baselineType(), cachedPosition))
if (verticalPositionCache.get(*renderer, baselineType(), cachedPosition))
return cachedPosition;
}

Expand Down Expand Up @@ -851,7 +851,7 @@ LayoutUnit LegacyRootInlineBox::verticalPositionForBox(LegacyInlineBox* box, Ver

// Store the cached value.
if (isRenderInline && !firstLine)
verticalPositionCache.set(renderer, baselineType(), verticalPosition);
verticalPositionCache.set(*renderer, baselineType(), verticalPosition);

return verticalPosition;
}
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderFragmentedFlow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ void RenderFragmentedFlow::setFragmentRangeForBox(const RenderBox& box, RenderFr
{
ASSERT(hasFragments());
ASSERT(startFragment && endFragment && startFragment->fragmentedFlow() == this && endFragment->fragmentedFlow() == this);
auto result = m_fragmentRangeMap.set(&box, RenderFragmentContainerRange(startFragment, endFragment));
auto result = m_fragmentRangeMap.set(box, RenderFragmentContainerRange(startFragment, endFragment));
if (result.isNewEntry)
return;

Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/rendering/RenderFragmentedFlow.h
Original file line number Diff line number Diff line change
Expand Up @@ -237,11 +237,11 @@ class RenderFragmentedFlow: public RenderBlockFlow {
std::unique_ptr<ContainingFragmentMap> m_lineToFragmentMap;

// Map a box to the list of fragments in which the box is rendered.
using RenderFragmentContainerRangeMap = HashMap<const RenderBox*, RenderFragmentContainerRange>;
using RenderFragmentContainerRangeMap = HashMap<SingleThreadWeakRef<const RenderBox>, RenderFragmentContainerRange>;
RenderFragmentContainerRangeMap m_fragmentRangeMap;

// Map a box with a fragment break to the auto height fragment affected by that break.
using RenderBoxToFragmentMap = HashMap<RenderBox*, RenderFragmentContainer*>;
using RenderBoxToFragmentMap = HashMap<SingleThreadWeakRef<RenderBox>, SingleThreadWeakRef<RenderFragmentContainer>>;
RenderBoxToFragmentMap m_breakBeforeToFragmentMap;
RenderBoxToFragmentMap m_breakAfterToFragmentMap;

Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderGrid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2158,7 +2158,7 @@ LayoutUnit RenderGrid::gridAreaBreadthForOutOfFlowChild(const RenderBox& child,
if (startIsAuto)
start = borderEdge;
else {
outOfFlowItemLine.set(&child, startLine);
outOfFlowItemLine.set(child, startLine);
start = positions[startLine];
}
if (endIsAuto)
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderGrid.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ class RenderGrid final : public RenderBlock {

mutable GridMasonryLayout m_masonryLayout;

typedef HashMap<const RenderBox*, std::optional<size_t>> OutOfFlowPositionsMap;
using OutOfFlowPositionsMap = HashMap<SingleThreadWeakRef<const RenderBox>, std::optional<size_t>>;
OutOfFlowPositionsMap m_outOfFlowItemColumn;
OutOfFlowPositionsMap m_outOfFlowItemRow;

Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/rendering/RenderLayerCompositor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1616,7 +1616,7 @@ void RenderLayerCompositor::adjustOverflowScrollbarContainerLayers(RenderLayer&
if (layersClippedByScrollers.isEmpty())
return;

HashMap<RenderLayer*, RenderLayer*> overflowScrollToLastContainedLayerMap;
HashMap<CheckedPtr<RenderLayer>, CheckedPtr<RenderLayer>> overflowScrollToLastContainedLayerMap;

for (auto* clippedLayer : layersClippedByScrollers) {
auto* clippingStack = clippedLayer->backing()->ancestorClippingStack();
Expand All @@ -1635,7 +1635,7 @@ void RenderLayerCompositor::adjustOverflowScrollbarContainerLayers(RenderLayer&
if (it == overflowScrollToLastContainedLayerMap.end())
continue;

auto* lastContainedDescendant = it->value;
CheckedPtr lastContainedDescendant = it->value;
if (!lastContainedDescendant || !lastContainedDescendant->isComposited())
continue;

Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderMultiColumnFlow.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ class RenderMultiColumnFlow final : public RenderFragmentedFlow {
// FIXME: Eventually as column and fragment flow threads start nesting, this will end up changing.
bool shouldCheckColumnBreaks() const override;

typedef HashMap<const RenderBox*, SingleThreadWeakPtr<RenderMultiColumnSpannerPlaceholder>> SpannerMap;
using SpannerMap = HashMap<SingleThreadWeakRef<const RenderBox>, SingleThreadWeakPtr<RenderMultiColumnSpannerPlaceholder>>;
SpannerMap& spannerMap() { return *m_spannerMap; }

private:
Expand Down
6 changes: 3 additions & 3 deletions Source/WebCore/rendering/RenderObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2163,18 +2163,18 @@ RenderObject::RareDataMap& RenderObject::rareDataMap()
const RenderObject::RenderObjectRareData& RenderObject::rareData() const
{
ASSERT(hasRareData());
return *rareDataMap().get(this);
return *rareDataMap().get(*this);
}

RenderObject::RenderObjectRareData& RenderObject::ensureRareData()
{
m_stateBitfields.setFlag(StateFlag::HasRareData);
return *rareDataMap().ensure(this, [] { return makeUnique<RenderObjectRareData>(); }).iterator->value;
return *rareDataMap().ensure(*this, [] { return makeUnique<RenderObjectRareData>(); }).iterator->value;
}

void RenderObject::removeRareData()
{
rareDataMap().remove(this);
rareDataMap().remove(*this);
m_stateBitfields.clearFlag(StateFlag::HasRareData);
}

Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -1292,7 +1292,7 @@ class RenderObject : public CachedImageClient, public CanMakeCheckedPtr {
RenderObjectRareData& ensureRareData();
void removeRareData();

typedef HashMap<const RenderObject*, std::unique_ptr<RenderObjectRareData>> RareDataMap;
using RareDataMap = HashMap<SingleThreadWeakRef<const RenderObject>, std::unique_ptr<RenderObjectRareData>>;

static RareDataMap& rareDataMap();

Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -988,7 +988,7 @@ void RenderTable::updateColumnCache() const
m_columnRenderers.append(columnRenderer);
// FIXME: We should look to compute the effective column index successively from previous values instead of
// calling colToEffCol(), which is in O(numEffCols()). Although it's unlikely that this is a hot function.
m_effectiveColumnIndexMap.add(columnRenderer, colToEffCol(columnIndex));
m_effectiveColumnIndexMap.add(*columnRenderer, colToEffCol(columnIndex));
columnIndex += columnRenderer->span();
}
m_columnRenderersValid = true;
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ class RenderTable : public RenderBlock {
mutable Vector<SingleThreadWeakPtr<RenderTableCol>> m_columnRenderers;

unsigned effectiveIndexOfColumn(const RenderTableCol&) const;
typedef HashMap<const RenderTableCol*, unsigned> EffectiveColumnIndexMap;
using EffectiveColumnIndexMap = HashMap<SingleThreadWeakRef<const RenderTableCol>, unsigned>;
mutable EffectiveColumnIndexMap m_effectiveColumnIndexMap;

mutable SingleThreadWeakPtr<RenderTableSection> m_head;
Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/rendering/RenderTableCell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ void RenderTableCell::willBeRemovedFromTree(IsInternalMove isInternalMove)
return;
RenderTableSection* section = this->section();
table()->invalidateCollapsedBorders();
section->removeCachedCollapsedBorders(*this);
section->setNeedsCellRecalc();
}

Expand Down
20 changes: 10 additions & 10 deletions Source/WebCore/rendering/RenderText.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ class SecureTextTimer final : private TimerBase {
unsigned m_offsetAfterLastTypedCharacter { 0 };
};

typedef HashMap<RenderText*, std::unique_ptr<SecureTextTimer>> SecureTextTimerMap;
using SecureTextTimerMap = HashMap<SingleThreadWeakRef<RenderText>, std::unique_ptr<SecureTextTimer>>;

static SecureTextTimerMap& secureTextTimers()
{
Expand Down Expand Up @@ -147,15 +147,15 @@ void SecureTextTimer::fired()
m_renderer.setText(m_renderer.text(), true /* forcing setting text as it may be masked later */);
}

static HashMap<const RenderText*, String>& originalTextMap()
static HashMap<SingleThreadWeakRef<const RenderText>, String>& originalTextMap()
{
static NeverDestroyed<HashMap<const RenderText*, String>> map;
static NeverDestroyed<HashMap<SingleThreadWeakRef<const RenderText>, String>> map;
return map;
}

static HashMap<const RenderText*, SingleThreadWeakPtr<RenderInline>>& inlineWrapperForDisplayContentsMap()
static HashMap<SingleThreadWeakRef<const RenderText>, SingleThreadWeakPtr<RenderInline>>& inlineWrapperForDisplayContentsMap()
{
static NeverDestroyed<HashMap<const RenderText*, SingleThreadWeakPtr<RenderInline>>> map;
static NeverDestroyed<HashMap<SingleThreadWeakRef<const RenderText>, SingleThreadWeakPtr<RenderInline>>> map;
return map;
}

Expand Down Expand Up @@ -1648,10 +1648,10 @@ void RenderText::setRenderedText(const String& newText)
m_hasStrongDirectionalityContent = { };

if (m_text != originalText) {
originalTextMap().set(this, originalText);
originalTextMap().set(*this, originalText);
m_originalTextDiffersFromRendered = true;
} else if (m_originalTextDiffersFromRendered) {
originalTextMap().remove(this);
originalTextMap().remove(*this);
m_originalTextDiffersFromRendered = false;
}
}
Expand Down Expand Up @@ -2057,7 +2057,7 @@ void RenderText::momentarilyRevealLastTypedCharacter(unsigned offsetAfterLastTyp
{
if (style().textSecurity() == TextSecurity::None)
return;
auto& secureTextTimer = secureTextTimers().add(this, nullptr).iterator->value;
auto& secureTextTimer = secureTextTimers().add(*this, nullptr).iterator->value;
if (!secureTextTimer)
secureTextTimer = makeUnique<SecureTextTimer>(*this);
secureTextTimer->restart(offsetAfterLastTypedCharacter);
Expand Down Expand Up @@ -2090,11 +2090,11 @@ void RenderText::setInlineWrapperForDisplayContents(RenderInline* wrapper)
if (!wrapper) {
if (!m_hasInlineWrapperForDisplayContents)
return;
inlineWrapperForDisplayContentsMap().remove(this);
inlineWrapperForDisplayContentsMap().remove(*this);
m_hasInlineWrapperForDisplayContents = false;
return;
}
inlineWrapperForDisplayContentsMap().add(this, wrapper);
inlineWrapperForDisplayContentsMap().add(*this, wrapper);
m_hasInlineWrapperForDisplayContents = true;
}

Expand Down
12 changes: 6 additions & 6 deletions Source/WebCore/rendering/RenderWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ namespace WebCore {

WTF_MAKE_ISO_ALLOCATED_IMPL(RenderWidget);

static HashMap<const Widget*, RenderWidget*>& widgetRendererMap()
static HashMap<SingleThreadWeakRef<const Widget>, SingleThreadWeakRef<RenderWidget>>& widgetRendererMap()
{
static HashMap<const Widget*, RenderWidget*>* staticWidgetRendererMap = new HashMap<const Widget*, RenderWidget*>;
return *staticWidgetRendererMap;
static NeverDestroyed<HashMap<SingleThreadWeakRef<const Widget>, SingleThreadWeakRef<RenderWidget>>> staticWidgetRendererMap;
return staticWidgetRendererMap;
}

unsigned WidgetHierarchyUpdatesSuspensionScope::s_widgetHierarchyUpdateSuspendCount = 0;
Expand All @@ -70,7 +70,7 @@ void WidgetHierarchyUpdatesSuspensionScope::moveWidgets()
for (auto& entry : map) {
auto& child = *entry.key;
auto* currentParent = child.parent();
auto* newParent = entry.value;
CheckedPtr newParent = entry.value.get();
if (newParent != currentParent) {
if (currentParent)
currentParent->removeChild(child);
Expand Down Expand Up @@ -178,12 +178,12 @@ void RenderWidget::setWidget(RefPtr<Widget>&& widget)
if (m_widget) {
moveWidgetToParentSoon(*m_widget, nullptr);
view().frameView().willRemoveWidgetFromRenderTree(*m_widget);
widgetRendererMap().remove(m_widget.get());
widgetRendererMap().remove(*m_widget);
m_widget = nullptr;
}
m_widget = widget;
if (m_widget) {
widgetRendererMap().add(m_widget.get(), this);
widgetRendererMap().add(*m_widget, *this);
view().frameView().didAddWidgetToRenderTree(*m_widget);
// If we've already received a layout, apply the calculated space to the
// widget immediately, but we have to have really been fully constructed.
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/RenderWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class WidgetHierarchyUpdatesSuspensionScope {
static void scheduleWidgetToMove(Widget&, LocalFrameView*);

private:
using WidgetToParentMap = HashMap<RefPtr<Widget>, LocalFrameView*>;
using WidgetToParentMap = HashMap<RefPtr<Widget>, SingleThreadWeakPtr<LocalFrameView>>;
static WidgetToParentMap& widgetNewParentMap();

WEBCORE_EXPORT void moveWidgets();
Expand Down
15 changes: 7 additions & 8 deletions Source/WebCore/rendering/VerticalPositionCache.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,21 +35,20 @@ class RenderObject;
class VerticalPositionCache {
WTF_MAKE_NONCOPYABLE(VerticalPositionCache);
public:
VerticalPositionCache()
{ }
VerticalPositionCache() = default;

bool get(RenderObject* renderer, FontBaseline baselineType, LayoutUnit& result) const
bool get(RenderObject& renderer, FontBaseline baselineType, LayoutUnit& result) const
{
const HashMap<RenderObject*, LayoutUnit>& mapToCheck = baselineType == AlphabeticBaseline ? m_alphabeticPositions : m_ideographicPositions;
const HashMap<RenderObject*, LayoutUnit>::const_iterator it = mapToCheck.find(renderer);
auto& mapToCheck = baselineType == AlphabeticBaseline ? m_alphabeticPositions : m_ideographicPositions;
auto it = mapToCheck.find(renderer);
if (it == mapToCheck.end())
return false;

result = it->value;
return true;
}

void set(RenderObject* renderer, FontBaseline baselineType, LayoutUnit position)
void set(RenderObject& renderer, FontBaseline baselineType, LayoutUnit position)
{
if (baselineType == AlphabeticBaseline)
m_alphabeticPositions.set(renderer, position);
Expand All @@ -58,8 +57,8 @@ class VerticalPositionCache {
}

private:
HashMap<RenderObject*, LayoutUnit> m_alphabeticPositions;
HashMap<RenderObject*, LayoutUnit> m_ideographicPositions;
HashMap<SingleThreadWeakRef<RenderObject>, LayoutUnit> m_alphabeticPositions;
HashMap<SingleThreadWeakRef<RenderObject>, LayoutUnit> m_ideographicPositions;
};

} // namespace WebCore
6 changes: 3 additions & 3 deletions Source/WebCore/rendering/line/LineLayoutState.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,15 @@ class LineLayoutState {
void append(Ref<FloatWithRect>&& floatWithRect)
{
m_floats.add(floatWithRect.copyRef());
m_floatWithRectMap.add(&floatWithRect->renderer(), WTFMove(floatWithRect));
m_floatWithRectMap.add(floatWithRect->renderer(), WTFMove(floatWithRect));
}
void setLastFloat(FloatingObject* lastFloat) { m_lastFloat = lastFloat; }
FloatingObject* lastFloat() const { return m_lastFloat; }

void setLastCleanFloat(RenderBox& floatBox) { m_lastCleanFloat = &floatBox; }
RenderBox* lastCleanFloat() const { return m_lastCleanFloat; }

FloatWithRect* floatWithRect(RenderBox& floatBox) const { return m_floatWithRectMap.get(&floatBox); }
FloatWithRect* floatWithRect(RenderBox& floatBox) const { return m_floatWithRectMap.get(floatBox); }

using Iterator = ListHashSet<Ref<FloatWithRect>>::iterator;
Iterator begin() { return m_floats.begin(); }
Expand All @@ -94,7 +94,7 @@ class LineLayoutState {

private:
ListHashSet<Ref<FloatWithRect>> m_floats;
HashMap<RenderBox*, Ref<FloatWithRect>> m_floatWithRectMap;
HashMap<SingleThreadWeakRef<RenderBox>, Ref<FloatWithRect>> m_floatWithRectMap;
FloatingObject* m_lastFloat { nullptr };
RenderBox* m_lastCleanFloat { nullptr };
};
Expand Down
10 changes: 5 additions & 5 deletions Source/WebCore/rendering/shapes/ShapeOutsideInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,19 +107,19 @@ class ShapeOutsideInfo final {
static ShapeOutsideInfo& ensureInfo(const RenderBox& key)
{
InfoMap& infoMap = ShapeOutsideInfo::infoMap();
if (ShapeOutsideInfo* info = infoMap.get(&key))
if (ShapeOutsideInfo* info = infoMap.get(key))
return *info;
auto result = infoMap.add(&key, makeUnique<ShapeOutsideInfo>(key));
auto result = infoMap.add(key, makeUnique<ShapeOutsideInfo>(key));
return *result.iterator->value;
}
static void removeInfo(const RenderBox& key) { infoMap().remove(&key); }
static ShapeOutsideInfo* info(const RenderBox& key) { return infoMap().get(&key); }
static void removeInfo(const RenderBox& key) { infoMap().remove(key); }
static ShapeOutsideInfo* info(const RenderBox& key) { return infoMap().get(key); }

private:
LayoutUnit logicalTopOffset() const;
LayoutUnit logicalLeftOffset() const;

typedef HashMap<const RenderBox*, std::unique_ptr<ShapeOutsideInfo>> InfoMap;
using InfoMap = HashMap<SingleThreadWeakRef<const RenderBox>, std::unique_ptr<ShapeOutsideInfo>>;
static InfoMap& infoMap()
{
static NeverDestroyed<InfoMap> staticInfoMap;
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/svg/SVGRenderingContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderElement& renderer, Pai
// changes, we need to paint the whole filter region. Otherwise, elements not visible
// at the time of the initial paint (due to scrolling, window size, etc.) will never
// be drawn.
m_paintInfo->rect = IntRect(m_filter->drawingRegion(m_renderer));
m_paintInfo->rect = IntRect(m_filter->drawingRegion(*m_renderer));
}
}

Expand Down
8 changes: 4 additions & 4 deletions Source/WebCore/rendering/svg/SVGResourcesCache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ void SVGResourcesCache::addResourcesFromRenderer(RenderElement& renderer, const
RELEASE_ASSERT_NOT_REACHED();
#endif

ASSERT(!m_cache.contains(&renderer));
ASSERT(!m_cache.contains(renderer));

// Build a list of all resources associated with the passed RenderObject
auto newResources = SVGResources::buildCachedResources(renderer, style);
if (!newResources)
return;

// Put object in cache.
SVGResources& resources = *m_cache.add(&renderer, WTFMove(newResources)).iterator->value;
SVGResources& resources = *m_cache.add(renderer, WTFMove(newResources)).iterator->value;

// Run cycle-detection _afterwards_, so self-references can be caught as well.
SVGResourcesCycleSolver::resolveCycles(renderer, resources);
Expand All @@ -69,7 +69,7 @@ void SVGResourcesCache::removeResourcesFromRenderer(RenderElement& renderer)
RELEASE_ASSERT_NOT_REACHED();
#endif

std::unique_ptr<SVGResources> resources = m_cache.take(&renderer);
auto resources = m_cache.take(renderer);
if (!resources)
return;

Expand All @@ -94,7 +94,7 @@ static inline SVGResourcesCache& resourcesCacheFromRenderer(const RenderElement&

SVGResources* SVGResourcesCache::cachedResourcesForRenderer(const RenderElement& renderer)
{
return resourcesCacheFromRenderer(renderer).m_cache.get(&renderer);
return resourcesCacheFromRenderer(renderer).m_cache.get(renderer);
}

static bool hasPaintResourceRequiringRemovalOnClientLayoutChange(LegacyRenderSVGResource* resource)
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/svg/SVGResourcesCache.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class SVGResourcesCache {
void addResourcesFromRenderer(RenderElement&, const RenderStyle&);
void removeResourcesFromRenderer(RenderElement&);

typedef HashMap<const RenderElement*, std::unique_ptr<SVGResources>> CacheMap;
using CacheMap = HashMap<SingleThreadWeakRef<const RenderElement>, std::unique_ptr<SVGResources>>;
CacheMap m_cache;
};

Expand Down
Loading

0 comments on commit bb14d7e

Please sign in to comment.