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() ...@@ -49,8 +49,7 @@ CSSAnimationData::CSSAnimationData()
} }
CSSAnimationData::CSSAnimationData(const CSSAnimationData& o) CSSAnimationData::CSSAnimationData(const CSSAnimationData& o)
: RefCounted<CSSAnimationData>() : m_name(o.m_name)
, m_name(o.m_name)
, m_property(o.m_property) , m_property(o.m_property)
, m_mode(o.m_mode) , m_mode(o.m_mode)
, m_iterationCount(o.m_iterationCount) , m_iterationCount(o.m_iterationCount)
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "CSSPropertyNames.h" #include "CSSPropertyNames.h"
#include "core/rendering/style/RenderStyleConstants.h" #include "core/rendering/style/RenderStyleConstants.h"
#include "heap/Handle.h"
#include "platform/animation/TimingFunction.h" #include "platform/animation/TimingFunction.h"
#include "wtf/PassRefPtr.h" #include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h" #include "wtf/RefCounted.h"
...@@ -34,12 +35,19 @@ ...@@ -34,12 +35,19 @@
namespace WebCore { namespace WebCore {
class CSSAnimationData : public RefCounted<CSSAnimationData> { class CSSAnimationData FINAL : public RefCountedWillBeGarbageCollectedFinalized<CSSAnimationData> {
public: public:
~CSSAnimationData(); ~CSSAnimationData();
static PassRefPtr<CSSAnimationData> create() { return adoptRef(new CSSAnimationData); } static PassRefPtrWillBeRawPtr<CSSAnimationData> create()
static PassRefPtr<CSSAnimationData> create(const CSSAnimationData* o) { return adoptRef(new CSSAnimationData(*o)); } {
return adoptRefWillBeNoop(new CSSAnimationData);
}
static PassRefPtrWillBeRawPtr<CSSAnimationData> create(const CSSAnimationData* o)
{
return adoptRefWillBeNoop(new CSSAnimationData(*o));
}
bool isDelaySet() const { return m_delaySet; } bool isDelaySet() const { return m_delaySet; }
bool isDirectionSet() const { return m_directionSet; } bool isDirectionSet() const { return m_directionSet; }
...@@ -134,6 +142,8 @@ public: ...@@ -134,6 +142,8 @@ public:
bool operator==(const CSSAnimationData& o) const { return animationsMatchForStyleRecalc(&o); } bool operator==(const CSSAnimationData& o) const { return animationsMatchForStyleRecalc(&o); }
bool operator!=(const CSSAnimationData& o) const { return !(*this == o); } bool operator!=(const CSSAnimationData& o) const { return !(*this == o); }
void trace(Visitor*) { }
private: private:
CSSAnimationData(); CSSAnimationData();
explicit CSSAnimationData(const CSSAnimationData&); explicit CSSAnimationData(const CSSAnimationData&);
......
...@@ -61,4 +61,9 @@ bool CSSAnimationDataList::operator==(const CSSAnimationDataList& o) const ...@@ -61,4 +61,9 @@ bool CSSAnimationDataList::operator==(const CSSAnimationDataList& o) const
return true; return true;
} }
void CSSAnimationDataList::trace(Visitor* visitor)
{
visitor->trace(m_animations);
}
} // namespace WebCore } // namespace WebCore
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
namespace WebCore { namespace WebCore {
class CSSAnimationDataList { class CSSAnimationDataList FINAL : public NoBaseWillBeGarbageCollected<CSSAnimationDataList> {
WTF_MAKE_FAST_ALLOCATED; WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
public: public:
CSSAnimationDataList() { } CSSAnimationDataList() { }
explicit CSSAnimationDataList(const CSSAnimationDataList&); explicit CSSAnimationDataList(const CSSAnimationDataList&);
...@@ -49,15 +49,17 @@ public: ...@@ -49,15 +49,17 @@ public:
void resize(size_t n) { m_animations.resize(n); } void resize(size_t n) { m_animations.resize(n); }
void remove(size_t i) { m_animations.remove(i); } 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(); } CSSAnimationData* animation(size_t i) { return m_animations[i].get(); }
const CSSAnimationData* animation(size_t i) const { return m_animations[i].get(); } const CSSAnimationData* animation(size_t i) const { return m_animations[i].get(); }
void trace(Visitor*);
private: private:
CSSAnimationDataList& operator=(const CSSAnimationDataList&); CSSAnimationDataList& operator=(const CSSAnimationDataList&);
Vector<RefPtr<CSSAnimationData> > m_animations; WillBeHeapVector<RefPtrWillBeMember<CSSAnimationData> > m_animations;
}; };
......
...@@ -1155,14 +1155,14 @@ void RenderStyle::adjustTransitions() ...@@ -1155,14 +1155,14 @@ void RenderStyle::adjustTransitions()
CSSAnimationDataList* RenderStyle::accessAnimations() CSSAnimationDataList* RenderStyle::accessAnimations()
{ {
if (!rareNonInheritedData.access()->m_animations) if (!rareNonInheritedData.access()->m_animations)
rareNonInheritedData.access()->m_animations = adoptPtr(new CSSAnimationDataList()); rareNonInheritedData.access()->m_animations = adoptPtrWillBeNoop(new CSSAnimationDataList());
return rareNonInheritedData->m_animations.get(); return rareNonInheritedData->m_animations.get();
} }
CSSAnimationDataList* RenderStyle::accessTransitions() CSSAnimationDataList* RenderStyle::accessTransitions()
{ {
if (!rareNonInheritedData.access()->m_transitions) if (!rareNonInheritedData.access()->m_transitions)
rareNonInheritedData.access()->m_transitions = adoptPtr(new CSSAnimationDataList()); rareNonInheritedData.access()->m_transitions = adoptPtrWillBeNoop(new CSSAnimationDataList());
return rareNonInheritedData->m_transitions.get(); return rareNonInheritedData->m_transitions.get();
} }
......
...@@ -113,8 +113,8 @@ StyleRareNonInheritedData::StyleRareNonInheritedData(const StyleRareNonInherited ...@@ -113,8 +113,8 @@ StyleRareNonInheritedData::StyleRareNonInheritedData(const StyleRareNonInherited
, m_counterDirectives(o.m_counterDirectives ? clone(*o.m_counterDirectives) : nullptr) , m_counterDirectives(o.m_counterDirectives ? clone(*o.m_counterDirectives) : nullptr)
, m_boxShadow(o.m_boxShadow) , m_boxShadow(o.m_boxShadow)
, m_boxReflect(o.m_boxReflect) , m_boxReflect(o.m_boxReflect)
, m_animations(o.m_animations ? adoptPtr(new CSSAnimationDataList(*o.m_animations)) : nullptr) , m_animations(o.m_animations ? adoptPtrWillBeNoop(new CSSAnimationDataList(*o.m_animations)) : nullptr)
, m_transitions(o.m_transitions ? adoptPtr(new CSSAnimationDataList(*o.m_transitions)) : nullptr) , m_transitions(o.m_transitions ? adoptPtrWillBeNoop(new CSSAnimationDataList(*o.m_transitions)) : nullptr)
, m_mask(o.m_mask) , m_mask(o.m_mask)
, m_maskBoxImage(o.m_maskBoxImage) , m_maskBoxImage(o.m_maskBoxImage)
, m_pageSize(o.m_pageSize) , m_pageSize(o.m_pageSize)
......
...@@ -121,8 +121,8 @@ public: ...@@ -121,8 +121,8 @@ public:
RefPtr<StyleReflection> m_boxReflect; RefPtr<StyleReflection> m_boxReflect;
OwnPtr<CSSAnimationDataList> m_animations; OwnPtrWillBePersistent<CSSAnimationDataList> m_animations;
OwnPtr<CSSAnimationDataList> m_transitions; OwnPtrWillBePersistent<CSSAnimationDataList> m_transitions;
FillLayer m_mask; FillLayer m_mask;
NinePieceImage m_maskBoxImage; 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