Commit dd99f0eb authored by haraken@chromium.org's avatar haraken@chromium.org

Oilpan: Move CSSAnimationData and CSSAnimationDataList to oilpan's heap

BUG=341032

Review URL: https://codereview.chromium.org/207683005

git-svn-id: svn://svn.chromium.org/blink/trunk@169945 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 72c7e0e8
......@@ -49,8 +49,7 @@ CSSAnimationData::CSSAnimationData()
}
CSSAnimationData::CSSAnimationData(const CSSAnimationData& o)
: RefCounted<CSSAnimationData>()
, m_name(o.m_name)
: m_name(o.m_name)
, m_property(o.m_property)
, m_mode(o.m_mode)
, m_iterationCount(o.m_iterationCount)
......
......@@ -27,6 +27,7 @@
#include "CSSPropertyNames.h"
#include "core/rendering/style/RenderStyleConstants.h"
#include "heap/Handle.h"
#include "platform/animation/TimingFunction.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
......@@ -34,12 +35,19 @@
namespace WebCore {
class CSSAnimationData : public RefCounted<CSSAnimationData> {
class CSSAnimationData FINAL : public RefCountedWillBeGarbageCollectedFinalized<CSSAnimationData> {
public:
~CSSAnimationData();
static PassRefPtr<CSSAnimationData> create() { return adoptRef(new CSSAnimationData); }
static PassRefPtr<CSSAnimationData> create(const CSSAnimationData* o) { return adoptRef(new CSSAnimationData(*o)); }
static PassRefPtrWillBeRawPtr<CSSAnimationData> create()
{
return adoptRefWillBeNoop(new CSSAnimationData);
}
static PassRefPtrWillBeRawPtr<CSSAnimationData> create(const CSSAnimationData* o)
{
return adoptRefWillBeNoop(new CSSAnimationData(*o));
}
bool isDelaySet() const { return m_delaySet; }
bool isDirectionSet() const { return m_directionSet; }
......@@ -134,6 +142,8 @@ public:
bool operator==(const CSSAnimationData& o) const { return animationsMatchForStyleRecalc(&o); }
bool operator!=(const CSSAnimationData& o) const { return !(*this == o); }
void trace(Visitor*) { }
private:
CSSAnimationData();
explicit CSSAnimationData(const CSSAnimationData&);
......
......@@ -61,4 +61,9 @@ bool CSSAnimationDataList::operator==(const CSSAnimationDataList& o) const
return true;
}
void CSSAnimationDataList::trace(Visitor* visitor)
{
visitor->trace(m_animations);
}
} // namespace WebCore
......@@ -31,8 +31,8 @@
namespace WebCore {
class CSSAnimationDataList {
WTF_MAKE_FAST_ALLOCATED;
class CSSAnimationDataList FINAL : public NoBaseWillBeGarbageCollected<CSSAnimationDataList> {
WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
public:
CSSAnimationDataList() { }
explicit CSSAnimationDataList(const CSSAnimationDataList&);
......@@ -49,15 +49,17 @@ public:
void resize(size_t n) { m_animations.resize(n); }
void remove(size_t i) { m_animations.remove(i); }
void append(PassRefPtr<CSSAnimationData> anim) { m_animations.append(anim); }
void append(PassRefPtrWillBeRawPtr<CSSAnimationData> anim) { m_animations.append(anim); }
CSSAnimationData* animation(size_t i) { return m_animations[i].get(); }
const CSSAnimationData* animation(size_t i) const { return m_animations[i].get(); }
void trace(Visitor*);
private:
CSSAnimationDataList& operator=(const CSSAnimationDataList&);
Vector<RefPtr<CSSAnimationData> > m_animations;
WillBeHeapVector<RefPtrWillBeMember<CSSAnimationData> > m_animations;
};
......
......@@ -1155,14 +1155,14 @@ void RenderStyle::adjustTransitions()
CSSAnimationDataList* RenderStyle::accessAnimations()
{
if (!rareNonInheritedData.access()->m_animations)
rareNonInheritedData.access()->m_animations = adoptPtr(new CSSAnimationDataList());
rareNonInheritedData.access()->m_animations = adoptPtrWillBeNoop(new CSSAnimationDataList());
return rareNonInheritedData->m_animations.get();
}
CSSAnimationDataList* RenderStyle::accessTransitions()
{
if (!rareNonInheritedData.access()->m_transitions)
rareNonInheritedData.access()->m_transitions = adoptPtr(new CSSAnimationDataList());
rareNonInheritedData.access()->m_transitions = adoptPtrWillBeNoop(new CSSAnimationDataList());
return rareNonInheritedData->m_transitions.get();
}
......
......@@ -113,8 +113,8 @@ StyleRareNonInheritedData::StyleRareNonInheritedData(const StyleRareNonInherited
, m_counterDirectives(o.m_counterDirectives ? clone(*o.m_counterDirectives) : nullptr)
, m_boxShadow(o.m_boxShadow)
, m_boxReflect(o.m_boxReflect)
, m_animations(o.m_animations ? adoptPtr(new CSSAnimationDataList(*o.m_animations)) : nullptr)
, m_transitions(o.m_transitions ? adoptPtr(new CSSAnimationDataList(*o.m_transitions)) : nullptr)
, m_animations(o.m_animations ? adoptPtrWillBeNoop(new CSSAnimationDataList(*o.m_animations)) : nullptr)
, m_transitions(o.m_transitions ? adoptPtrWillBeNoop(new CSSAnimationDataList(*o.m_transitions)) : nullptr)
, m_mask(o.m_mask)
, m_maskBoxImage(o.m_maskBoxImage)
, m_pageSize(o.m_pageSize)
......
......@@ -121,8 +121,8 @@ public:
RefPtr<StyleReflection> m_boxReflect;
OwnPtr<CSSAnimationDataList> m_animations;
OwnPtr<CSSAnimationDataList> m_transitions;
OwnPtrWillBePersistent<CSSAnimationDataList> m_animations;
OwnPtrWillBePersistent<CSSAnimationDataList> m_transitions;
FillLayer m_mask;
NinePieceImage m_maskBoxImage;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment