Remove tons of OILPAN.

This removes ::trace, traceAfterDispatch and finalizeGarbageCollectedObject.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/723253004
diff --git a/sky/engine/core/animation/ActiveAnimations.cpp b/sky/engine/core/animation/ActiveAnimations.cpp
index 11e5c92..da8f274 100644
--- a/sky/engine/core/animation/ActiveAnimations.cpp
+++ b/sky/engine/core/animation/ActiveAnimations.cpp
@@ -74,8 +74,4 @@
         it->key->cancelAnimationOnCompositor();
 }
 
-void ActiveAnimations::trace(Visitor* visitor)
-{
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/ActiveAnimations.h b/sky/engine/core/animation/ActiveAnimations.h
index 4955033..b411bb1 100644
--- a/sky/engine/core/animation/ActiveAnimations.h
+++ b/sky/engine/core/animation/ActiveAnimations.h
@@ -79,8 +79,6 @@
     void addAnimation(Animation* animation) { m_animations.append(animation); }
     void notifyAnimationDestroyed(Animation* animation) { m_animations.remove(m_animations.find(animation)); }
 
-    void trace(Visitor*);
-
 private:
     bool isAnimationStyleChange() const { return m_animationStyleChange; }
 
diff --git a/sky/engine/core/animation/Animation.cpp b/sky/engine/core/animation/Animation.cpp
index fa57474..3340b16 100644
--- a/sky/engine/core/animation/Animation.cpp
+++ b/sky/engine/core/animation/Animation.cpp
@@ -299,12 +299,4 @@
         CompositorAnimations::instance()->pauseAnimationForTestingOnCompositor(*m_target, m_compositorAnimationIds[i], pauseTime);
 }
 
-void Animation::trace(Visitor* visitor)
-{
-    visitor->trace(m_target);
-    visitor->trace(m_effect);
-    visitor->trace(m_sampledEffect);
-    AnimationNode::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/Animation.h b/sky/engine/core/animation/Animation.h
index 40a64e5..97abbfa 100644
--- a/sky/engine/core/animation/Animation.h
+++ b/sky/engine/core/animation/Animation.h
@@ -80,8 +80,6 @@
     void cancelAnimationOnCompositor();
     void pauseAnimationForTestingOnCompositor(double pauseTime);
 
-    virtual void trace(Visitor*);
-
 protected:
     void applyEffects();
     void clearEffects();
diff --git a/sky/engine/core/animation/AnimationEffect.h b/sky/engine/core/animation/AnimationEffect.h
index cce544c..bfe4d6a 100644
--- a/sky/engine/core/animation/AnimationEffect.h
+++ b/sky/engine/core/animation/AnimationEffect.h
@@ -57,8 +57,6 @@
 
     virtual bool affects(CSSPropertyID) { return false; };
     virtual bool isKeyframeEffectModel() const { return false; }
-
-    virtual void trace(Visitor*) { }
 };
 
 } // namespace blink
diff --git a/sky/engine/core/animation/AnimationNode.cpp b/sky/engine/core/animation/AnimationNode.cpp
index 7d35ad0..d77de33 100644
--- a/sky/engine/core/animation/AnimationNode.cpp
+++ b/sky/engine/core/animation/AnimationNode.cpp
@@ -186,11 +186,4 @@
     return AnimationNodeTiming::create(this);
 }
 
-void AnimationNode::trace(Visitor* visitor)
-{
-    visitor->trace(m_parent);
-    visitor->trace(m_player);
-    visitor->trace(m_eventDelegate);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/AnimationNode.h b/sky/engine/core/animation/AnimationNode.h
index 2b183ec..50f30da 100644
--- a/sky/engine/core/animation/AnimationNode.h
+++ b/sky/engine/core/animation/AnimationNode.h
@@ -75,7 +75,6 @@
     public:
         virtual ~EventDelegate() { }
         virtual void onEventCondition(const AnimationNode*) = 0;
-        virtual void trace(Visitor*) { }
     };
 
     virtual ~AnimationNode() { }
@@ -113,8 +112,6 @@
     double localTime(bool& isNull) const { isNull = !m_player; return ensureCalculated().localTime * 1000; }
     double currentIteration(bool& isNull) const { isNull = !ensureCalculated().isInEffect; return ensureCalculated().currentIteration; }
 
-    virtual void trace(Visitor*);
-
 protected:
     explicit AnimationNode(const Timing&, PassOwnPtr<EventDelegate> = nullptr);
 
diff --git a/sky/engine/core/animation/AnimationNodeTest.cpp b/sky/engine/core/animation/AnimationNodeTest.cpp
index 8e7ecbe..ffa276e 100644
--- a/sky/engine/core/animation/AnimationNodeTest.cpp
+++ b/sky/engine/core/animation/AnimationNodeTest.cpp
@@ -95,12 +95,6 @@
         return result;
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_eventDelegate);
-        AnimationNode::trace(visitor);
-    }
-
 private:
     TestAnimationNode(const Timing& specified, TestAnimationNodeEventDelegate* eventDelegate)
         : AnimationNode(specified, adoptPtr(eventDelegate))
diff --git a/sky/engine/core/animation/AnimationNodeTiming.cpp b/sky/engine/core/animation/AnimationNodeTiming.cpp
index 4e1727f..3209813 100644
--- a/sky/engine/core/animation/AnimationNodeTiming.cpp
+++ b/sky/engine/core/animation/AnimationNodeTiming.cpp
@@ -170,9 +170,4 @@
     m_parent->updateSpecifiedTiming(timing);
 }
 
-void AnimationNodeTiming::trace(Visitor* visitor)
-{
-    visitor->trace(m_parent);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/AnimationNodeTiming.h b/sky/engine/core/animation/AnimationNodeTiming.h
index f8cfc45..3117d11 100644
--- a/sky/engine/core/animation/AnimationNodeTiming.h
+++ b/sky/engine/core/animation/AnimationNodeTiming.h
@@ -37,8 +37,6 @@
     void setDirection(String);
     void setEasing(String);
 
-    void trace(Visitor*);
-
 private:
     RefPtr<AnimationNode> m_parent;
     explicit AnimationNodeTiming(AnimationNode*);
diff --git a/sky/engine/core/animation/AnimationPlayer.cpp b/sky/engine/core/animation/AnimationPlayer.cpp
index 5df165d..4ccf52a 100644
--- a/sky/engine/core/animation/AnimationPlayer.cpp
+++ b/sky/engine/core/animation/AnimationPlayer.cpp
@@ -654,12 +654,4 @@
     pause();
 }
 
-void AnimationPlayer::trace(Visitor* visitor)
-{
-    visitor->trace(m_content);
-    visitor->trace(m_timeline);
-    visitor->trace(m_pendingFinishedEvent);
-    EventTargetWithInlineData::trace(visitor);
-}
-
 } // namespace
diff --git a/sky/engine/core/animation/AnimationPlayer.h b/sky/engine/core/animation/AnimationPlayer.h
index ed715cd..34a178e 100644
--- a/sky/engine/core/animation/AnimationPlayer.h
+++ b/sky/engine/core/animation/AnimationPlayer.h
@@ -146,8 +146,6 @@
 
     virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture = false) override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     AnimationPlayer(ExecutionContext*, AnimationTimeline&, AnimationNode*);
     double sourceEnd() const;
diff --git a/sky/engine/core/animation/AnimationStack.cpp b/sky/engine/core/animation/AnimationStack.cpp
index 1d510a9..6c70617 100644
--- a/sky/engine/core/animation/AnimationStack.cpp
+++ b/sky/engine/core/animation/AnimationStack.cpp
@@ -141,11 +141,6 @@
     m_effects.shrink(dest);
 }
 
-void AnimationStack::trace(Visitor* visitor)
-{
-    visitor->trace(m_effects);
-}
-
 bool AnimationStack::getAnimatedBoundingBox(FloatBox& box, CSSPropertyID property) const
 {
     FloatBox originalBox(box);
diff --git a/sky/engine/core/animation/AnimationStack.h b/sky/engine/core/animation/AnimationStack.h
index 0800bc0..6c49f77 100644
--- a/sky/engine/core/animation/AnimationStack.h
+++ b/sky/engine/core/animation/AnimationStack.h
@@ -56,7 +56,6 @@
     static HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolations(AnimationStack*, const Vector<RawPtr<InertAnimation> >* newAnimations, const HashSet<RawPtr<const AnimationPlayer> >* cancelledAnimationPlayers, Animation::Priority, double timelineCurrentTime);
 
     bool getAnimatedBoundingBox(FloatBox&, CSSPropertyID) const;
-    void trace(Visitor*);
 
 private:
     void simplifyEffects();
diff --git a/sky/engine/core/animation/AnimationTimeline.cpp b/sky/engine/core/animation/AnimationTimeline.cpp
index eb2c357..4888a2c 100644
--- a/sky/engine/core/animation/AnimationTimeline.cpp
+++ b/sky/engine/core/animation/AnimationTimeline.cpp
@@ -159,12 +159,6 @@
         m_timeline->m_document->view()->scheduleAnimation();
 }
 
-void AnimationTimeline::AnimationTimelineTiming::trace(Visitor* visitor)
-{
-    visitor->trace(m_timeline);
-    AnimationTimeline::PlatformTiming::trace(visitor);
-}
-
 double AnimationTimeline::currentTime(bool& isNull)
 {
     return currentTimeInternal(isNull) * 1000;
@@ -230,14 +224,4 @@
 }
 #endif
 
-void AnimationTimeline::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_document);
-    visitor->trace(m_timing);
-    visitor->trace(m_playersNeedingUpdate);
-    visitor->trace(m_players);
-#endif
-}
-
 } // namespace
diff --git a/sky/engine/core/animation/AnimationTimeline.h b/sky/engine/core/animation/AnimationTimeline.h
index 01dbe07..4e4de59 100644
--- a/sky/engine/core/animation/AnimationTimeline.h
+++ b/sky/engine/core/animation/AnimationTimeline.h
@@ -58,7 +58,6 @@
         virtual void cancelWake() = 0;
         virtual void serviceOnNextFrame() = 0;
         virtual ~PlatformTiming() { }
-        virtual void trace(Visitor*) { }
     };
 
     static PassRefPtr<AnimationTimeline> create(Document*, PassOwnPtr<PlatformTiming> = nullptr);
@@ -97,8 +96,6 @@
 #endif
     void wake();
 
-    void trace(Visitor*);
-
 protected:
     AnimationTimeline(Document*, PassOwnPtr<PlatformTiming>);
 
@@ -129,8 +126,6 @@
 
         void timerFired(Timer<AnimationTimelineTiming>*) { m_timeline->wake(); }
 
-        virtual void trace(Visitor*) override;
-
     private:
         RawPtr<AnimationTimeline> m_timeline;
         Timer<AnimationTimelineTiming> m_timer;
diff --git a/sky/engine/core/animation/AnimationTimelineTest.cpp b/sky/engine/core/animation/AnimationTimelineTest.cpp
index 7515208..0eaa292 100644
--- a/sky/engine/core/animation/AnimationTimelineTest.cpp
+++ b/sky/engine/core/animation/AnimationTimelineTest.cpp
@@ -77,11 +77,6 @@
         EXPECT_CALL(*this, cancelWake()).InSequence(sequence);
         EXPECT_CALL(*this, wakeAfter(when)).InSequence(sequence);
     }
-
-    void trace(Visitor* visitor)
-    {
-        AnimationTimeline::PlatformTiming::trace(visitor);
-    }
 };
 
 class AnimationAnimationTimelineTest : public ::testing::Test {
diff --git a/sky/engine/core/animation/CompositorPendingAnimations.cpp b/sky/engine/core/animation/CompositorPendingAnimations.cpp
index e9714eb..280d9d4 100644
--- a/sky/engine/core/animation/CompositorPendingAnimations.cpp
+++ b/sky/engine/core/animation/CompositorPendingAnimations.cpp
@@ -132,10 +132,4 @@
     m_waitingForCompositorAnimationStart.clear();
 }
 
-void CompositorPendingAnimations::trace(Visitor* visitor)
-{
-    visitor->trace(m_pending);
-    visitor->trace(m_waitingForCompositorAnimationStart);
-}
-
 } // namespace
diff --git a/sky/engine/core/animation/CompositorPendingAnimations.h b/sky/engine/core/animation/CompositorPendingAnimations.h
index 4a3adcb..fb823c4 100644
--- a/sky/engine/core/animation/CompositorPendingAnimations.h
+++ b/sky/engine/core/animation/CompositorPendingAnimations.h
@@ -57,8 +57,6 @@
     bool update(bool startOnCompositor = true);
     void notifyCompositorAnimationStarted(double monotonicAnimationStartTime);
 
-    void trace(Visitor*);
-
 private:
     void timerFired(Timer<CompositorPendingAnimations>*) { update(false); }
 
diff --git a/sky/engine/core/animation/DefaultStyleInterpolation.h b/sky/engine/core/animation/DefaultStyleInterpolation.h
index 775350c..3930417 100644
--- a/sky/engine/core/animation/DefaultStyleInterpolation.h
+++ b/sky/engine/core/animation/DefaultStyleInterpolation.h
@@ -22,13 +22,6 @@
         StyleBuilder::applyProperty(m_id, state, toInterpolableBool(m_cachedValue.get())->value() ? m_endCSSValue.get() : m_startCSSValue.get());
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        StyleInterpolation::trace(visitor);
-        visitor->trace(m_startCSSValue);
-        visitor->trace(m_endCSSValue);
-    }
-
 private:
     DefaultStyleInterpolation(CSSValue* start, CSSValue* end, CSSPropertyID id)
         : StyleInterpolation(InterpolableBool::create(false), InterpolableBool::create(true), id)
diff --git a/sky/engine/core/animation/DeferredLegacyStyleInterpolation.cpp b/sky/engine/core/animation/DeferredLegacyStyleInterpolation.cpp
index 8b33cb2..9e62773 100644
--- a/sky/engine/core/animation/DeferredLegacyStyleInterpolation.cpp
+++ b/sky/engine/core/animation/DeferredLegacyStyleInterpolation.cpp
@@ -130,11 +130,4 @@
     return false;
 }
 
-void DeferredLegacyStyleInterpolation::trace(Visitor* visitor)
-{
-    visitor->trace(m_startCSSValue);
-    visitor->trace(m_endCSSValue);
-    StyleInterpolation::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/DeferredLegacyStyleInterpolation.h b/sky/engine/core/animation/DeferredLegacyStyleInterpolation.h
index f1c93e6..50f50c8 100644
--- a/sky/engine/core/animation/DeferredLegacyStyleInterpolation.h
+++ b/sky/engine/core/animation/DeferredLegacyStyleInterpolation.h
@@ -25,8 +25,6 @@
 
     virtual void apply(StyleResolverState&) const override;
 
-    virtual void trace(Visitor*) override;
-
     static bool interpolationRequiresStyleResolve(const CSSValue&);
     static bool interpolationRequiresStyleResolve(const CSSPrimitiveValue&);
     static bool interpolationRequiresStyleResolve(const CSSImageValue&);
diff --git a/sky/engine/core/animation/InertAnimation.cpp b/sky/engine/core/animation/InertAnimation.cpp
index 18466fe..84540b2 100644
--- a/sky/engine/core/animation/InertAnimation.cpp
+++ b/sky/engine/core/animation/InertAnimation.cpp
@@ -63,10 +63,4 @@
     return std::numeric_limits<double>::infinity();
 }
 
-void InertAnimation::trace(Visitor* visitor)
-{
-    visitor->trace(m_effect);
-    AnimationNode::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/InertAnimation.h b/sky/engine/core/animation/InertAnimation.h
index bcf95b1..10835a6 100644
--- a/sky/engine/core/animation/InertAnimation.h
+++ b/sky/engine/core/animation/InertAnimation.h
@@ -44,8 +44,6 @@
     AnimationEffect* effect() const { return m_effect.get(); }
     bool paused() const { return m_paused; }
 
-    virtual void trace(Visitor*);
-
 protected:
     virtual void updateChildrenAndEffects() const override { }
     virtual double calculateTimeToEffectChange(bool forwards, double inheritedTime, double timeToNextIteration) const override;
diff --git a/sky/engine/core/animation/InterpolableValue.cpp b/sky/engine/core/animation/InterpolableValue.cpp
index b276ef8..63be961 100644
--- a/sky/engine/core/animation/InterpolableValue.cpp
+++ b/sky/engine/core/animation/InterpolableValue.cpp
@@ -48,14 +48,6 @@
     return result.release();
 }
 
-void InterpolableList::trace(Visitor* visitor)
-{
-#if ENABLE_OILPAN
-    visitor->trace(m_values);
-#endif
-    InterpolableValue::trace(visitor);
-}
-
 PassOwnPtr<InterpolableValue> InterpolableAnimatableValue::interpolate(const InterpolableValue &other, const double percentage) const
 {
     const InterpolableAnimatableValue& otherValue = toInterpolableAnimatableValue(other);
@@ -66,10 +58,4 @@
     return create(AnimatableValue::interpolate(m_value.get(), otherValue.m_value.get(), percentage));
 }
 
-void InterpolableAnimatableValue::trace(Visitor* visitor)
-{
-    visitor->trace(m_value);
-    InterpolableValue::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/InterpolableValue.h b/sky/engine/core/animation/InterpolableValue.h
index 3f97550..26809ec 100644
--- a/sky/engine/core/animation/InterpolableValue.h
+++ b/sky/engine/core/animation/InterpolableValue.h
@@ -22,8 +22,6 @@
 
     virtual PassOwnPtr<InterpolableValue> clone() const = 0;
 
-    virtual void trace(Visitor*) { }
-
 private:
     virtual PassOwnPtr<InterpolableValue> interpolate(const InterpolableValue &to, const double progress) const = 0;
 
@@ -48,8 +46,6 @@
     double value() const { return m_value; }
     virtual PassOwnPtr<InterpolableValue> clone() const override final { return create(m_value); }
 
-    virtual void trace(Visitor* visitor) override { InterpolableValue::trace(visitor); }
-
 private:
     virtual PassOwnPtr<InterpolableValue> interpolate(const InterpolableValue &to, const double progress) const override final;
     double m_value;
@@ -72,8 +68,6 @@
     bool value() const { return m_value; }
     virtual PassOwnPtr<InterpolableValue> clone() const override final { return create(m_value); }
 
-    virtual void trace(Visitor* visitor) override { InterpolableValue::trace(visitor); }
-
 private:
     virtual PassOwnPtr<InterpolableValue> interpolate(const InterpolableValue &to, const double progress) const override final;
     bool m_value;
@@ -111,8 +105,6 @@
     size_t length() const { return m_size; }
     virtual PassOwnPtr<InterpolableValue> clone() const override final { return create(*this); }
 
-    virtual void trace(Visitor*) override;
-
 private:
     virtual PassOwnPtr<InterpolableValue> interpolate(const InterpolableValue &other, const double progress) const override final;
     explicit InterpolableList(size_t size)
@@ -145,8 +137,6 @@
     AnimatableValue* value() const { return m_value.get(); }
     virtual PassOwnPtr<InterpolableValue> clone() const override final { return create(m_value); }
 
-    virtual void trace(Visitor*) override;
-
 private:
     virtual PassOwnPtr<InterpolableValue> interpolate(const InterpolableValue &other, const double progress) const override final;
     RefPtr<AnimatableValue> m_value;
diff --git a/sky/engine/core/animation/Interpolation.cpp b/sky/engine/core/animation/Interpolation.cpp
index 289c48b..416e3f0 100644
--- a/sky/engine/core/animation/Interpolation.cpp
+++ b/sky/engine/core/animation/Interpolation.cpp
@@ -53,11 +53,4 @@
     }
 }
 
-void Interpolation::trace(Visitor* visitor)
-{
-    visitor->trace(m_start);
-    visitor->trace(m_end);
-    visitor->trace(m_cachedValue);
-}
-
 }
diff --git a/sky/engine/core/animation/Interpolation.h b/sky/engine/core/animation/Interpolation.h
index a3b1908..89fc8d3 100644
--- a/sky/engine/core/animation/Interpolation.h
+++ b/sky/engine/core/animation/Interpolation.h
@@ -23,8 +23,6 @@
     virtual bool isStyleInterpolation() const { return false; }
     virtual bool isLegacyStyleInterpolation() const { return false; }
 
-    virtual void trace(Visitor*);
-
 protected:
     const OwnPtr<InterpolableValue> m_start;
     const OwnPtr<InterpolableValue> m_end;
diff --git a/sky/engine/core/animation/InterpolationEffect.cpp b/sky/engine/core/animation/InterpolationEffect.cpp
index 2831d2e..e63cfc1 100644
--- a/sky/engine/core/animation/InterpolationEffect.cpp
+++ b/sky/engine/core/animation/InterpolationEffect.cpp
@@ -27,16 +27,4 @@
     return adoptPtr(result);
 }
 
-void InterpolationEffect::InterpolationRecord::trace(Visitor* visitor)
-{
-    visitor->trace(m_interpolation);
-}
-
-void InterpolationEffect::trace(Visitor* visitor)
-{
-#if ENABLE_OILPAN
-    visitor->trace(m_interpolations);
-#endif
-}
-
 }
diff --git a/sky/engine/core/animation/InterpolationEffect.h b/sky/engine/core/animation/InterpolationEffect.h
index cd8631e..69a00b4 100644
--- a/sky/engine/core/animation/InterpolationEffect.h
+++ b/sky/engine/core/animation/InterpolationEffect.h
@@ -23,8 +23,6 @@
         m_interpolations.append(InterpolationRecord::create(interpolation, easing, start, end, applyFrom, applyTo));
     }
 
-    void trace(Visitor*);
-
 private:
     InterpolationEffect()
     {
@@ -44,8 +42,6 @@
             return adoptPtr(new InterpolationRecord(interpolation, easing, start, end, applyFrom, applyTo));
         }
 
-        void trace(Visitor*);
-
     private:
         InterpolationRecord(PassRefPtr<Interpolation> interpolation, PassRefPtr<TimingFunction> easing, double start, double end, double applyFrom, double applyTo)
             : m_interpolation(interpolation)
diff --git a/sky/engine/core/animation/Keyframe.h b/sky/engine/core/animation/Keyframe.h
index 38ee1c4..b54f4a3 100644
--- a/sky/engine/core/animation/Keyframe.h
+++ b/sky/engine/core/animation/Keyframe.h
@@ -48,8 +48,6 @@
     virtual bool isAnimatableValueKeyframe() const { return false; }
     virtual bool isStringKeyframe() const { return false; }
 
-    virtual void trace(Visitor*) { }
-
     class PropertySpecificKeyframe {
     public:
         virtual ~PropertySpecificKeyframe() { }
@@ -66,8 +64,6 @@
         virtual PassOwnPtr<PropertySpecificKeyframe> neutralKeyframe(double offset, PassRefPtr<TimingFunction> easing) const = 0;
         virtual PassRefPtr<Interpolation> createInterpolation(CSSPropertyID, blink::Keyframe::PropertySpecificKeyframe* end, Element*) const = 0;
 
-        virtual void trace(Visitor*) { }
-
     protected:
         PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, AnimationEffect::CompositeOperation);
 
diff --git a/sky/engine/core/animation/KeyframeEffectModel.cpp b/sky/engine/core/animation/KeyframeEffectModel.cpp
index afaf076..42d67f0 100644
--- a/sky/engine/core/animation/KeyframeEffectModel.cpp
+++ b/sky/engine/core/animation/KeyframeEffectModel.cpp
@@ -174,16 +174,6 @@
     return true;
 }
 
-void KeyframeEffectModelBase::trace(Visitor* visitor)
-{
-    visitor->trace(m_keyframes);
-    visitor->trace(m_interpolationEffect);
-#if ENABLE_OILPAN
-    visitor->trace(m_keyframeGroups);
-#endif
-    AnimationEffect::trace(visitor);
-}
-
 Keyframe::PropertySpecificKeyframe::PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, AnimationEffect::CompositeOperation composite)
     : m_offset(offset)
     , m_easing(easing)
@@ -225,11 +215,4 @@
         appendKeyframe(m_keyframes.last()->neutralKeyframe(1, nullptr));
 }
 
-void KeyframeEffectModelBase::PropertySpecificKeyframeGroup::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_keyframes);
-#endif
-}
-
 } // namespace
diff --git a/sky/engine/core/animation/KeyframeEffectModel.h b/sky/engine/core/animation/KeyframeEffectModel.h
index 3a856fc..2ddf899 100644
--- a/sky/engine/core/animation/KeyframeEffectModel.h
+++ b/sky/engine/core/animation/KeyframeEffectModel.h
@@ -60,8 +60,6 @@
         void appendKeyframe(PassOwnPtr<Keyframe::PropertySpecificKeyframe>);
         const PropertySpecificKeyframeVector& keyframes() const { return m_keyframes; }
 
-        void trace(Visitor*);
-
     private:
         void removeRedundantKeyframes();
         void addSyntheticKeyframeIfRequired(const KeyframeEffectModelBase* context);
@@ -93,8 +91,6 @@
     virtual bool isAnimatableValueKeyframeEffectModel() const { return false; }
     virtual bool isStringKeyframeEffectModel() const { return false; }
 
-    virtual void trace(Visitor*) override;
-
     // FIXME: This is a hack used to resolve CSSValues to AnimatableValues while we have a valid handle on an element.
     // This should be removed once StringKeyframes no longer uses InterpolableAnimatableValues.
     void forceConversionsToAnimatableValues(Element* element)
diff --git a/sky/engine/core/animation/LegacyStyleInterpolation.h b/sky/engine/core/animation/LegacyStyleInterpolation.h
index cf49f34..162570a 100644
--- a/sky/engine/core/animation/LegacyStyleInterpolation.h
+++ b/sky/engine/core/animation/LegacyStyleInterpolation.h
@@ -28,11 +28,6 @@
         return toInterpolableAnimatableValue(m_cachedValue.get())->value();
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        StyleInterpolation::trace(visitor);
-    }
-
 private:
     LegacyStyleInterpolation(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end, CSSPropertyID id)
         : StyleInterpolation(start, end, id)
diff --git a/sky/engine/core/animation/LengthStyleInterpolation.cpp b/sky/engine/core/animation/LengthStyleInterpolation.cpp
index 174a4d1..d5bebfe 100644
--- a/sky/engine/core/animation/LengthStyleInterpolation.cpp
+++ b/sky/engine/core/animation/LengthStyleInterpolation.cpp
@@ -101,9 +101,4 @@
     StyleBuilder::applyProperty(m_id, state, interpolableValueToLength(m_cachedValue.get(), m_range).get());
 }
 
-void LengthStyleInterpolation::trace(Visitor* visitor)
-{
-    StyleInterpolation::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/LengthStyleInterpolation.h b/sky/engine/core/animation/LengthStyleInterpolation.h
index 24cc707..55ed670 100644
--- a/sky/engine/core/animation/LengthStyleInterpolation.h
+++ b/sky/engine/core/animation/LengthStyleInterpolation.h
@@ -20,9 +20,6 @@
     static bool canCreateFrom(const CSSValue&);
 
     virtual void apply(StyleResolverState&) const override;
-
-    virtual void trace(Visitor*) override;
-
 private:
     LengthStyleInterpolation(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end, CSSPropertyID id,  ValueRange range)
         : StyleInterpolation(start, end, id)
diff --git a/sky/engine/core/animation/SampledEffect.cpp b/sky/engine/core/animation/SampledEffect.cpp
index c8b82f0..977a11c 100644
--- a/sky/engine/core/animation/SampledEffect.cpp
+++ b/sky/engine/core/animation/SampledEffect.cpp
@@ -55,12 +55,4 @@
     m_interpolations->shrink(dest);
 }
 
-void SampledEffect::trace(Visitor* visitor)
-{
-    visitor->trace(m_animation);
-#if ENABLE(OILPAN)
-    visitor->trace(m_interpolations);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/SampledEffect.h b/sky/engine/core/animation/SampledEffect.h
index 2834852..c42498e 100644
--- a/sky/engine/core/animation/SampledEffect.h
+++ b/sky/engine/core/animation/SampledEffect.h
@@ -32,8 +32,6 @@
 
     void removeReplacedInterpolationsIfNeeded(const BitArray<numCSSProperties>&);
 
-    void trace(Visitor*);
-
 private:
     SampledEffect(Animation*, PassOwnPtr<Vector<RefPtr<Interpolation> > >);
 
diff --git a/sky/engine/core/animation/StringKeyframe.cpp b/sky/engine/core/animation/StringKeyframe.cpp
index 9aec887..936ce65 100644
--- a/sky/engine/core/animation/StringKeyframe.cpp
+++ b/sky/engine/core/animation/StringKeyframe.cpp
@@ -48,12 +48,6 @@
     return adoptPtr(new PropertySpecificKeyframe(offset(), &easing(), propertyValue(property), composite()));
 }
 
-void StringKeyframe::trace(Visitor* visitor)
-{
-    visitor->trace(m_propertySet);
-    Keyframe::trace(visitor);
-}
-
 StringKeyframe::PropertySpecificKeyframe::PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, CSSValue* value, AnimationEffect::CompositeOperation op)
     : Keyframe::PropertySpecificKeyframe(offset, easing, op)
     , m_value(value)
@@ -142,11 +136,4 @@
     return adoptPtr(theClone);
 }
 
-void StringKeyframe::PropertySpecificKeyframe::trace(Visitor* visitor)
-{
-    visitor->trace(m_value);
-    visitor->trace(m_animatableValueCache);
-    Keyframe::PropertySpecificKeyframe::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/StringKeyframe.h b/sky/engine/core/animation/StringKeyframe.h
index 9dea079..9159825 100644
--- a/sky/engine/core/animation/StringKeyframe.h
+++ b/sky/engine/core/animation/StringKeyframe.h
@@ -28,8 +28,6 @@
     }
     virtual PropertySet properties() const override;
 
-    virtual void trace(Visitor*) override;
-
     class PropertySpecificKeyframe : public Keyframe::PropertySpecificKeyframe {
     public:
         PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, CSSValue*, AnimationEffect::CompositeOperation);
@@ -42,8 +40,6 @@
         virtual PassOwnPtr<Keyframe::PropertySpecificKeyframe> neutralKeyframe(double offset, PassRefPtr<TimingFunction> easing) const override final;
         virtual PassRefPtr<Interpolation> createInterpolation(CSSPropertyID, blink::Keyframe::PropertySpecificKeyframe* end, Element*) const override final;
 
-        virtual void trace(Visitor*) override;
-
     private:
         PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, CSSValue*);
 
diff --git a/sky/engine/core/animation/StyleInterpolation.h b/sky/engine/core/animation/StyleInterpolation.h
index ce0a967..d3c6123 100644
--- a/sky/engine/core/animation/StyleInterpolation.h
+++ b/sky/engine/core/animation/StyleInterpolation.h
@@ -26,11 +26,6 @@
 
     CSSPropertyID id() const { return m_id; }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        Interpolation::trace(visitor);
-    }
-
 protected:
     CSSPropertyID m_id;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableClipPathOperation.h b/sky/engine/core/animation/animatable/AnimatableClipPathOperation.h
index 13a6298..cbc975b 100644
--- a/sky/engine/core/animation/animatable/AnimatableClipPathOperation.h
+++ b/sky/engine/core/animation/animatable/AnimatableClipPathOperation.h
@@ -45,8 +45,6 @@
     }
     ClipPathOperation* clipPathOperation() const { return m_operation.get(); }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
     virtual bool usesDefaultInterpolationWith(const AnimatableValue*) const override;
diff --git a/sky/engine/core/animation/animatable/AnimatableColor.h b/sky/engine/core/animation/animatable/AnimatableColor.h
index 0a680de..cc27118 100644
--- a/sky/engine/core/animation/animatable/AnimatableColor.h
+++ b/sky/engine/core/animation/animatable/AnimatableColor.h
@@ -61,8 +61,6 @@
     static PassRefPtr<AnimatableColor> create(const AnimatableColorImpl&);
     Color color() const { return m_color.toColor(); }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableDouble.h b/sky/engine/core/animation/animatable/AnimatableDouble.h
index cfc4b14..4b9b824 100644
--- a/sky/engine/core/animation/animatable/AnimatableDouble.h
+++ b/sky/engine/core/animation/animatable/AnimatableDouble.h
@@ -51,8 +51,6 @@
 
     double toDouble() const { return m_number; }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
     virtual bool usesDefaultInterpolationWith(const AnimatableValue*) const override;
diff --git a/sky/engine/core/animation/animatable/AnimatableFilterOperations.h b/sky/engine/core/animation/animatable/AnimatableFilterOperations.h
index 2e660a7..d685c3f 100644
--- a/sky/engine/core/animation/animatable/AnimatableFilterOperations.h
+++ b/sky/engine/core/animation/animatable/AnimatableFilterOperations.h
@@ -45,8 +45,6 @@
     }
     const FilterOperations& operations() const { return m_operations; }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
     virtual bool usesDefaultInterpolationWith(const AnimatableValue*) const override;
diff --git a/sky/engine/core/animation/animatable/AnimatableImage.h b/sky/engine/core/animation/animatable/AnimatableImage.h
index 383b046..1e7b588 100644
--- a/sky/engine/core/animation/animatable/AnimatableImage.h
+++ b/sky/engine/core/animation/animatable/AnimatableImage.h
@@ -46,12 +46,6 @@
     }
     CSSValue* toCSSValue() const { return m_value.get(); }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_value);
-        AnimatableValue::trace(visitor);
-    }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
     virtual bool usesDefaultInterpolationWith(const AnimatableValue*) const override;
diff --git a/sky/engine/core/animation/animatable/AnimatableLength.h b/sky/engine/core/animation/animatable/AnimatableLength.h
index 827dd40..e275a72 100644
--- a/sky/engine/core/animation/animatable/AnimatableLength.h
+++ b/sky/engine/core/animation/animatable/AnimatableLength.h
@@ -64,8 +64,6 @@
     virtual AnimatableType type() const override { return TypeLength; }
     virtual bool equalTo(const AnimatableValue*) const override;
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
     double m_pixels;
     double m_percent;
     bool m_hasPixels;
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthBox.cpp b/sky/engine/core/animation/animatable/AnimatableLengthBox.cpp
index c96607b..20a0d00 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthBox.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableLengthBox.cpp
@@ -52,13 +52,4 @@
         && bottom()->equals(lengthBox->bottom());
 }
 
-void AnimatableLengthBox::trace(Visitor* visitor)
-{
-    visitor->trace(m_left);
-    visitor->trace(m_right);
-    visitor->trace(m_top);
-    visitor->trace(m_bottom);
-    AnimatableValue::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthBox.h b/sky/engine/core/animation/animatable/AnimatableLengthBox.h
index 3a65477..f4a6c13 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthBox.h
+++ b/sky/engine/core/animation/animatable/AnimatableLengthBox.h
@@ -47,8 +47,6 @@
     const AnimatableValue* top() const { return m_top.get(); }
     const AnimatableValue* bottom() const { return m_bottom.get(); }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.cpp b/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.cpp
index 6263091..d027d14 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.cpp
@@ -58,10 +58,4 @@
     return box()->equals(lengthBox->box()) && flag() == lengthBox->flag();
 }
 
-void AnimatableLengthBoxAndBool::trace(Visitor* visitor)
-{
-    visitor->trace(m_box);
-    AnimatableValue::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.h b/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.h
index 229fd5f..6ad90b2 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.h
+++ b/sky/engine/core/animation/animatable/AnimatableLengthBoxAndBool.h
@@ -45,8 +45,6 @@
     const AnimatableValue* box() const { return m_box.get(); }
     bool flag() const { return m_flag; }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
     virtual bool usesDefaultInterpolationWith(const AnimatableValue*) const override;
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthPoint.cpp b/sky/engine/core/animation/animatable/AnimatableLengthPoint.cpp
index 01dc7e1..b66a412 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthPoint.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableLengthPoint.cpp
@@ -47,11 +47,4 @@
     return x()->equals(lengthPoint->x()) && y()->equals(lengthPoint->y());
 }
 
-void AnimatableLengthPoint::trace(Visitor* visitor)
-{
-    visitor->trace(m_x);
-    visitor->trace(m_y);
-    AnimatableValue::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthPoint.h b/sky/engine/core/animation/animatable/AnimatableLengthPoint.h
index 082b984..d18324c 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthPoint.h
+++ b/sky/engine/core/animation/animatable/AnimatableLengthPoint.h
@@ -45,8 +45,6 @@
     const AnimatableValue* x() const { return m_x.get(); }
     const AnimatableValue* y() const { return m_y.get(); }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.cpp b/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.cpp
index 2aaf3ba..0d05ca9 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.cpp
@@ -48,12 +48,4 @@
     return x()->equals(lengthPoint->x()) && y()->equals(lengthPoint->y()) && z()->equals(lengthPoint->z());
 }
 
-void AnimatableLengthPoint3D::trace(Visitor* visitor)
-{
-    visitor->trace(m_x);
-    visitor->trace(m_y);
-    visitor->trace(m_z);
-    AnimatableValue::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.h b/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.h
index c2a5d7b..1be1a7f 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.h
+++ b/sky/engine/core/animation/animatable/AnimatableLengthPoint3D.h
@@ -46,8 +46,6 @@
     const AnimatableValue* y() const { return m_y.get(); }
     const AnimatableValue* z() const { return m_z.get(); }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthSize.cpp b/sky/engine/core/animation/animatable/AnimatableLengthSize.cpp
index 69d47fb..5fff41a 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthSize.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableLengthSize.cpp
@@ -47,11 +47,4 @@
     return width()->equals(lengthSize->width()) && height()->equals(lengthSize->height());
 }
 
-void AnimatableLengthSize::trace(Visitor* visitor)
-{
-    visitor->trace(m_width);
-    visitor->trace(m_height);
-    AnimatableValue::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/animatable/AnimatableLengthSize.h b/sky/engine/core/animation/animatable/AnimatableLengthSize.h
index 273cbce..c2a581a 100644
--- a/sky/engine/core/animation/animatable/AnimatableLengthSize.h
+++ b/sky/engine/core/animation/animatable/AnimatableLengthSize.h
@@ -45,8 +45,6 @@
     const AnimatableValue* width() const { return m_width.get(); }
     const AnimatableValue* height() const { return m_height.get(); }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableNeutral.h b/sky/engine/core/animation/animatable/AnimatableNeutral.h
index 0d07df8..69237ba 100644
--- a/sky/engine/core/animation/animatable/AnimatableNeutral.h
+++ b/sky/engine/core/animation/animatable/AnimatableNeutral.h
@@ -39,8 +39,6 @@
 public:
     virtual ~AnimatableNeutral() { }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     static PassRefPtr<AnimatableNeutral> create() { return adoptRef(new AnimatableNeutral()); }
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue* value, double fraction) const override
diff --git a/sky/engine/core/animation/animatable/AnimatableRepeatable.cpp b/sky/engine/core/animation/animatable/AnimatableRepeatable.cpp
index e9cccd6..03c86e4 100644
--- a/sky/engine/core/animation/animatable/AnimatableRepeatable.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableRepeatable.cpp
@@ -91,10 +91,4 @@
     return true;
 }
 
-void AnimatableRepeatable::trace(Visitor* visitor)
-{
-    visitor->trace(m_values);
-    AnimatableValue::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/animatable/AnimatableRepeatable.h b/sky/engine/core/animation/animatable/AnimatableRepeatable.h
index 523e1c8..67c35c5 100644
--- a/sky/engine/core/animation/animatable/AnimatableRepeatable.h
+++ b/sky/engine/core/animation/animatable/AnimatableRepeatable.h
@@ -50,8 +50,6 @@
 
     const Vector<RefPtr<AnimatableValue> >& values() const { return m_values; }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     AnimatableRepeatable()
     {
diff --git a/sky/engine/core/animation/animatable/AnimatableShadow.h b/sky/engine/core/animation/animatable/AnimatableShadow.h
index 60e8d2e..c50dc8f 100644
--- a/sky/engine/core/animation/animatable/AnimatableShadow.h
+++ b/sky/engine/core/animation/animatable/AnimatableShadow.h
@@ -45,8 +45,6 @@
     }
     ShadowList* shadowList() const { return m_shadowList.get(); }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableShapeValue.h b/sky/engine/core/animation/animatable/AnimatableShapeValue.h
index e6ac293..748a838 100644
--- a/sky/engine/core/animation/animatable/AnimatableShapeValue.h
+++ b/sky/engine/core/animation/animatable/AnimatableShapeValue.h
@@ -45,8 +45,6 @@
     }
     ShapeValue* shapeValue() const { return m_shape.get(); }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
     virtual bool usesDefaultInterpolationWith(const AnimatableValue*) const override;
diff --git a/sky/engine/core/animation/animatable/AnimatableTransform.h b/sky/engine/core/animation/animatable/AnimatableTransform.h
index 146571e..e785c08 100644
--- a/sky/engine/core/animation/animatable/AnimatableTransform.h
+++ b/sky/engine/core/animation/animatable/AnimatableTransform.h
@@ -45,8 +45,6 @@
         return m_transform;
     }
 
-    virtual void trace(Visitor* visitor) override { AnimatableValue::trace(visitor); }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue*, double fraction) const override;
 
diff --git a/sky/engine/core/animation/animatable/AnimatableUnknown.h b/sky/engine/core/animation/animatable/AnimatableUnknown.h
index 063dc82..5df64ba 100644
--- a/sky/engine/core/animation/animatable/AnimatableUnknown.h
+++ b/sky/engine/core/animation/animatable/AnimatableUnknown.h
@@ -53,12 +53,6 @@
     PassRefPtr<CSSValue> toCSSValue() const { return m_value; }
     CSSValueID toCSSValueID() const { return toCSSPrimitiveValue(m_value.get())->getValueID(); }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_value);
-        AnimatableValue::trace(visitor);
-    }
-
 protected:
     virtual PassRefPtr<AnimatableValue> interpolateTo(const AnimatableValue* value, double fraction) const override
     {
diff --git a/sky/engine/core/animation/animatable/AnimatableValue.h b/sky/engine/core/animation/animatable/AnimatableValue.h
index 85ae075..1bd2421 100644
--- a/sky/engine/core/animation/animatable/AnimatableValue.h
+++ b/sky/engine/core/animation/animatable/AnimatableValue.h
@@ -84,8 +84,6 @@
         return value->type() == type();
     }
 
-    virtual void trace(Visitor*) { }
-
 protected:
     enum AnimatableType {
         TypeClipPathOperation,
diff --git a/sky/engine/core/animation/animatable/AnimatableValueKeyframe.cpp b/sky/engine/core/animation/animatable/AnimatableValueKeyframe.cpp
index bae1357..50829b7 100644
--- a/sky/engine/core/animation/animatable/AnimatableValueKeyframe.cpp
+++ b/sky/engine/core/animation/animatable/AnimatableValueKeyframe.cpp
@@ -36,14 +36,6 @@
     return adoptPtr(new PropertySpecificKeyframe(offset(), &easing(), propertyValue(property), composite()));
 }
 
-void AnimatableValueKeyframe::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_propertyValues);
-#endif
-    Keyframe::trace(visitor);
-}
-
 AnimatableValueKeyframe::PropertySpecificKeyframe::PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, const AnimatableValue* value, AnimationEffect::CompositeOperation op)
     : Keyframe::PropertySpecificKeyframe(offset, easing, op)
     , m_value(const_cast<AnimatableValue*>(value))
@@ -73,10 +65,4 @@
     return adoptPtr(new AnimatableValueKeyframe::PropertySpecificKeyframe(offset, easing, AnimatableValue::neutralValue(), AnimationEffect::CompositeAdd));
 }
 
-void AnimatableValueKeyframe::PropertySpecificKeyframe::trace(Visitor* visitor)
-{
-    visitor->trace(m_value);
-    Keyframe::PropertySpecificKeyframe::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/animation/animatable/AnimatableValueKeyframe.h b/sky/engine/core/animation/animatable/AnimatableValueKeyframe.h
index ced75f6..018916a 100644
--- a/sky/engine/core/animation/animatable/AnimatableValueKeyframe.h
+++ b/sky/engine/core/animation/animatable/AnimatableValueKeyframe.h
@@ -28,8 +28,6 @@
     }
     virtual PropertySet properties() const override;
 
-    virtual void trace(Visitor*) override;
-
     class PropertySpecificKeyframe : public Keyframe::PropertySpecificKeyframe {
     public:
         PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, const AnimatableValue*, AnimationEffect::CompositeOperation);
@@ -40,8 +38,6 @@
         virtual PassOwnPtr<Keyframe::PropertySpecificKeyframe> neutralKeyframe(double offset, PassRefPtr<TimingFunction> easing) const override final;
         virtual PassRefPtr<Interpolation> createInterpolation(CSSPropertyID, blink::Keyframe::PropertySpecificKeyframe* end, Element*) const override final;
 
-        virtual void trace(Visitor*) override;
-
     private:
         PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, PassRefPtr<AnimatableValue>);
 
diff --git a/sky/engine/core/animation/css/CSSAnimations.cpp b/sky/engine/core/animation/css/CSSAnimations.cpp
index b967bf8..497c0b7 100644
--- a/sky/engine/core/animation/css/CSSAnimations.cpp
+++ b/sky/engine/core/animation/css/CSSAnimations.cpp
@@ -622,12 +622,6 @@
     m_previousIteration = currentIteration;
 }
 
-void CSSAnimations::AnimationEventDelegate::trace(Visitor* visitor)
-{
-    visitor->trace(m_target);
-    AnimationNode::EventDelegate::trace(visitor);
-}
-
 void CSSAnimations::TransitionEventDelegate::onEventCondition(const AnimationNode* animationNode)
 {
     const AnimationNode::Phase currentPhase = animationNode->phase();
@@ -644,12 +638,6 @@
     m_previousPhase = currentPhase;
 }
 
-void CSSAnimations::TransitionEventDelegate::trace(Visitor* visitor)
-{
-    visitor->trace(m_target);
-    AnimationNode::EventDelegate::trace(visitor);
-}
-
 const StylePropertyShorthand& CSSAnimations::animatableProperties()
 {
     DEFINE_STATIC_LOCAL(Vector<CSSPropertyID>, properties, ());
@@ -705,25 +693,4 @@
     }
 }
 
-void CSSAnimations::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_transitions);
-    visitor->trace(m_pendingUpdate);
-    visitor->trace(m_animations);
-    visitor->trace(m_previousActiveInterpolationsForAnimations);
-#endif
-}
-
-void CSSAnimationUpdate::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_newTransitions);
-    visitor->trace(m_activeInterpolationsForAnimations);
-    visitor->trace(m_activeInterpolationsForTransitions);
-    visitor->trace(m_newAnimations);
-    visitor->trace(m_cancelledAnimationPlayers);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/animation/css/CSSAnimations.h b/sky/engine/core/animation/css/CSSAnimations.h
index a46659d..f57e70b 100644
--- a/sky/engine/core/animation/css/CSSAnimations.h
+++ b/sky/engine/core/animation/css/CSSAnimations.h
@@ -89,11 +89,6 @@
     struct NewAnimation {
         ALLOW_ONLY_INLINE_ALLOCATION();
     public:
-        void trace(Visitor* visitor)
-        {
-            visitor->trace(animation);
-        }
-
         AtomicString name;
         RefPtr<InertAnimation> animation;
     };
@@ -105,13 +100,6 @@
     struct NewTransition {
         ALLOW_ONLY_INLINE_ALLOCATION();
     public:
-        void trace(Visitor* visitor)
-        {
-            visitor->trace(from);
-            visitor->trace(to);
-            visitor->trace(animation);
-        }
-
         CSSPropertyID id;
         CSSPropertyID eventId;
         RawPtr<const AnimatableValue> from;
@@ -140,8 +128,6 @@
             && m_activeInterpolationsForTransitions.isEmpty();
     }
 
-    void trace(Visitor*);
-
 private:
     // Order is significant since it defines the order in which new animations
     // will be started. Note that there may be multiple animations present
@@ -180,19 +166,10 @@
     bool isEmpty() const { return m_animations.isEmpty() && m_transitions.isEmpty() && !m_pendingUpdate; }
     void cancel();
 
-    void trace(Visitor*);
-
 private:
     struct RunningTransition {
         ALLOW_ONLY_INLINE_ALLOCATION();
     public:
-        void trace(Visitor* visitor)
-        {
-            visitor->trace(from);
-            visitor->trace(to);
-            visitor->trace(player);
-        }
-
         RefPtr<AnimationPlayer> player;
         RawPtr<const AnimatableValue> from;
         RawPtr<const AnimatableValue> to;
@@ -225,7 +202,6 @@
         {
         }
         virtual void onEventCondition(const AnimationNode*) override;
-        virtual void trace(Visitor*) override;
 
     private:
         void maybeDispatch(Document::ListenerType, const AtomicString& eventName, double elapsedTime);
@@ -244,7 +220,6 @@
         {
         }
         virtual void onEventCondition(const AnimationNode*) override;
-        virtual void trace(Visitor*) override;
 
     private:
         RawPtr<Element> m_target;
diff --git a/sky/engine/core/animation/css/CSSTimingData.h b/sky/engine/core/animation/css/CSSTimingData.h
index 00d890c..0ddf73a 100644
--- a/sky/engine/core/animation/css/CSSTimingData.h
+++ b/sky/engine/core/animation/css/CSSTimingData.h
@@ -17,8 +17,6 @@
 public:
     ~CSSTimingData() { }
 
-    void trace(Visitor*) { }
-
     const Vector<double>& delayList() const { return m_delayList; }
     const Vector<double>& durationList() const { return m_durationList; }
     const Vector<RefPtr<TimingFunction> >& timingFunctionList() const { return m_timingFunctionList; }
diff --git a/sky/engine/core/core.gni b/sky/engine/core/core.gni
index 48826fe..2ecf113 100644
--- a/sky/engine/core/core.gni
+++ b/sky/engine/core/core.gni
@@ -278,7 +278,6 @@
   "css/MediaValuesCached.h",
   "css/MediaValuesDynamic.cpp",
   "css/MediaValuesDynamic.h",
-  "css/Pair.cpp",
   "css/Pair.h",
   "css/parser/BisonCSSParser.h",
   "css/parser/CSSParserIdioms.h",
diff --git a/sky/engine/core/css/CSSAspectRatioValue.h b/sky/engine/core/css/CSSAspectRatioValue.h
index 80a0f8d..c887db1 100644
--- a/sky/engine/core/css/CSSAspectRatioValue.h
+++ b/sky/engine/core/css/CSSAspectRatioValue.h
@@ -47,8 +47,6 @@
 
     bool equals(const CSSAspectRatioValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSAspectRatioValue(float numeratorValue, float denominatorValue)
         : CSSValue(AspectRatioClass)
diff --git a/sky/engine/core/css/CSSBasicShapes.cpp b/sky/engine/core/css/CSSBasicShapes.cpp
index 7032c8d..50b13d6 100644
--- a/sky/engine/core/css/CSSBasicShapes.cpp
+++ b/sky/engine/core/css/CSSBasicShapes.cpp
@@ -136,14 +136,6 @@
         && compareCSSValuePtr(m_referenceBox, other.m_referenceBox);
 }
 
-void CSSBasicShapeCircle::trace(Visitor* visitor)
-{
-    visitor->trace(m_centerX);
-    visitor->trace(m_centerY);
-    visitor->trace(m_radius);
-    CSSBasicShape::trace(visitor);
-}
-
 static String buildEllipseString(const String& radiusX, const String& radiusY, const String& centerX, const String& centerY, const String& box)
 {
     char at[] = "at";
@@ -218,15 +210,6 @@
         && compareCSSValuePtr(m_referenceBox, other.m_referenceBox);
 }
 
-void CSSBasicShapeEllipse::trace(Visitor* visitor)
-{
-    visitor->trace(m_centerX);
-    visitor->trace(m_centerY);
-    visitor->trace(m_radiusX);
-    visitor->trace(m_radiusY);
-    CSSBasicShape::trace(visitor);
-}
-
 static String buildPolygonString(const WindRule& windRule, const Vector<String>& points, const String& box)
 {
     ASSERT(!(points.size() % 2));
@@ -296,12 +279,6 @@
     return compareCSSValueVector(m_values, rhs.m_values);
 }
 
-void CSSBasicShapePolygon::trace(Visitor* visitor)
-{
-    visitor->trace(m_values);
-    CSSBasicShape::trace(visitor);
-}
-
 static bool buildInsetRadii(Vector<String> &radii, const String& topLeftRadius, const String& topRightRadius, const String& bottomRightRadius, const String& bottomLeftRadius)
 {
     bool showBottomLeft = topRightRadius != bottomLeftRadius;
@@ -435,18 +412,5 @@
         && compareCSSValuePtr(m_bottomLeftRadius, other.m_bottomLeftRadius);
 }
 
-void CSSBasicShapeInset::trace(Visitor* visitor)
-{
-    visitor->trace(m_top);
-    visitor->trace(m_right);
-    visitor->trace(m_bottom);
-    visitor->trace(m_left);
-    visitor->trace(m_topLeftRadius);
-    visitor->trace(m_topRightRadius);
-    visitor->trace(m_bottomRightRadius);
-    visitor->trace(m_bottomLeftRadius);
-    CSSBasicShape::trace(visitor);
-}
-
 } // namespace blink
 
diff --git a/sky/engine/core/css/CSSBasicShapes.h b/sky/engine/core/css/CSSBasicShapes.h
index 4f395a9..0d50c5e 100644
--- a/sky/engine/core/css/CSSBasicShapes.h
+++ b/sky/engine/core/css/CSSBasicShapes.h
@@ -55,8 +55,6 @@
     CSSPrimitiveValue* referenceBox() const { return m_referenceBox.get(); }
     void setReferenceBox(PassRefPtr<CSSPrimitiveValue> referenceBox) { m_referenceBox = referenceBox; }
 
-    virtual void trace(Visitor* visitor) { visitor->trace(m_referenceBox); }
-
 protected:
     CSSBasicShape() { }
     RefPtr<CSSPrimitiveValue> m_referenceBox;
@@ -78,8 +76,6 @@
     void setCenterY(PassRefPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; }
     void setRadius(PassRefPtr<CSSPrimitiveValue> radius) { m_radius = radius; }
 
-    virtual void trace(Visitor*);
-
 private:
     CSSBasicShapeCircle() { }
 
@@ -106,8 +102,6 @@
     void setRadiusX(PassRefPtr<CSSPrimitiveValue> radiusX) { m_radiusX = radiusX; }
     void setRadiusY(PassRefPtr<CSSPrimitiveValue> radiusY) { m_radiusY = radiusY; }
 
-    virtual void trace(Visitor*);
-
 private:
     CSSBasicShapeEllipse() { }
 
@@ -138,8 +132,6 @@
     virtual String cssText() const override;
     virtual bool equals(const CSSBasicShape&) const override;
 
-    virtual void trace(Visitor*);
-
 private:
     CSSBasicShapePolygon()
         : m_windRule(RULE_NONZERO)
@@ -202,8 +194,6 @@
     virtual String cssText() const override;
     virtual bool equals(const CSSBasicShape&) const override;
 
-    virtual void trace(Visitor*);
-
 private:
     CSSBasicShapeInset() { }
 
diff --git a/sky/engine/core/css/CSSBorderImageSliceValue.cpp b/sky/engine/core/css/CSSBorderImageSliceValue.cpp
index 5331b9c..090bbcf 100644
--- a/sky/engine/core/css/CSSBorderImageSliceValue.cpp
+++ b/sky/engine/core/css/CSSBorderImageSliceValue.cpp
@@ -53,10 +53,4 @@
     return m_fill == other.m_fill && compareCSSValuePtr(m_slices, other.m_slices);
 }
 
-void CSSBorderImageSliceValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_slices);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSBorderImageSliceValue.h b/sky/engine/core/css/CSSBorderImageSliceValue.h
index 1accd09..5688d7c 100644
--- a/sky/engine/core/css/CSSBorderImageSliceValue.h
+++ b/sky/engine/core/css/CSSBorderImageSliceValue.h
@@ -47,8 +47,6 @@
 
     bool equals(const CSSBorderImageSliceValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
     // These four values are used to make "cuts" in the border image. They can be numbers
     // or percentages.
     RefPtr<CSSPrimitiveValue> m_slices;
diff --git a/sky/engine/core/css/CSSCalculationValue.cpp b/sky/engine/core/css/CSSCalculationValue.cpp
index 144de04..2507bf1 100644
--- a/sky/engine/core/css/CSSCalculationValue.cpp
+++ b/sky/engine/core/css/CSSCalculationValue.cpp
@@ -271,13 +271,6 @@
         return m_value->primitiveType();
     }
 
-
-    virtual void trace(Visitor* visitor)
-    {
-        visitor->trace(m_value);
-        CSSCalcExpressionNode::trace(visitor);
-    }
-
 private:
     CSSCalcPrimitiveValue(PassRefPtr<CSSPrimitiveValue> value, bool isInteger)
         : CSSCalcExpressionNode(unitCategory(value->primitiveType()), isInteger)
@@ -538,13 +531,6 @@
         return CSSPrimitiveValue::CSS_UNKNOWN;
     }
 
-    virtual void trace(Visitor* visitor)
-    {
-        visitor->trace(m_leftSide);
-        visitor->trace(m_rightSide);
-        CSSCalcExpressionNode::trace(visitor);
-    }
-
 private:
     CSSCalcBinaryOperation(PassRefPtr<CSSCalcExpressionNode> leftSide, PassRefPtr<CSSCalcExpressionNode> rightSide, CalcOperator op, CalculationCategory category)
         : CSSCalcExpressionNode(category, isIntegerResult(leftSide.get(), rightSide.get(), op))
@@ -763,10 +749,4 @@
     return adoptRef(new CSSCalcValue(expression, range));
 }
 
-void CSSCalcValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_expression);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSCalculationValue.h b/sky/engine/core/css/CSSCalculationValue.h
index 03bd291..5400f92 100644
--- a/sky/engine/core/css/CSSCalculationValue.h
+++ b/sky/engine/core/css/CSSCalculationValue.h
@@ -89,8 +89,6 @@
     virtual CSSPrimitiveValue::UnitType primitiveType() const = 0;
     bool isInteger() const { return m_isInteger; }
 
-    virtual void trace(Visitor*) { }
-
 protected:
     CSSCalcExpressionNode(CalculationCategory category, bool isInteger)
         : m_category(category)
@@ -130,8 +128,6 @@
     String customCSSText() const;
     bool equals(const CSSCalcValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSCalcValue(PassRefPtr<CSSCalcExpressionNode> expression, ValueRange range)
         : CSSValue(CalculationClass)
diff --git a/sky/engine/core/css/CSSComputedStyleDeclaration.cpp b/sky/engine/core/css/CSSComputedStyleDeclaration.cpp
index d01464e..cdbc960 100644
--- a/sky/engine/core/css/CSSComputedStyleDeclaration.cpp
+++ b/sky/engine/core/css/CSSComputedStyleDeclaration.cpp
@@ -2478,10 +2478,4 @@
     return list.release();
 }
 
-void CSSComputedStyleDeclaration::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    CSSStyleDeclaration::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSComputedStyleDeclaration.h b/sky/engine/core/css/CSSComputedStyleDeclaration.h
index 6dc3acf..411360c 100644
--- a/sky/engine/core/css/CSSComputedStyleDeclaration.h
+++ b/sky/engine/core/css/CSSComputedStyleDeclaration.h
@@ -71,8 +71,6 @@
 
     PassRefPtr<MutableStylePropertySet> copyPropertiesInSet(const Vector<CSSPropertyID>&) const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSComputedStyleDeclaration(PassRefPtr<Node>, bool allowVisitedStyle, const String&);
 
diff --git a/sky/engine/core/css/CSSCrossfadeValue.cpp b/sky/engine/core/css/CSSCrossfadeValue.cpp
index 1b41d7f..d298e41 100644
--- a/sky/engine/core/css/CSSCrossfadeValue.cpp
+++ b/sky/engine/core/css/CSSCrossfadeValue.cpp
@@ -218,12 +218,4 @@
         && compareCSSValuePtr(m_percentageValue, other.m_percentageValue);
 }
 
-void CSSCrossfadeValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_fromValue);
-    visitor->trace(m_toValue);
-    visitor->trace(m_percentageValue);
-    CSSImageGeneratorValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSCrossfadeValue.h b/sky/engine/core/css/CSSCrossfadeValue.h
index ebb6829..cf64300 100644
--- a/sky/engine/core/css/CSSCrossfadeValue.h
+++ b/sky/engine/core/css/CSSCrossfadeValue.h
@@ -67,8 +67,6 @@
 
     bool equals(const CSSCrossfadeValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSCrossfadeValue(PassRefPtr<CSSValue> fromValue, PassRefPtr<CSSValue> toValue)
         : CSSImageGeneratorValue(CrossfadeClass)
diff --git a/sky/engine/core/css/CSSCursorImageValue.cpp b/sky/engine/core/css/CSSCursorImageValue.cpp
index 6318b95..71f9679 100644
--- a/sky/engine/core/css/CSSCursorImageValue.cpp
+++ b/sky/engine/core/css/CSSCursorImageValue.cpp
@@ -124,10 +124,4 @@
         && compareCSSValuePtr(m_imageValue, other.m_imageValue);
 }
 
-void CSSCursorImageValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_imageValue);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSCursorImageValue.h b/sky/engine/core/css/CSSCursorImageValue.h
index 2cf4fec..c015aa4 100644
--- a/sky/engine/core/css/CSSCursorImageValue.h
+++ b/sky/engine/core/css/CSSCursorImageValue.h
@@ -54,8 +54,6 @@
 
     bool equals(const CSSCursorImageValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSCursorImageValue(PassRefPtr<CSSValue> imageValue, bool hasHotSpot, const IntPoint& hotSpot);
 
diff --git a/sky/engine/core/css/CSSFilterRule.cpp b/sky/engine/core/css/CSSFilterRule.cpp
index f7948a5..5b6cfc5 100644
--- a/sky/engine/core/css/CSSFilterRule.cpp
+++ b/sky/engine/core/css/CSSFilterRule.cpp
@@ -84,12 +84,5 @@
         m_propertiesCSSOMWrapper->reattach(m_filterRule->mutableProperties());
 }
 
-void CSSFilterRule::trace(Visitor* visitor)
-{
-    visitor->trace(m_filterRule);
-    visitor->trace(m_propertiesCSSOMWrapper);
-    CSSRule::trace(visitor);
-}
-
 } // namespace blink
 
diff --git a/sky/engine/core/css/CSSFilterRule.h b/sky/engine/core/css/CSSFilterRule.h
index b94d638..f7bcb2e 100644
--- a/sky/engine/core/css/CSSFilterRule.h
+++ b/sky/engine/core/css/CSSFilterRule.h
@@ -54,8 +54,6 @@
 
     CSSStyleDeclaration* style() const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSFilterRule(StyleRuleFilter*, CSSStyleSheet* parent);
 
diff --git a/sky/engine/core/css/CSSFilterValue.h b/sky/engine/core/css/CSSFilterValue.h
index 6ef4cc5..8f53a47 100644
--- a/sky/engine/core/css/CSSFilterValue.h
+++ b/sky/engine/core/css/CSSFilterValue.h
@@ -64,8 +64,6 @@
 
     bool equals(const CSSFilterValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValueList::traceAfterDispatch(visitor); }
-
 private:
     explicit CSSFilterValue(FilterOperationType);
     explicit CSSFilterValue(const CSSFilterValue& cloneFrom);
diff --git a/sky/engine/core/css/CSSFontFace.cpp b/sky/engine/core/css/CSSFontFace.cpp
index 6ce24e2..2e33454 100644
--- a/sky/engine/core/css/CSSFontFace.cpp
+++ b/sky/engine/core/css/CSSFontFace.cpp
@@ -233,11 +233,4 @@
     return false;
 }
 
-void CSSFontFace::trace(Visitor* visitor)
-{
-    visitor->trace(m_segmentedFontFace);
-    visitor->trace(m_sources);
-    visitor->trace(m_fontFace);
-}
-
 }
diff --git a/sky/engine/core/css/CSSFontFace.h b/sky/engine/core/css/CSSFontFace.h
index 4284ffa..4e06417 100644
--- a/sky/engine/core/css/CSSFontFace.h
+++ b/sky/engine/core/css/CSSFontFace.h
@@ -110,8 +110,6 @@
 
     bool hadBlankText() { return isValid() && m_sources.first()->hadBlankText(); }
 
-    void trace(Visitor*);
-
 private:
     void setLoadStatus(FontFace::LoadStatus);
 
diff --git a/sky/engine/core/css/CSSFontFaceRule.cpp b/sky/engine/core/css/CSSFontFaceRule.cpp
index a5d48c5..65c9841 100644
--- a/sky/engine/core/css/CSSFontFaceRule.cpp
+++ b/sky/engine/core/css/CSSFontFaceRule.cpp
@@ -70,11 +70,4 @@
         m_propertiesCSSOMWrapper->reattach(m_fontFaceRule->mutableProperties());
 }
 
-void CSSFontFaceRule::trace(Visitor* visitor)
-{
-    visitor->trace(m_fontFaceRule);
-    visitor->trace(m_propertiesCSSOMWrapper);
-    CSSRule::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSFontFaceRule.h b/sky/engine/core/css/CSSFontFaceRule.h
index 0cef16b..1d1490e 100644
--- a/sky/engine/core/css/CSSFontFaceRule.h
+++ b/sky/engine/core/css/CSSFontFaceRule.h
@@ -48,8 +48,6 @@
 
     StyleRuleFontFace* styleRule() const { return m_fontFaceRule.get(); }
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSFontFaceRule(StyleRuleFontFace*, CSSStyleSheet* parent);
 
diff --git a/sky/engine/core/css/CSSFontFaceSource.cpp b/sky/engine/core/css/CSSFontFaceSource.cpp
index 5e599ff..bd943b4 100644
--- a/sky/engine/core/css/CSSFontFaceSource.cpp
+++ b/sky/engine/core/css/CSSFontFaceSource.cpp
@@ -63,9 +63,4 @@
     return fontData; // No release, because fontData is a reference to a RefPtr that is held in the m_fontDataTable.
 }
 
-void CSSFontFaceSource::trace(Visitor* visitor)
-{
-    visitor->trace(m_face);
-}
-
 }
diff --git a/sky/engine/core/css/CSSFontFaceSource.h b/sky/engine/core/css/CSSFontFaceSource.h
index 943fcd6..d82cd83 100644
--- a/sky/engine/core/css/CSSFontFaceSource.h
+++ b/sky/engine/core/css/CSSFontFaceSource.h
@@ -56,8 +56,6 @@
     // For UMA reporting
     virtual bool hadBlankText() { return false; }
 
-    virtual void trace(Visitor*);
-
 protected:
     CSSFontFaceSource();
     virtual PassRefPtr<SimpleFontData> createFontData(const FontDescription&) = 0;
diff --git a/sky/engine/core/css/CSSFontFaceSrcValue.h b/sky/engine/core/css/CSSFontFaceSrcValue.h
index 5622fe5..6d356b6 100644
--- a/sky/engine/core/css/CSSFontFaceSrcValue.h
+++ b/sky/engine/core/css/CSSFontFaceSrcValue.h
@@ -66,8 +66,6 @@
 
     bool equals(const CSSFontFaceSrcValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSFontFaceSrcValue(const String& resource, bool local)
         : CSSValue(FontFaceSrcClass)
diff --git a/sky/engine/core/css/CSSFontFeatureValue.h b/sky/engine/core/css/CSSFontFeatureValue.h
index 3bf31fa..3dacd5b 100644
--- a/sky/engine/core/css/CSSFontFeatureValue.h
+++ b/sky/engine/core/css/CSSFontFeatureValue.h
@@ -44,8 +44,6 @@
 
     bool equals(const CSSFontFeatureValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSFontFeatureValue(const AtomicString& tag, int value);
 
diff --git a/sky/engine/core/css/CSSFontSelector.cpp b/sky/engine/core/css/CSSFontSelector.cpp
index 2b81458..cd8faa2 100644
--- a/sky/engine/core/css/CSSFontSelector.cpp
+++ b/sky/engine/core/css/CSSFontSelector.cpp
@@ -172,15 +172,4 @@
     m_fontFaceCache.incrementVersion();
 }
 
-void CSSFontSelector::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_document);
-    visitor->trace(m_fontFaceCache);
-    visitor->trace(m_clients);
-    visitor->trace(m_fontLoader);
-#endif
-    FontSelector::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/css/CSSFontSelector.h b/sky/engine/core/css/CSSFontSelector.h
index ee7ea83..dd06855 100644
--- a/sky/engine/core/css/CSSFontSelector.h
+++ b/sky/engine/core/css/CSSFontSelector.h
@@ -80,8 +80,6 @@
     const GenericFontFamilySettings& genericFontFamilySettings() const { return m_genericFontFamilySettings; }
     void updateGenericFontFamilySettings(Document&);
 
-    virtual void trace(Visitor*);
-
 private:
     explicit CSSFontSelector(Document*);
 
diff --git a/sky/engine/core/css/CSSFontSelectorClient.h b/sky/engine/core/css/CSSFontSelectorClient.h
index ebb0d88..776079a 100644
--- a/sky/engine/core/css/CSSFontSelectorClient.h
+++ b/sky/engine/core/css/CSSFontSelectorClient.h
@@ -43,8 +43,6 @@
     virtual ~CSSFontSelectorClient() { }
 
     virtual void fontsNeedUpdate(CSSFontSelector*) = 0;
-
-    virtual void trace(Visitor*) { }
 };
 
 } // namespace blink
diff --git a/sky/engine/core/css/CSSFontValue.cpp b/sky/engine/core/css/CSSFontValue.cpp
index 2cfe53c..29d322a 100644
--- a/sky/engine/core/css/CSSFontValue.cpp
+++ b/sky/engine/core/css/CSSFontValue.cpp
@@ -80,16 +80,4 @@
         && compareCSSValuePtr(family, other.family);
 }
 
-void CSSFontValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(style);
-    visitor->trace(variant);
-    visitor->trace(weight);
-    visitor->trace(stretch);
-    visitor->trace(size);
-    visitor->trace(lineHeight);
-    visitor->trace(family);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 }
diff --git a/sky/engine/core/css/CSSFontValue.h b/sky/engine/core/css/CSSFontValue.h
index 917e3a0..40eaec2 100644
--- a/sky/engine/core/css/CSSFontValue.h
+++ b/sky/engine/core/css/CSSFontValue.h
@@ -41,8 +41,6 @@
 
     bool equals(const CSSFontValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
     RefPtr<CSSPrimitiveValue> style;
     RefPtr<CSSPrimitiveValue> variant;
     RefPtr<CSSPrimitiveValue> weight;
diff --git a/sky/engine/core/css/CSSFunctionValue.cpp b/sky/engine/core/css/CSSFunctionValue.cpp
index 00b142f..408ed9f 100644
--- a/sky/engine/core/css/CSSFunctionValue.cpp
+++ b/sky/engine/core/css/CSSFunctionValue.cpp
@@ -53,10 +53,4 @@
     return m_name == other.m_name && compareCSSValuePtr(m_args, other.m_args);
 }
 
-void CSSFunctionValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_args);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 }
diff --git a/sky/engine/core/css/CSSFunctionValue.h b/sky/engine/core/css/CSSFunctionValue.h
index caa8af8..fbb43a6 100644
--- a/sky/engine/core/css/CSSFunctionValue.h
+++ b/sky/engine/core/css/CSSFunctionValue.h
@@ -45,8 +45,6 @@
 
     CSSValueList* arguments() const { return m_args.get(); }
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSFunctionValue(String, PassRefPtr<CSSValueList>);
 
diff --git a/sky/engine/core/css/CSSGradientValue.cpp b/sky/engine/core/css/CSSGradientValue.cpp
index a5b32c1..c1d06f2 100644
--- a/sky/engine/core/css/CSSGradientValue.cpp
+++ b/sky/engine/core/css/CSSGradientValue.cpp
@@ -42,12 +42,6 @@
 
 namespace blink {
 
-void CSSGradientColorStop::trace(Visitor* visitor)
-{
-    visitor->trace(m_position);
-    visitor->trace(m_color);
-}
-
 PassRefPtr<Image> CSSGradientValue::image(RenderObject* renderer, const IntSize& size)
 {
     if (size.isEmpty())
@@ -476,16 +470,6 @@
     return true;
 }
 
-void CSSGradientValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_firstX);
-    visitor->trace(m_firstY);
-    visitor->trace(m_secondX);
-    visitor->trace(m_secondY);
-    visitor->trace(m_stops);
-    CSSImageGeneratorValue::traceAfterDispatch(visitor);
-}
-
 String CSSLinearGradientValue::customCSSText() const
 {
     StringBuilder result;
@@ -759,12 +743,6 @@
     return equalXandY && m_stops == other.m_stops;
 }
 
-void CSSLinearGradientValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_angle);
-    CSSGradientValue::traceAfterDispatch(visitor);
-}
-
 String CSSRadialGradientValue::customCSSText() const
 {
     StringBuilder result;
@@ -1193,15 +1171,4 @@
     return equalShape && equalSizingBehavior && equalHorizontalAndVerticalSize && m_stops == other.m_stops;
 }
 
-void CSSRadialGradientValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_firstRadius);
-    visitor->trace(m_secondRadius);
-    visitor->trace(m_shape);
-    visitor->trace(m_sizingBehavior);
-    visitor->trace(m_endHorizontalSize);
-    visitor->trace(m_endVerticalSize);
-    CSSGradientValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSGradientValue.h b/sky/engine/core/css/CSSGradientValue.h
index 3faf51e..b26e3e7 100644
--- a/sky/engine/core/css/CSSGradientValue.h
+++ b/sky/engine/core/css/CSSGradientValue.h
@@ -47,11 +47,6 @@
 };
 enum CSSGradientRepeat { NonRepeating, Repeating };
 
-// This struct is stack allocated and allocated as part of vectors.
-// When allocated on the stack its members are found by conservative
-// stack scanning. When allocated as part of Vectors in heap-allocated
-// objects its members are visited via the containing object's
-// (CSSGradientValue) traceAfterDispatch method.
 struct CSSGradientColorStop {
     ALLOW_ONLY_INLINE_ALLOCATION();
 public:
@@ -65,8 +60,6 @@
         return compareCSSValuePtr(m_color, other.m_color)
             && compareCSSValuePtr(m_position, other.m_position);
     }
-
-    void trace(Visitor*);
 };
 
 } // namespace blink
@@ -106,8 +99,6 @@
     void loadSubimages(ResourceFetcher*) { }
     PassRefPtr<CSSGradientValue> gradientWithStylesResolved(const TextLinkColors&, Color currentColor);
 
-    void traceAfterDispatch(Visitor*);
-
 protected:
     CSSGradientValue(ClassType classType, CSSGradientRepeat repeat, CSSGradientType gradientType)
         : CSSImageGeneratorValue(classType)
@@ -175,8 +166,6 @@
 
     bool equals(const CSSLinearGradientValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSLinearGradientValue(CSSGradientRepeat repeat, CSSGradientType gradientType = CSSLinearGradient)
         : CSSGradientValue(LinearGradientClass, repeat, gradientType)
@@ -222,8 +211,6 @@
 
     bool equals(const CSSRadialGradientValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSRadialGradientValue(CSSGradientRepeat repeat, CSSGradientType gradientType = CSSRadialGradient)
         : CSSGradientValue(RadialGradientClass, repeat, gradientType)
diff --git a/sky/engine/core/css/CSSGroupingRule.cpp b/sky/engine/core/css/CSSGroupingRule.cpp
index 88c2e90..a750956 100644
--- a/sky/engine/core/css/CSSGroupingRule.cpp
+++ b/sky/engine/core/css/CSSGroupingRule.cpp
@@ -146,14 +146,4 @@
     }
 }
 
-void CSSGroupingRule::trace(Visitor* visitor)
-{
-    CSSRule::trace(visitor);
-#if ENABLE(OILPAN)
-    visitor->trace(m_childRuleCSSOMWrappers);
-#endif
-    visitor->trace(m_groupRule);
-    visitor->trace(m_ruleListCSSOMWrapper);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSGroupingRule.h b/sky/engine/core/css/CSSGroupingRule.h
index 501f726..ab213d8 100644
--- a/sky/engine/core/css/CSSGroupingRule.h
+++ b/sky/engine/core/css/CSSGroupingRule.h
@@ -47,8 +47,6 @@
     unsigned length() const;
     CSSRule* item(unsigned index) const;
 
-    virtual void trace(Visitor*) override;
-
 protected:
     CSSGroupingRule(StyleRuleGroup* groupRule, CSSStyleSheet* parent);
 
diff --git a/sky/engine/core/css/CSSImageGeneratorValue.h b/sky/engine/core/css/CSSImageGeneratorValue.h
index c28e3ba..b586c54 100644
--- a/sky/engine/core/css/CSSImageGeneratorValue.h
+++ b/sky/engine/core/css/CSSImageGeneratorValue.h
@@ -67,8 +67,6 @@
 
     void loadSubimages(ResourceFetcher*);
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 protected:
     explicit CSSImageGeneratorValue(ClassType);
 
diff --git a/sky/engine/core/css/CSSImageSetValue.h b/sky/engine/core/css/CSSImageSetValue.h
index 42cd8c3..d6757f1 100644
--- a/sky/engine/core/css/CSSImageSetValue.h
+++ b/sky/engine/core/css/CSSImageSetValue.h
@@ -65,8 +65,6 @@
 
     PassRefPtr<CSSImageSetValue> cloneForCSSOM() const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValueList::traceAfterDispatch(visitor); }
-
 protected:
     ImageWithScale bestImageForScaleFactor();
 
diff --git a/sky/engine/core/css/CSSImageValue.cpp b/sky/engine/core/css/CSSImageValue.cpp
index 3f8f674..374f032 100644
--- a/sky/engine/core/css/CSSImageValue.cpp
+++ b/sky/engine/core/css/CSSImageValue.cpp
@@ -117,11 +117,6 @@
     return m_image ? m_image->knownToBeOpaque(renderer) : false;
 }
 
-void CSSImageValue::traceAfterDispatch(Visitor* visitor)
-{
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 void CSSImageValue::reResolveURL(const Document& document)
 {
     KURL url = document.completeURL(m_relativeURL);
diff --git a/sky/engine/core/css/CSSImageValue.h b/sky/engine/core/css/CSSImageValue.h
index d14c7de..13ed89a 100644
--- a/sky/engine/core/css/CSSImageValue.h
+++ b/sky/engine/core/css/CSSImageValue.h
@@ -70,8 +70,6 @@
     bool knownToBeOpaque(const RenderObject*) const;
 
     void setInitiator(const AtomicString& name) { m_initiatorName = name; }
-
-    void traceAfterDispatch(Visitor*);
     void restoreCachedResourceIfNeeded(Document&);
 
 private:
diff --git a/sky/engine/core/css/CSSInheritedValue.h b/sky/engine/core/css/CSSInheritedValue.h
index 1fdb9b8..bcc0973 100644
--- a/sky/engine/core/css/CSSInheritedValue.h
+++ b/sky/engine/core/css/CSSInheritedValue.h
@@ -37,8 +37,6 @@
 
     bool equals(const CSSInheritedValue&) const { return true; }
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSInheritedValue()
         : CSSValue(InheritedClass)
diff --git a/sky/engine/core/css/CSSInitialValue.h b/sky/engine/core/css/CSSInitialValue.h
index 3ee3293..db8844f 100644
--- a/sky/engine/core/css/CSSInitialValue.h
+++ b/sky/engine/core/css/CSSInitialValue.h
@@ -43,8 +43,6 @@
 
     bool equals(const CSSInitialValue&) const { return true; }
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     explicit CSSInitialValue(bool implicit)
         : CSSValue(InitialClass)
diff --git a/sky/engine/core/css/CSSKeyframeRule.cpp b/sky/engine/core/css/CSSKeyframeRule.cpp
index d65fffc..ffe3905 100644
--- a/sky/engine/core/css/CSSKeyframeRule.cpp
+++ b/sky/engine/core/css/CSSKeyframeRule.cpp
@@ -136,11 +136,6 @@
     return keyVector.release();
 }
 
-void StyleKeyframe::trace(Visitor* visitor)
-{
-    visitor->trace(m_properties);
-}
-
 CSSKeyframeRule::CSSKeyframeRule(StyleKeyframe* keyframe, CSSKeyframesRule* parent)
     : CSSRule(0)
     , m_keyframe(keyframe)
@@ -169,11 +164,4 @@
     ASSERT_NOT_REACHED();
 }
 
-void CSSKeyframeRule::trace(Visitor* visitor)
-{
-    visitor->trace(m_keyframe);
-    visitor->trace(m_propertiesCSSOMWrapper);
-    CSSRule::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSKeyframeRule.h b/sky/engine/core/css/CSSKeyframeRule.h
index 46714c8..5b7c33b 100644
--- a/sky/engine/core/css/CSSKeyframeRule.h
+++ b/sky/engine/core/css/CSSKeyframeRule.h
@@ -61,8 +61,6 @@
 
     String cssText() const;
 
-    void trace(Visitor*);
-
     static PassOwnPtr<Vector<double> > createKeyList(CSSParserValueList*);
 
 private:
@@ -87,8 +85,6 @@
 
     CSSStyleDeclaration* style() const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSKeyframeRule(StyleKeyframe*, CSSKeyframesRule* parent);
 
diff --git a/sky/engine/core/css/CSSKeyframesRule.cpp b/sky/engine/core/css/CSSKeyframesRule.cpp
index e61f7a0..0a450eb 100644
--- a/sky/engine/core/css/CSSKeyframesRule.cpp
+++ b/sky/engine/core/css/CSSKeyframesRule.cpp
@@ -86,12 +86,6 @@
     return -1;
 }
 
-void StyleRuleKeyframes::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_keyframes);
-    StyleRuleBase::traceAfterDispatch(visitor);
-}
-
 CSSKeyframesRule::CSSKeyframesRule(StyleRuleKeyframes* keyframesRule, CSSStyleSheet* parent)
     : CSSRule(parent)
     , m_keyframesRule(keyframesRule)
@@ -210,14 +204,4 @@
     m_keyframesRule = toStyleRuleKeyframes(rule);
 }
 
-void CSSKeyframesRule::trace(Visitor* visitor)
-{
-    CSSRule::trace(visitor);
-#if ENABLE(OILPAN)
-    visitor->trace(m_childRuleCSSOMWrappers);
-#endif
-    visitor->trace(m_keyframesRule);
-    visitor->trace(m_ruleListCSSOMWrapper);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSKeyframesRule.h b/sky/engine/core/css/CSSKeyframesRule.h
index 13b4078..158959a 100644
--- a/sky/engine/core/css/CSSKeyframesRule.h
+++ b/sky/engine/core/css/CSSKeyframesRule.h
@@ -59,8 +59,6 @@
 
     PassRefPtr<StyleRuleKeyframes> copy() const { return adoptRef(new StyleRuleKeyframes(*this)); }
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     StyleRuleKeyframes();
     explicit StyleRuleKeyframes(const StyleRuleKeyframes&);
@@ -101,8 +99,6 @@
     bool isVendorPrefixed() const { return m_isPrefixed; }
     void setVendorPrefixed(bool isPrefixed) { m_isPrefixed = isPrefixed; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSKeyframesRule(StyleRuleKeyframes*, CSSStyleSheet* parent);
 
diff --git a/sky/engine/core/css/CSSLineBoxContainValue.h b/sky/engine/core/css/CSSLineBoxContainValue.h
index d27d1a4..61bbd21 100644
--- a/sky/engine/core/css/CSSLineBoxContainValue.h
+++ b/sky/engine/core/css/CSSLineBoxContainValue.h
@@ -49,8 +49,6 @@
     bool equals(const CSSLineBoxContainValue& other) const { return m_value == other.m_value; }
     LineBoxContain value() const { return m_value; }
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     LineBoxContain m_value;
 
diff --git a/sky/engine/core/css/CSSMatrix.h b/sky/engine/core/css/CSSMatrix.h
index 28b241d..c61bacb 100644
--- a/sky/engine/core/css/CSSMatrix.h
+++ b/sky/engine/core/css/CSSMatrix.h
@@ -148,8 +148,6 @@
 
     String toString() const;
 
-    void trace(Visitor*) { }
-
 protected:
     CSSMatrix(const TransformationMatrix&);
     CSSMatrix(const String&, ExceptionState&);
diff --git a/sky/engine/core/css/CSSMediaRule.cpp b/sky/engine/core/css/CSSMediaRule.cpp
index 5427e9a..d4db904 100644
--- a/sky/engine/core/css/CSSMediaRule.cpp
+++ b/sky/engine/core/css/CSSMediaRule.cpp
@@ -76,9 +76,4 @@
         m_mediaCSSOMWrapper->reattach(mediaQueries());
 }
 
-void CSSMediaRule::trace(Visitor* visitor)
-{
-    visitor->trace(m_mediaCSSOMWrapper);
-    CSSGroupingRule::trace(visitor);
-}
 } // namespace blink
diff --git a/sky/engine/core/css/CSSMediaRule.h b/sky/engine/core/css/CSSMediaRule.h
index 09c0146..f20b3e2 100644
--- a/sky/engine/core/css/CSSMediaRule.h
+++ b/sky/engine/core/css/CSSMediaRule.h
@@ -45,8 +45,6 @@
 
     MediaList* media() const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSMediaRule(StyleRuleMedia*, CSSStyleSheet*);
 
diff --git a/sky/engine/core/css/CSSPrimitiveValue.cpp b/sky/engine/core/css/CSSPrimitiveValue.cpp
index 24ef230..6810b60 100644
--- a/sky/engine/core/css/CSSPrimitiveValue.cpp
+++ b/sky/engine/core/css/CSSPrimitiveValue.cpp
@@ -1327,30 +1327,4 @@
     return false;
 }
 
-void CSSPrimitiveValue::traceAfterDispatch(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    switch (m_primitiveUnitType) {
-    case CSS_RECT:
-        visitor->trace(m_value.rect);
-        break;
-    case CSS_QUAD:
-        visitor->trace(m_value.quad);
-        break;
-    case CSS_PAIR:
-        visitor->trace(m_value.pair);
-        break;
-    case CSS_CALC:
-        visitor->trace(m_value.calc);
-        break;
-    case CSS_SHAPE:
-        visitor->trace(m_value.shape);
-        break;
-    default:
-        break;
-    }
-#endif
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSPrimitiveValue.h b/sky/engine/core/css/CSSPrimitiveValue.h
index 3cd8f03..e58bae8 100644
--- a/sky/engine/core/css/CSSPrimitiveValue.h
+++ b/sky/engine/core/css/CSSPrimitiveValue.h
@@ -327,8 +327,6 @@
 
     bool equals(const CSSPrimitiveValue&) const;
 
-    void traceAfterDispatch(Visitor*);
-
     static UnitType canonicalUnitTypeForCategory(UnitCategory);
     static double conversionToCanonicalUnitsScaleFactor(UnitType);
 
diff --git a/sky/engine/core/css/CSSProperty.h b/sky/engine/core/css/CSSProperty.h
index 3fa3b8a..93f3e89 100644
--- a/sky/engine/core/css/CSSProperty.h
+++ b/sky/engine/core/css/CSSProperty.h
@@ -82,8 +82,6 @@
 
     const StylePropertyMetadata& metadata() const { return m_metadata; }
 
-    void trace(Visitor* visitor) { visitor->trace(m_value); }
-
 private:
     StylePropertyMetadata m_metadata;
     RefPtr<CSSValue> m_value;
diff --git a/sky/engine/core/css/CSSPropertySourceData.cpp b/sky/engine/core/css/CSSPropertySourceData.cpp
index 9d832fd..a25a9df 100644
--- a/sky/engine/core/css/CSSPropertySourceData.cpp
+++ b/sky/engine/core/css/CSSPropertySourceData.cpp
@@ -110,13 +110,4 @@
     return StringHash::hash(name) + 3 * StringHash::hash(value) + 7 * important + 13 * parsedOk + 31;
 }
 
-void CSSRuleSourceData::trace(Visitor* visitor)
-{
-    visitor->trace(ruleHeaderRange);
-    visitor->trace(ruleBodyRange);
-    visitor->trace(selectorRanges);
-    visitor->trace(styleSourceData);
-    visitor->trace(childRules);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSPropertySourceData.h b/sky/engine/core/css/CSSPropertySourceData.h
index 9e8ad5e..6866dc0 100644
--- a/sky/engine/core/css/CSSPropertySourceData.h
+++ b/sky/engine/core/css/CSSPropertySourceData.h
@@ -48,8 +48,6 @@
     SourceRange(unsigned start, unsigned end);
     unsigned length() const;
 
-    void trace(Visitor*) { }
-
     unsigned start;
     unsigned end;
 };
@@ -64,8 +62,6 @@
     String toString() const;
     unsigned hash() const;
 
-    void trace(Visitor* visitor) { visitor->trace(range); }
-
     String name;
     String value;
     bool important;
@@ -80,8 +76,6 @@
         return adoptRef(new CSSStyleSourceData());
     }
 
-    void trace(Visitor* visitor) { visitor->trace(propertyData); }
-
     Vector<CSSPropertySourceData> propertyData;
 };
 
@@ -117,8 +111,6 @@
             styleSourceData = CSSStyleSourceData::create();
     }
 
-    void trace(Visitor*);
-
     Type type;
 
     // Range of the selector list in the enclosing source.
diff --git a/sky/engine/core/css/CSSRule.cpp b/sky/engine/core/css/CSSRule.cpp
index a80239c..995cc1e 100644
--- a/sky/engine/core/css/CSSRule.cpp
+++ b/sky/engine/core/css/CSSRule.cpp
@@ -60,8 +60,4 @@
     return styleSheet ? styleSheet->contents()->parserContext() : strictCSSParserContext();
 }
 
-void CSSRule::trace(Visitor* visitor)
-{
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSRule.h b/sky/engine/core/css/CSSRule.h
index 216e415..e272926 100644
--- a/sky/engine/core/css/CSSRule.h
+++ b/sky/engine/core/css/CSSRule.h
@@ -65,8 +65,6 @@
         m_parentRule = rule;
     }
 
-    virtual void trace(Visitor*);
-
     CSSStyleSheet* parentStyleSheet() const
     {
         if (m_parentIsRule)
diff --git a/sky/engine/core/css/CSSRuleList.cpp b/sky/engine/core/css/CSSRuleList.cpp
index 7f3a7f2..c670ed3 100644
--- a/sky/engine/core/css/CSSRuleList.cpp
+++ b/sky/engine/core/css/CSSRuleList.cpp
@@ -35,9 +35,7 @@
 }
 
 StaticCSSRuleList::StaticCSSRuleList()
-#if !ENABLE(OILPAN)
     : m_refCount(1)
-#endif
 {
 }
 
@@ -45,20 +43,11 @@
 {
 }
 
-#if !ENABLE(OILPAN)
 void StaticCSSRuleList::deref()
 {
     ASSERT(m_refCount);
     if (!--m_refCount)
         delete this;
 }
-#endif
-
-void StaticCSSRuleList::trace(Visitor* visitor)
-{
-    visitor->trace(m_rules);
-    CSSRuleList::trace(visitor);
-}
-
 
 } // namespace blink
diff --git a/sky/engine/core/css/CSSRuleList.h b/sky/engine/core/css/CSSRuleList.h
index e5da780..4c3031f 100644
--- a/sky/engine/core/css/CSSRuleList.h
+++ b/sky/engine/core/css/CSSRuleList.h
@@ -50,8 +50,6 @@
 
     virtual CSSStyleSheet* styleSheet() const = 0;
 
-    virtual void trace(Visitor*) { }
-
 protected:
     CSSRuleList();
 };
@@ -72,8 +70,6 @@
 
     virtual CSSStyleSheet* styleSheet() const override { return 0; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     StaticCSSRuleList();
     virtual ~StaticCSSRuleList();
@@ -100,12 +96,6 @@
     virtual void deref() override { m_rule->deref(); }
 #endif
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_rule);
-        CSSRuleList::trace(visitor);
-    }
-
 private:
     LiveCSSRuleList(Rule* rule) : m_rule(rule) { }
 
diff --git a/sky/engine/core/css/CSSSegmentedFontFace.cpp b/sky/engine/core/css/CSSSegmentedFontFace.cpp
index a6b65d1..59b9570 100644
--- a/sky/engine/core/css/CSSSegmentedFontFace.cpp
+++ b/sky/engine/core/css/CSSSegmentedFontFace.cpp
@@ -204,12 +204,4 @@
     }
 }
 
-void CSSSegmentedFontFace::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_fontSelector);
-    visitor->trace(m_fontFaces);
-#endif
-}
-
 }
diff --git a/sky/engine/core/css/CSSSegmentedFontFace.h b/sky/engine/core/css/CSSSegmentedFontFace.h
index 0f9ed4f..5eda28d 100644
--- a/sky/engine/core/css/CSSSegmentedFontFace.h
+++ b/sky/engine/core/css/CSSSegmentedFontFace.h
@@ -68,8 +68,6 @@
     void match(const String&, Vector<RefPtr<FontFace> >&) const;
     void willUseFontData(const FontDescription&, UChar32);
 
-    void trace(Visitor*);
-
 private:
     CSSSegmentedFontFace(CSSFontSelector*, FontTraits);
 
diff --git a/sky/engine/core/css/CSSShadowValue.cpp b/sky/engine/core/css/CSSShadowValue.cpp
index bf99cc9..ad4a461 100644
--- a/sky/engine/core/css/CSSShadowValue.cpp
+++ b/sky/engine/core/css/CSSShadowValue.cpp
@@ -88,15 +88,4 @@
         && compareCSSValuePtr(style, other.style);
 }
 
-void CSSShadowValue::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(x);
-    visitor->trace(y);
-    visitor->trace(blur);
-    visitor->trace(spread);
-    visitor->trace(style);
-    visitor->trace(color);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 }
diff --git a/sky/engine/core/css/CSSShadowValue.h b/sky/engine/core/css/CSSShadowValue.h
index 07a6deb..08f2ecd 100644
--- a/sky/engine/core/css/CSSShadowValue.h
+++ b/sky/engine/core/css/CSSShadowValue.h
@@ -53,8 +53,6 @@
     RefPtr<CSSPrimitiveValue> style;
     RefPtr<CSSPrimitiveValue> color;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     CSSShadowValue(PassRefPtr<CSSPrimitiveValue> x,
         PassRefPtr<CSSPrimitiveValue> y,
diff --git a/sky/engine/core/css/CSSStyleDeclaration.h b/sky/engine/core/css/CSSStyleDeclaration.h
index 55192e3..afb11ae 100644
--- a/sky/engine/core/css/CSSStyleDeclaration.h
+++ b/sky/engine/core/css/CSSStyleDeclaration.h
@@ -71,8 +71,6 @@
     virtual bool cssPropertyMatches(CSSPropertyID, const CSSValue*) const = 0;
     virtual CSSStyleSheet* parentStyleSheet() const { return 0; }
 
-    virtual void trace(Visitor*) { }
-
 protected:
     CSSStyleDeclaration()
     {
diff --git a/sky/engine/core/css/CSSStyleRule.cpp b/sky/engine/core/css/CSSStyleRule.cpp
index 947a2cb..4dea091 100644
--- a/sky/engine/core/css/CSSStyleRule.cpp
+++ b/sky/engine/core/css/CSSStyleRule.cpp
@@ -130,11 +130,4 @@
         m_propertiesCSSOMWrapper->reattach(m_styleRule->mutableProperties());
 }
 
-void CSSStyleRule::trace(Visitor* visitor)
-{
-    visitor->trace(m_styleRule);
-    visitor->trace(m_propertiesCSSOMWrapper);
-    CSSRule::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSStyleRule.h b/sky/engine/core/css/CSSStyleRule.h
index f55e892..130f5c0 100644
--- a/sky/engine/core/css/CSSStyleRule.h
+++ b/sky/engine/core/css/CSSStyleRule.h
@@ -52,8 +52,6 @@
     // FIXME: Not CSSOM. Remove.
     StyleRule* styleRule() const { return m_styleRule.get(); }
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSStyleRule(StyleRule*, CSSStyleSheet*);
 
diff --git a/sky/engine/core/css/CSSStyleSheet.cpp b/sky/engine/core/css/CSSStyleSheet.cpp
index 5cc8e87..a4d700b 100644
--- a/sky/engine/core/css/CSSStyleSheet.cpp
+++ b/sky/engine/core/css/CSSStyleSheet.cpp
@@ -45,12 +45,6 @@
         return adoptPtr(new StyleSheetCSSRuleList(sheet));
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_styleSheet);
-        CSSRuleList::trace(visitor);
-    }
-
 private:
     StyleSheetCSSRuleList(CSSStyleSheet* sheet) : m_styleSheet(sheet) { }
 
@@ -347,15 +341,4 @@
     m_childRuleCSSOMWrappers.clear();
 }
 
-void CSSStyleSheet::trace(Visitor* visitor)
-{
-    visitor->trace(m_contents);
-    visitor->trace(m_mediaQueries);
-    visitor->trace(m_ownerNode);
-    visitor->trace(m_mediaCSSOMWrapper);
-    visitor->trace(m_childRuleCSSOMWrappers);
-    visitor->trace(m_ruleListCSSOMWrapper);
-    StyleSheet::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSStyleSheet.h b/sky/engine/core/css/CSSStyleSheet.h
index 4459819..4bdb631 100644
--- a/sky/engine/core/css/CSSStyleSheet.h
+++ b/sky/engine/core/css/CSSStyleSheet.h
@@ -101,8 +101,6 @@
     bool isInline() const { return m_isInlineStylesheet; }
     TextPosition startPositionInSource() const { return m_startPosition; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     CSSStyleSheet(PassRefPtr<StyleSheetContents>);
     CSSStyleSheet(PassRefPtr<StyleSheetContents>, Node* ownerNode, bool isInlineStylesheet, const TextPosition& startPosition);
diff --git a/sky/engine/core/css/CSSSupportsRule.h b/sky/engine/core/css/CSSSupportsRule.h
index e00478e..f6fae55 100644
--- a/sky/engine/core/css/CSSSupportsRule.h
+++ b/sky/engine/core/css/CSSSupportsRule.h
@@ -50,8 +50,6 @@
 
     String conditionText() const;
 
-    virtual void trace(Visitor* visitor) override { CSSGroupingRule::trace(visitor); }
-
 private:
     CSSSupportsRule(StyleRuleSupports*, CSSStyleSheet*);
 };
diff --git a/sky/engine/core/css/CSSTimingFunctionValue.h b/sky/engine/core/css/CSSTimingFunctionValue.h
index 1ad52d4..4701ff3 100644
--- a/sky/engine/core/css/CSSTimingFunctionValue.h
+++ b/sky/engine/core/css/CSSTimingFunctionValue.h
@@ -48,8 +48,6 @@
 
     bool equals(const CSSCubicBezierTimingFunctionValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSCubicBezierTimingFunctionValue(double x1, double y1, double x2, double y2)
         : CSSValue(CubicBezierTimingFunctionClass)
@@ -82,8 +80,6 @@
 
     bool equals(const CSSStepsTimingFunctionValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSStepsTimingFunctionValue(int steps, StepsTimingFunction::StepAtPosition stepAtPosition)
         : CSSValue(StepsTimingFunctionClass)
diff --git a/sky/engine/core/css/CSSTransformValue.h b/sky/engine/core/css/CSSTransformValue.h
index 27e06c9..1da374b 100644
--- a/sky/engine/core/css/CSSTransformValue.h
+++ b/sky/engine/core/css/CSSTransformValue.h
@@ -71,8 +71,6 @@
 
     PassRefPtr<CSSTransformValue> cloneForCSSOM() const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValueList::traceAfterDispatch(visitor); }
-
 private:
     CSSTransformValue(TransformOperationType);
     CSSTransformValue(const CSSTransformValue& cloneFrom);
diff --git a/sky/engine/core/css/CSSUnicodeRangeValue.h b/sky/engine/core/css/CSSUnicodeRangeValue.h
index 26bcc84..8f9aa14 100644
--- a/sky/engine/core/css/CSSUnicodeRangeValue.h
+++ b/sky/engine/core/css/CSSUnicodeRangeValue.h
@@ -45,8 +45,6 @@
 
     bool equals(const CSSUnicodeRangeValue&) const;
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     CSSUnicodeRangeValue(UChar32 from, UChar32 to)
         : CSSValue(UnicodeRangeClass)
diff --git a/sky/engine/core/css/CSSUnknownRule.h b/sky/engine/core/css/CSSUnknownRule.h
index 00e4aa4..27736d2 100644
--- a/sky/engine/core/css/CSSUnknownRule.h
+++ b/sky/engine/core/css/CSSUnknownRule.h
@@ -34,7 +34,6 @@
     virtual CSSRule::Type type() const override { return UNKNOWN_RULE; }
     virtual String cssText() const override { return String(); }
     virtual void reattach(StyleRuleBase*) override { }
-    virtual void trace(Visitor* visitor) override { CSSRule::trace(visitor); }
 };
 
 } // namespace blink
diff --git a/sky/engine/core/css/CSSValue.cpp b/sky/engine/core/css/CSSValue.cpp
index 6cc0a70..b2fc80e 100644
--- a/sky/engine/core/css/CSSValue.cpp
+++ b/sky/engine/core/css/CSSValue.cpp
@@ -69,8 +69,6 @@
 
     String cssText() const { return m_cssText; }
 
-    void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); }
-
 private:
     TextCloneCSSValue(ClassType classType, const String& text)
         : CSSValue(classType, /*isCSSOMSafe*/ true)
@@ -350,184 +348,6 @@
     ASSERT_NOT_REACHED();
 }
 
-void CSSValue::finalizeGarbageCollectedObject()
-{
-    if (m_isTextClone) {
-        ASSERT(isCSSOMSafe());
-        toTextCloneCSSValue(this)->~TextCloneCSSValue();
-        return;
-    }
-    ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM());
-
-    switch (classType()) {
-    case AspectRatioClass:
-        toCSSAspectRatioValue(this)->~CSSAspectRatioValue();
-        return;
-    case BorderImageSliceClass:
-        toCSSBorderImageSliceValue(this)->~CSSBorderImageSliceValue();
-        return;
-    case CanvasClass:
-        toCSSCanvasValue(this)->~CSSCanvasValue();
-        return;
-    case CursorImageClass:
-        toCSSCursorImageValue(this)->~CSSCursorImageValue();
-        return;
-    case FontClass:
-        toCSSFontValue(this)->~CSSFontValue();
-        return;
-    case FontFaceSrcClass:
-        toCSSFontFaceSrcValue(this)->~CSSFontFaceSrcValue();
-        return;
-    case FontFeatureClass:
-        toCSSFontFeatureValue(this)->~CSSFontFeatureValue();
-        return;
-    case FunctionClass:
-        toCSSFunctionValue(this)->~CSSFunctionValue();
-        return;
-    case LinearGradientClass:
-        toCSSLinearGradientValue(this)->~CSSLinearGradientValue();
-        return;
-    case RadialGradientClass:
-        toCSSRadialGradientValue(this)->~CSSRadialGradientValue();
-        return;
-    case CrossfadeClass:
-        toCSSCrossfadeValue(this)->~CSSCrossfadeValue();
-        return;
-    case ImageClass:
-        toCSSImageValue(this)->~CSSImageValue();
-        return;
-    case InheritedClass:
-        toCSSInheritedValue(this)->~CSSInheritedValue();
-        return;
-    case InitialClass:
-        toCSSInitialValue(this)->~CSSInitialValue();
-        return;
-    case PrimitiveClass:
-        toCSSPrimitiveValue(this)->~CSSPrimitiveValue();
-        return;
-    case ShadowClass:
-        toCSSShadowValue(this)->~CSSShadowValue();
-        return;
-    case CubicBezierTimingFunctionClass:
-        toCSSCubicBezierTimingFunctionValue(this)->~CSSCubicBezierTimingFunctionValue();
-        return;
-    case StepsTimingFunctionClass:
-        toCSSStepsTimingFunctionValue(this)->~CSSStepsTimingFunctionValue();
-        return;
-    case UnicodeRangeClass:
-        toCSSUnicodeRangeValue(this)->~CSSUnicodeRangeValue();
-        return;
-    case ValueListClass:
-        toCSSValueList(this)->~CSSValueList();
-        return;
-    case CSSTransformClass:
-        toCSSTransformValue(this)->~CSSTransformValue();
-        return;
-    case LineBoxContainClass:
-        toCSSLineBoxContainValue(this)->~CSSLineBoxContainValue();
-        return;
-    case CalculationClass:
-        toCSSCalcValue(this)->~CSSCalcValue();
-        return;
-    case ImageSetClass:
-        toCSSImageSetValue(this)->~CSSImageSetValue();
-        return;
-    case CSSFilterClass:
-        toCSSFilterValue(this)->~CSSFilterValue();
-        return;
-    }
-    ASSERT_NOT_REACHED();
-}
-
-void CSSValue::trace(Visitor* visitor)
-{
-    if (m_isTextClone) {
-        ASSERT(isCSSOMSafe());
-        toTextCloneCSSValue(this)->traceAfterDispatch(visitor);
-        return;
-    }
-    ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM());
-
-    switch (classType()) {
-    case AspectRatioClass:
-        toCSSAspectRatioValue(this)->traceAfterDispatch(visitor);
-        return;
-    case BorderImageSliceClass:
-        toCSSBorderImageSliceValue(this)->traceAfterDispatch(visitor);
-        return;
-    case CanvasClass:
-        toCSSCanvasValue(this)->traceAfterDispatch(visitor);
-        return;
-    case CursorImageClass:
-        toCSSCursorImageValue(this)->traceAfterDispatch(visitor);
-        return;
-    case FontClass:
-        toCSSFontValue(this)->traceAfterDispatch(visitor);
-        return;
-    case FontFaceSrcClass:
-        toCSSFontFaceSrcValue(this)->traceAfterDispatch(visitor);
-        return;
-    case FontFeatureClass:
-        toCSSFontFeatureValue(this)->traceAfterDispatch(visitor);
-        return;
-    case FunctionClass:
-        toCSSFunctionValue(this)->traceAfterDispatch(visitor);
-        return;
-    case LinearGradientClass:
-        toCSSLinearGradientValue(this)->traceAfterDispatch(visitor);
-        return;
-    case RadialGradientClass:
-        toCSSRadialGradientValue(this)->traceAfterDispatch(visitor);
-        return;
-    case CrossfadeClass:
-        toCSSCrossfadeValue(this)->traceAfterDispatch(visitor);
-        return;
-    case ImageClass:
-        toCSSImageValue(this)->traceAfterDispatch(visitor);
-        return;
-    case InheritedClass:
-        toCSSInheritedValue(this)->traceAfterDispatch(visitor);
-        return;
-    case InitialClass:
-        toCSSInitialValue(this)->traceAfterDispatch(visitor);
-        return;
-    case PrimitiveClass:
-        toCSSPrimitiveValue(this)->traceAfterDispatch(visitor);
-        return;
-    case ShadowClass:
-        toCSSShadowValue(this)->traceAfterDispatch(visitor);
-        return;
-    case CubicBezierTimingFunctionClass:
-        toCSSCubicBezierTimingFunctionValue(this)->traceAfterDispatch(visitor);
-        return;
-    case StepsTimingFunctionClass:
-        toCSSStepsTimingFunctionValue(this)->traceAfterDispatch(visitor);
-        return;
-    case UnicodeRangeClass:
-        toCSSUnicodeRangeValue(this)->traceAfterDispatch(visitor);
-        return;
-    case ValueListClass:
-        toCSSValueList(this)->traceAfterDispatch(visitor);
-        return;
-    case CSSTransformClass:
-        toCSSTransformValue(this)->traceAfterDispatch(visitor);
-        return;
-    case LineBoxContainClass:
-        toCSSLineBoxContainValue(this)->traceAfterDispatch(visitor);
-        return;
-    case CalculationClass:
-        toCSSCalcValue(this)->traceAfterDispatch(visitor);
-        return;
-    case ImageSetClass:
-        toCSSImageSetValue(this)->traceAfterDispatch(visitor);
-        return;
-    case CSSFilterClass:
-        toCSSFilterValue(this)->traceAfterDispatch(visitor);
-        return;
-    }
-    ASSERT_NOT_REACHED();
-}
-
 PassRefPtr<CSSValue> CSSValue::cloneForCSSOM() const
 {
     switch (classType()) {
diff --git a/sky/engine/core/css/CSSValue.h b/sky/engine/core/css/CSSValue.h
index 551ad50..705c09b 100644
--- a/sky/engine/core/css/CSSValue.h
+++ b/sky/engine/core/css/CSSValue.h
@@ -115,10 +115,6 @@
 
     bool equals(const CSSValue&) const;
 
-    void finalizeGarbageCollectedObject();
-    void traceAfterDispatch(Visitor*) { }
-    void trace(Visitor*);
-
 protected:
 
     static const size_t ClassTypeBits = 6;
diff --git a/sky/engine/core/css/CSSValueList.cpp b/sky/engine/core/css/CSSValueList.cpp
index 9ab6a31..9d1601a 100644
--- a/sky/engine/core/css/CSSValueList.cpp
+++ b/sky/engine/core/css/CSSValueList.cpp
@@ -151,10 +151,4 @@
     return adoptRef(new CSSValueList(*this));
 }
 
-void CSSValueList::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_values);
-    CSSValue::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/CSSValueList.h b/sky/engine/core/css/CSSValueList.h
index b4c9d49..734e0d4 100644
--- a/sky/engine/core/css/CSSValueList.h
+++ b/sky/engine/core/css/CSSValueList.h
@@ -61,8 +61,6 @@
 
     PassRefPtr<CSSValueList> cloneForCSSOM() const;
 
-    void traceAfterDispatch(Visitor*);
-
 protected:
     CSSValueList(ClassType, ValueListSeparator);
     CSSValueList(const CSSValueList& cloneFrom);
diff --git a/sky/engine/core/css/CSSValuePool.cpp b/sky/engine/core/css/CSSValuePool.cpp
index 95504c2..bbc4f40 100644
--- a/sky/engine/core/css/CSSValuePool.cpp
+++ b/sky/engine/core/css/CSSValuePool.cpp
@@ -146,23 +146,4 @@
     return value;
 }
 
-void CSSValuePool::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_inheritedValue);
-    visitor->trace(m_implicitInitialValue);
-    visitor->trace(m_explicitInitialValue);
-    visitor->trace(m_identifierValueCache);
-    visitor->trace(m_colorValueCache);
-    visitor->trace(m_colorTransparent);
-    visitor->trace(m_colorWhite);
-    visitor->trace(m_colorBlack);
-    visitor->trace(m_pixelValueCache);
-    visitor->trace(m_percentValueCache);
-    visitor->trace(m_numberValueCache);
-    visitor->trace(m_fontFaceValueCache);
-    visitor->trace(m_fontFamilyValueCache);
-#endif
-}
-
 }
diff --git a/sky/engine/core/css/CSSValuePool.h b/sky/engine/core/css/CSSValuePool.h
index ef9ffb4..fb0000f 100644
--- a/sky/engine/core/css/CSSValuePool.h
+++ b/sky/engine/core/css/CSSValuePool.h
@@ -56,8 +56,6 @@
     PassRefPtr<CSSPrimitiveValue> createValue(const Length& value) { return CSSPrimitiveValue::create(value); }
     template<typename T> static PassRefPtr<CSSPrimitiveValue> createValue(T value) { return CSSPrimitiveValue::create(value); }
 
-    void trace(Visitor*);
-
 private:
     CSSValuePool();
 
diff --git a/sky/engine/core/css/DOMWindowCSS.h b/sky/engine/core/css/DOMWindowCSS.h
index cc531e3..53128f7 100644
--- a/sky/engine/core/css/DOMWindowCSS.h
+++ b/sky/engine/core/css/DOMWindowCSS.h
@@ -46,8 +46,6 @@
     bool supports(const String& property, const String& value) const;
     bool supports(const String& conditionText) const;
 
-    void trace(Visitor*) { }
-
 private:
     DOMWindowCSS()
     {
diff --git a/sky/engine/core/css/ElementRuleCollector.h b/sky/engine/core/css/ElementRuleCollector.h
index 87bf72f..50f75cf 100644
--- a/sky/engine/core/css/ElementRuleCollector.h
+++ b/sky/engine/core/css/ElementRuleCollector.h
@@ -62,10 +62,6 @@
     uint32_t cascadeScope() const { return m_cascadeScope; }
     uint64_t position() const { return m_position; }
     const CSSStyleSheet* parentStyleSheet() const { return m_parentStyleSheet; }
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(m_parentStyleSheet);
-    }
 
 private:
     // FIXME: Oilpan: RuleData is in the oilpan heap and this pointer
@@ -89,13 +85,6 @@
 public:
     static PassRefPtr<StyleRuleList> create() { return adoptRef(new StyleRuleList()); }
 
-    void trace(Visitor* visitor)
-    {
-#if ENABLE(OILPAN)
-        visitor->trace(m_list);
-#endif
-    }
-
     Vector<RawPtr<StyleRule> > m_list;
 };
 
diff --git a/sky/engine/core/css/FontFaceCache.cpp b/sky/engine/core/css/FontFaceCache.cpp
index 719c990..0196941 100644
--- a/sky/engine/core/css/FontFaceCache.cpp
+++ b/sky/engine/core/css/FontFaceCache.cpp
@@ -226,14 +226,4 @@
     return faceResult.storedValue->value.get();
 }
 
-void FontFaceCache::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_fontFaces);
-    visitor->trace(m_fonts);
-    visitor->trace(m_styleRuleToFontFace);
-    visitor->trace(m_cssConnectedFontFaces);
-#endif
-}
-
 }
diff --git a/sky/engine/core/css/FontFaceCache.h b/sky/engine/core/css/FontFaceCache.h
index 788ab99..b2388a1 100644
--- a/sky/engine/core/css/FontFaceCache.h
+++ b/sky/engine/core/css/FontFaceCache.h
@@ -64,8 +64,6 @@
     unsigned version() const { return m_version; }
     void incrementVersion() { ++m_version; }
 
-    void trace(Visitor*);
-
 private:
     typedef HashMap<unsigned, RefPtr<CSSSegmentedFontFace> > TraitsMap;
     typedef HashMap<String, OwnPtr<TraitsMap>, CaseFoldingHash> FamilyToTraitsMap;
diff --git a/sky/engine/core/css/FontFaceSetForEachCallback.h b/sky/engine/core/css/FontFaceSetForEachCallback.h
index b7b6c1c..73effdf 100644
--- a/sky/engine/core/css/FontFaceSetForEachCallback.h
+++ b/sky/engine/core/css/FontFaceSetForEachCallback.h
@@ -37,7 +37,6 @@
 class FontFaceSetForEachCallback {
 public:
     virtual ~FontFaceSetForEachCallback() { }
-    virtual void trace(Visitor*) { }
     virtual bool handleItem(ScriptValue thisValue, FontFace*, FontFace*, FontFaceSet*) = 0;
     virtual bool handleItem(FontFace*, FontFace*, FontFaceSet*) = 0;
 };
diff --git a/sky/engine/core/css/FontFaceSetLoadEvent.cpp b/sky/engine/core/css/FontFaceSetLoadEvent.cpp
index d7776c4..376d424 100644
--- a/sky/engine/core/css/FontFaceSetLoadEvent.cpp
+++ b/sky/engine/core/css/FontFaceSetLoadEvent.cpp
@@ -58,10 +58,4 @@
     return EventNames::FontFaceSetLoadEvent;
 }
 
-void FontFaceSetLoadEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_fontfaces);
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/FontFaceSetLoadEvent.h b/sky/engine/core/css/FontFaceSetLoadEvent.h
index f37fd68..9e20c41 100644
--- a/sky/engine/core/css/FontFaceSetLoadEvent.h
+++ b/sky/engine/core/css/FontFaceSetLoadEvent.h
@@ -67,8 +67,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     FontFaceSetLoadEvent();
     FontFaceSetLoadEvent(const AtomicString&, const FontFaceArray&);
diff --git a/sky/engine/core/css/FontLoader.cpp b/sky/engine/core/css/FontLoader.cpp
index b52c7e6..df0ebc7 100644
--- a/sky/engine/core/css/FontLoader.cpp
+++ b/sky/engine/core/css/FontLoader.cpp
@@ -93,10 +93,4 @@
     m_fontsToBeginLoading.clear();
 }
 
-void FontLoader::trace(Visitor* visitor)
-{
-    visitor->trace(m_resourceFetcher);
-    visitor->trace(m_fontSelector);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/FontLoader.h b/sky/engine/core/css/FontLoader.h
index b5b1e36..a966258 100644
--- a/sky/engine/core/css/FontLoader.h
+++ b/sky/engine/core/css/FontLoader.h
@@ -32,8 +32,6 @@
     void clearResourceFetcherAndFontSelector();
 #endif
 
-    void trace(Visitor*);
-
 private:
     FontLoader(CSSFontSelector*, ResourceFetcher*);
     void beginLoadTimerFired(Timer<FontLoader>*);
diff --git a/sky/engine/core/css/MediaList.cpp b/sky/engine/core/css/MediaList.cpp
index 44fb55f..460e0c1 100644
--- a/sky/engine/core/css/MediaList.cpp
+++ b/sky/engine/core/css/MediaList.cpp
@@ -169,10 +169,6 @@
     return text.toString();
 }
 
-void MediaQuerySet::trace(Visitor* visitor)
-{
-}
-
 MediaList::MediaList(MediaQuerySet* mediaQueries, CSSStyleSheet* parentSheet)
     : m_mediaQueries(mediaQueries)
     , m_parentStyleSheet(parentSheet)
@@ -242,13 +238,6 @@
     m_mediaQueries = mediaQueries;
 }
 
-void MediaList::trace(Visitor* visitor)
-{
-    visitor->trace(m_mediaQueries);
-    visitor->trace(m_parentStyleSheet);
-    visitor->trace(m_parentRule);
-}
-
 static void addResolutionWarningMessageToConsole(Document* document, const String& serializedExpression, CSSPrimitiveValue::UnitType type)
 {
     ASSERT(document);
diff --git a/sky/engine/core/css/MediaList.h b/sky/engine/core/css/MediaList.h
index f40a7b2..82cc489 100644
--- a/sky/engine/core/css/MediaList.h
+++ b/sky/engine/core/css/MediaList.h
@@ -61,8 +61,6 @@
 
     PassRefPtr<MediaQuerySet> copy() const { return adoptRef(new MediaQuerySet(*this)); }
 
-    void trace(Visitor*);
-
 private:
     MediaQuerySet();
     MediaQuerySet(const MediaQuerySet&);
@@ -105,8 +103,6 @@
 
     void reattach(MediaQuerySet*);
 
-    void trace(Visitor*);
-
 private:
     MediaList(MediaQuerySet*, CSSStyleSheet* parentSheet);
     MediaList(MediaQuerySet*, CSSRule* parentRule);
diff --git a/sky/engine/core/css/MediaQuery.cpp b/sky/engine/core/css/MediaQuery.cpp
index b786d44..1999b34 100644
--- a/sky/engine/core/css/MediaQuery.cpp
+++ b/sky/engine/core/css/MediaQuery.cpp
@@ -133,13 +133,4 @@
     return m_serializationCache;
 }
 
-void MediaQuery::trace(Visitor* visitor)
-{
-    // We don't support tracing of vectors of OwnPtrs (ie. OwnPtr<Vector<OwnPtr<MediaQuery> > >).
-    // Since this is a transitional object we are just ifdef'ing it out when oilpan is not enabled.
-#if ENABLE(OILPAN)
-    visitor->trace(m_expressions);
-#endif
-}
-
 }
diff --git a/sky/engine/core/css/MediaQuery.h b/sky/engine/core/css/MediaQuery.h
index 6b43a32..2bb5607 100644
--- a/sky/engine/core/css/MediaQuery.h
+++ b/sky/engine/core/css/MediaQuery.h
@@ -60,8 +60,6 @@
 
     PassOwnPtr<MediaQuery> copy() const { return adoptPtr(new MediaQuery(*this)); }
 
-    void trace(Visitor*);
-
 private:
     MediaQuery(const MediaQuery&);
 
diff --git a/sky/engine/core/css/MediaQueryExp.h b/sky/engine/core/css/MediaQueryExp.h
index 68d1bb4..f9cb263 100644
--- a/sky/engine/core/css/MediaQueryExp.h
+++ b/sky/engine/core/css/MediaQueryExp.h
@@ -96,8 +96,6 @@
 
     MediaQueryExp(const MediaQueryExp& other);
 
-    void trace(Visitor* visitor) { }
-
 private:
     MediaQueryExp(const String&, const MediaQueryExpValue&);
 
diff --git a/sky/engine/core/css/MediaQueryList.cpp b/sky/engine/core/css/MediaQueryList.cpp
index 7bd8709..9ca4b4e 100644
--- a/sky/engine/core/css/MediaQueryList.cpp
+++ b/sky/engine/core/css/MediaQueryList.cpp
@@ -125,16 +125,6 @@
     return m_matches;
 }
 
-void MediaQueryList::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_matcher);
-    visitor->trace(m_media);
-    visitor->trace(m_listeners);
-#endif
-    EventTargetWithInlineData::trace(visitor);
-}
-
 const AtomicString& MediaQueryList::interfaceName() const
 {
     return EventTargetNames::MediaQueryList;
diff --git a/sky/engine/core/css/MediaQueryList.h b/sky/engine/core/css/MediaQueryList.h
index 75329bc..6f20732 100644
--- a/sky/engine/core/css/MediaQueryList.h
+++ b/sky/engine/core/css/MediaQueryList.h
@@ -66,8 +66,6 @@
     // Will return true if a DOM event should be scheduled.
     bool mediaFeaturesChanged(Vector<RefPtr<MediaQueryListListener> >* listenersToNotify);
 
-    void trace(Visitor*);
-
     // From ActiveDOMObject
     virtual bool hasPendingActivity() const override;
     virtual void stop() override;
diff --git a/sky/engine/core/css/MediaQueryListEvent.h b/sky/engine/core/css/MediaQueryListEvent.h
index c37f438..1584d21 100644
--- a/sky/engine/core/css/MediaQueryListEvent.h
+++ b/sky/engine/core/css/MediaQueryListEvent.h
@@ -45,12 +45,6 @@
 
     virtual const AtomicString& interfaceName() const override { return EventNames::MediaQueryListEvent; }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        Event::trace(visitor);
-        visitor->trace(m_mediaQueryList);
-    }
-
 private:
     MediaQueryListEvent()
         : m_matches(false)
diff --git a/sky/engine/core/css/MediaQueryListListener.h b/sky/engine/core/css/MediaQueryListListener.h
index 4c5435a..770593a 100644
--- a/sky/engine/core/css/MediaQueryListListener.h
+++ b/sky/engine/core/css/MediaQueryListListener.h
@@ -34,8 +34,6 @@
     virtual ~MediaQueryListListener();
 
     virtual void notifyMediaQueryChanged() = 0;
-
-    virtual void trace(Visitor* visitor) { }
 protected:
     MediaQueryListListener();
 };
diff --git a/sky/engine/core/css/MediaQueryMatcher.cpp b/sky/engine/core/css/MediaQueryMatcher.cpp
index 948efdd..070fdd4 100644
--- a/sky/engine/core/css/MediaQueryMatcher.cpp
+++ b/sky/engine/core/css/MediaQueryMatcher.cpp
@@ -144,13 +144,4 @@
     m_document->enqueueMediaQueryChangeListeners(listenersToNotify);
 }
 
-void MediaQueryMatcher::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_document);
-    visitor->trace(m_mediaLists);
-    visitor->trace(m_viewportListeners);
-#endif
-}
-
 }
diff --git a/sky/engine/core/css/MediaQueryMatcher.h b/sky/engine/core/css/MediaQueryMatcher.h
index 97066f8..0167ea9 100644
--- a/sky/engine/core/css/MediaQueryMatcher.h
+++ b/sky/engine/core/css/MediaQueryMatcher.h
@@ -58,8 +58,6 @@
     void viewportChanged();
     bool evaluate(const MediaQuerySet*);
 
-    void trace(Visitor*);
-
 private:
     explicit MediaQueryMatcher(Document&);
 
diff --git a/sky/engine/core/css/Pair.cpp b/sky/engine/core/css/Pair.cpp
deleted file mode 100644
index cadd148..0000000
--- a/sky/engine/core/css/Pair.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "core/css/Pair.h"
-
-namespace blink {
-
-void Pair::trace(Visitor* visitor)
-{
-    visitor->trace(m_first);
-    visitor->trace(m_second);
-}
-
-}
diff --git a/sky/engine/core/css/Pair.h b/sky/engine/core/css/Pair.h
index 4e55286..7d49339 100644
--- a/sky/engine/core/css/Pair.h
+++ b/sky/engine/core/css/Pair.h
@@ -62,8 +62,6 @@
             && m_identicalValuesPolicy == other.m_identicalValuesPolicy;
     }
 
-    void trace(Visitor*);
-
 private:
     Pair()
         : m_first(nullptr)
diff --git a/sky/engine/core/css/PropertySetCSSStyleDeclaration.cpp b/sky/engine/core/css/PropertySetCSSStyleDeclaration.cpp
index 3ade73b..f51a286 100644
--- a/sky/engine/core/css/PropertySetCSSStyleDeclaration.cpp
+++ b/sky/engine/core/css/PropertySetCSSStyleDeclaration.cpp
@@ -120,12 +120,6 @@
 }
 #endif
 
-void PropertySetCSSStyleDeclaration::trace(Visitor* visitor)
-{
-    visitor->trace(m_propertySet);
-    AbstractPropertySetCSSStyleDeclaration::trace(visitor);
-}
-
 unsigned AbstractPropertySetCSSStyleDeclaration::length() const
 {
     return propertySet().propertyCount();
@@ -286,14 +280,6 @@
     return propertySet().propertyMatches(propertyID, propertyValue);
 }
 
-void AbstractPropertySetCSSStyleDeclaration::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_cssomCSSValueClones);
-#endif
-    CSSStyleDeclaration::trace(visitor);
-}
-
 StyleRuleCSSStyleDeclaration::StyleRuleCSSStyleDeclaration(MutableStylePropertySet& propertySetArg, CSSRule* parentRule)
     : PropertySetCSSStyleDeclaration(propertySetArg)
 #if !ENABLE(OILPAN)
@@ -359,12 +345,6 @@
 #endif
 }
 
-void StyleRuleCSSStyleDeclaration::trace(Visitor* visitor)
-{
-    visitor->trace(m_parentRule);
-    PropertySetCSSStyleDeclaration::trace(visitor);
-}
-
 MutableStylePropertySet& InlineCSSStyleDeclaration::propertySet() const
 {
     return m_parentElement->ensureMutableInlineStyle();
@@ -403,10 +383,4 @@
 }
 #endif
 
-void InlineCSSStyleDeclaration::trace(Visitor* visitor)
-{
-    visitor->trace(m_parentElement);
-    AbstractPropertySetCSSStyleDeclaration::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/PropertySetCSSStyleDeclaration.h b/sky/engine/core/css/PropertySetCSSStyleDeclaration.h
index be8996a..7a6f7bd 100644
--- a/sky/engine/core/css/PropertySetCSSStyleDeclaration.h
+++ b/sky/engine/core/css/PropertySetCSSStyleDeclaration.h
@@ -45,8 +45,6 @@
     virtual Element* parentElement() const { return 0; }
     StyleSheetContents* contextStyleSheet() const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     virtual CSSRule* parentRule() const override { return 0; }
     virtual unsigned length() const override final;
@@ -87,8 +85,6 @@
     virtual void deref() override;
 #endif
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual MutableStylePropertySet& propertySet() const override final { ASSERT(m_propertySet); return *m_propertySet; }
 
@@ -112,8 +108,6 @@
 
     void reattach(MutableStylePropertySet&);
 
-    virtual void trace(Visitor*) override;
-
 private:
     StyleRuleCSSStyleDeclaration(MutableStylePropertySet&, CSSRule*);
     virtual ~StyleRuleCSSStyleDeclaration();
@@ -139,8 +133,6 @@
     {
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     virtual MutableStylePropertySet& propertySet() const override;
 #if !ENABLE(OILPAN)
diff --git a/sky/engine/core/css/RGBColor.h b/sky/engine/core/css/RGBColor.h
index c571b00..a66dec4 100644
--- a/sky/engine/core/css/RGBColor.h
+++ b/sky/engine/core/css/RGBColor.h
@@ -47,8 +47,6 @@
 
     Color color() const { return Color(m_rgbColor); }
 
-    void trace(Visitor*) { }
-
 private:
     RGBColor(unsigned rgbColor)
         : m_rgbColor(rgbColor)
diff --git a/sky/engine/core/css/Rect.cpp b/sky/engine/core/css/Rect.cpp
index c21ef1b..18eafa2 100644
--- a/sky/engine/core/css/Rect.cpp
+++ b/sky/engine/core/css/Rect.cpp
@@ -9,12 +9,4 @@
 
 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(RectBase)
 
-void RectBase::trace(Visitor* visitor)
-{
-    visitor->trace(m_top);
-    visitor->trace(m_right);
-    visitor->trace(m_bottom);
-    visitor->trace(m_left);
-}
-
 }
diff --git a/sky/engine/core/css/Rect.h b/sky/engine/core/css/Rect.h
index c01930a..38f90d1 100644
--- a/sky/engine/core/css/Rect.h
+++ b/sky/engine/core/css/Rect.h
@@ -49,8 +49,6 @@
             && compareCSSValuePtr(m_bottom, other.m_bottom);
     }
 
-    void trace(Visitor*);
-
 protected:
     RectBase() { }
     RectBase(const RectBase& cloneFrom)
diff --git a/sky/engine/core/css/RemoteFontFaceSource.cpp b/sky/engine/core/css/RemoteFontFaceSource.cpp
index 2c78968..2e57bc1 100644
--- a/sky/engine/core/css/RemoteFontFaceSource.cpp
+++ b/sky/engine/core/css/RemoteFontFaceSource.cpp
@@ -131,12 +131,6 @@
     return m_font->ensureCustomFontData();
 }
 
-void RemoteFontFaceSource::trace(Visitor* visitor)
-{
-    visitor->trace(m_fontLoader);
-    CSSFontFaceSource::trace(visitor);
-}
-
 void RemoteFontFaceSource::FontLoadHistograms::loadStarted()
 {
     if (!m_loadStartTime)
diff --git a/sky/engine/core/css/RemoteFontFaceSource.h b/sky/engine/core/css/RemoteFontFaceSource.h
index adfad00..1d19875 100644
--- a/sky/engine/core/css/RemoteFontFaceSource.h
+++ b/sky/engine/core/css/RemoteFontFaceSource.h
@@ -34,8 +34,6 @@
     virtual bool hadBlankText() override { return m_histograms.hadBlankText(); }
     void paintRequested() { m_histograms.fallbackFontPainted(); }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     virtual PassRefPtr<SimpleFontData> createFontData(const FontDescription&) override;
     PassRefPtr<SimpleFontData> createLoadingFallbackFontData(const FontDescription&);
diff --git a/sky/engine/core/css/RuleSet.cpp b/sky/engine/core/css/RuleSet.cpp
index f434411..904ae86 100644
--- a/sky/engine/core/css/RuleSet.cpp
+++ b/sky/engine/core/css/RuleSet.cpp
@@ -246,40 +246,6 @@
     m_keyframesRules.shrinkToFit();
 }
 
-void RuleData::trace(Visitor* visitor)
-{
-    visitor->trace(m_rule);
-}
-
-void RuleSet::PendingRuleMaps::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(idRules);
-    visitor->trace(classRules);
-    visitor->trace(tagRules);
-    visitor->trace(shadowPseudoElementRules);
-#endif
-}
-
-void RuleSet::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_idRules);
-    visitor->trace(m_classRules);
-    visitor->trace(m_tagRules);
-    visitor->trace(m_shadowPseudoElementRules);
-    visitor->trace(m_universalRules);
-    visitor->trace(m_features);
-    visitor->trace(m_fontFaceRules);
-    visitor->trace(m_keyframesRules);
-    visitor->trace(m_viewportDependentMediaQueryResults);
-    visitor->trace(m_pendingRules);
-#ifndef NDEBUG
-    visitor->trace(m_allRules);
-#endif
-#endif
-}
-
 #ifndef NDEBUG
 void RuleSet::show()
 {
diff --git a/sky/engine/core/css/RuleSet.h b/sky/engine/core/css/RuleSet.h
index 0139011..8531fdd 100644
--- a/sky/engine/core/css/RuleSet.h
+++ b/sky/engine/core/css/RuleSet.h
@@ -58,8 +58,6 @@
 
     bool containsAttributeSelector() const { return m_containsAttributeSelector; }
 
-    void trace(Visitor*);
-
 private:
     RawPtr<StyleRule> m_rule;
     unsigned m_selectorIndex : 12;
@@ -111,8 +109,6 @@
     void show();
 #endif
 
-    void trace(Visitor*);
-
 private:
     typedef HashMap<AtomicString, OwnPtr<LinkedStack<RuleData> > > PendingRuleMap;
     typedef HashMap<AtomicString, OwnPtr<TerminatedArray<RuleData> > > CompactRuleMap;
@@ -141,8 +137,6 @@
         PendingRuleMap tagRules;
         PendingRuleMap shadowPseudoElementRules;
 
-        void trace(Visitor*);
-
     private:
         PendingRuleMaps() { }
     };
diff --git a/sky/engine/core/css/StyleMedia.h b/sky/engine/core/css/StyleMedia.h
index e5457ed..1b1446c 100644
--- a/sky/engine/core/css/StyleMedia.h
+++ b/sky/engine/core/css/StyleMedia.h
@@ -45,8 +45,6 @@
     AtomicString type() const;
     bool matchMedium(const String&) const;
 
-    void trace(Visitor*) { }
-
 private:
     explicit StyleMedia(LocalFrame*);
 };
diff --git a/sky/engine/core/css/StylePropertySet.cpp b/sky/engine/core/css/StylePropertySet.cpp
index b04848e..c03e2a3 100644
--- a/sky/engine/core/css/StylePropertySet.cpp
+++ b/sky/engine/core/css/StylePropertySet.cpp
@@ -112,14 +112,6 @@
     return -1;
 }
 
-void ImmutableStylePropertySet::traceAfterDispatch(Visitor* visitor)
-{
-    const RawPtr<CSSValue>* values = valueArray();
-    for (unsigned i = 0; i < m_arraySize; i++)
-        visitor->trace(values[i]);
-    StylePropertySet::traceAfterDispatch(visitor);
-}
-
 MutableStylePropertySet::MutableStylePropertySet(const StylePropertySet& other)
     : StylePropertySet(other.cssParserMode())
 {
@@ -149,24 +141,6 @@
     return propertyAt(foundPropertyIndex).value();
 }
 
-void StylePropertySet::trace(Visitor* visitor)
-{
-    if (m_isMutable)
-        toMutableStylePropertySet(this)->traceAfterDispatch(visitor);
-    else
-        toImmutableStylePropertySet(this)->traceAfterDispatch(visitor);
-}
-
-#if ENABLE(OILPAN)
-void StylePropertySet::finalizeGarbageCollectedObject()
-{
-    if (m_isMutable)
-        toMutableStylePropertySet(this)->~MutableStylePropertySet();
-    else
-        toImmutableStylePropertySet(this)->~ImmutableStylePropertySet();
-}
-#endif
-
 bool MutableStylePropertySet::removeShorthandProperty(CSSPropertyID propertyID)
 {
     StylePropertyShorthand shorthand = shorthandForProperty(propertyID);
@@ -549,13 +523,6 @@
     return -1;
 }
 
-void MutableStylePropertySet::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_cssomWrapper);
-    visitor->trace(m_propertyVector);
-    StylePropertySet::traceAfterDispatch(visitor);
-}
-
 unsigned StylePropertySet::averageSizeInBytes()
 {
     // Please update this if the storage scheme changes so that this longer reflects the actual size.
diff --git a/sky/engine/core/css/StylePropertySet.h b/sky/engine/core/css/StylePropertySet.h
index 69c0960..17ae7f3 100644
--- a/sky/engine/core/css/StylePropertySet.h
+++ b/sky/engine/core/css/StylePropertySet.h
@@ -45,16 +45,9 @@
     friend class PropertyReference;
 public:
 
-#if ENABLE(OILPAN)
-    // When oilpan is enabled override the finalize method to dispatch to the subclasses'
-    // destructor. This can be removed once the MutableStylePropertySet's OwnPtr is moved
-    // to the heap.
-    void finalizeGarbageCollectedObject();
-#else
     // Override RefCounted's deref() to ensure operator delete is called on
     // the appropriate subclass type.
     void deref();
-#endif
 
     class PropertyReference {
     public:
@@ -126,9 +119,6 @@
 
     bool propertyMatches(CSSPropertyID, const CSSValue*) const;
 
-    void trace(Visitor*);
-    void traceAfterDispatch(Visitor*) { }
-
 protected:
 
     enum { MaxArraySize = (1 << 28) - 1 };
@@ -163,8 +153,6 @@
     const StylePropertyMetadata* metadataArray() const;
     int findPropertyIndex(CSSPropertyID) const;
 
-    void traceAfterDispatch(Visitor*);
-
     void* operator new(std::size_t, void* location)
     {
         return location;
@@ -225,8 +213,6 @@
     CSSStyleDeclaration* ensureCSSStyleDeclaration();
     int findPropertyIndex(CSSPropertyID) const;
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     explicit MutableStylePropertySet(CSSParserMode);
     explicit MutableStylePropertySet(const StylePropertySet&);
diff --git a/sky/engine/core/css/StyleRule.cpp b/sky/engine/core/css/StyleRule.cpp
index e4ba4d8..47ba623 100644
--- a/sky/engine/core/css/StyleRule.cpp
+++ b/sky/engine/core/css/StyleRule.cpp
@@ -48,64 +48,6 @@
     return createCSSOMWrapper(0, parentRule);
 }
 
-void StyleRuleBase::trace(Visitor* visitor)
-{
-    switch (type()) {
-    case Style:
-        toStyleRule(this)->traceAfterDispatch(visitor);
-        return;
-    case FontFace:
-        toStyleRuleFontFace(this)->traceAfterDispatch(visitor);
-        return;
-    case Media:
-        toStyleRuleMedia(this)->traceAfterDispatch(visitor);
-        return;
-    case Supports:
-        toStyleRuleSupports(this)->traceAfterDispatch(visitor);
-        return;
-    case Keyframes:
-        toStyleRuleKeyframes(this)->traceAfterDispatch(visitor);
-        return;
-    case Filter:
-        toStyleRuleFilter(this)->traceAfterDispatch(visitor);
-        return;
-    case Unknown:
-    case Keyframe:
-        ASSERT_NOT_REACHED();
-        return;
-    }
-    ASSERT_NOT_REACHED();
-}
-
-void StyleRuleBase::finalizeGarbageCollectedObject()
-{
-    switch (type()) {
-    case Style:
-        toStyleRule(this)->~StyleRule();
-        return;
-    case FontFace:
-        toStyleRuleFontFace(this)->~StyleRuleFontFace();
-        return;
-    case Media:
-        toStyleRuleMedia(this)->~StyleRuleMedia();
-        return;
-    case Supports:
-        toStyleRuleSupports(this)->~StyleRuleSupports();
-        return;
-    case Keyframes:
-        toStyleRuleKeyframes(this)->~StyleRuleKeyframes();
-        return;
-    case Filter:
-        toStyleRuleFilter(this)->~StyleRuleFilter();
-        return;
-    case Unknown:
-    case Keyframe:
-        ASSERT_NOT_REACHED();
-        return;
-    }
-    ASSERT_NOT_REACHED();
-}
-
 void StyleRuleBase::destroy()
 {
     switch (type()) {
@@ -225,12 +167,6 @@
     m_properties = properties;
 }
 
-void StyleRule::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_properties);
-    StyleRuleBase::traceAfterDispatch(visitor);
-}
-
 StyleRuleFontFace::StyleRuleFontFace()
     : StyleRuleBase(FontFace)
 {
@@ -258,12 +194,6 @@
     m_properties = properties;
 }
 
-void StyleRuleFontFace::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_properties);
-    StyleRuleBase::traceAfterDispatch(visitor);
-}
-
 StyleRuleGroup::StyleRuleGroup(Type type, Vector<RefPtr<StyleRuleBase> >& adoptRule)
     : StyleRuleBase(type)
 {
@@ -288,12 +218,6 @@
     m_childRules.remove(index);
 }
 
-void StyleRuleGroup::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_childRules);
-    StyleRuleBase::traceAfterDispatch(visitor);
-}
-
 StyleRuleMedia::StyleRuleMedia(PassRefPtr<MediaQuerySet> media, Vector<RefPtr<StyleRuleBase> >& adoptRules)
     : StyleRuleGroup(Media, adoptRules)
     , m_mediaQueries(media)
@@ -307,12 +231,6 @@
         m_mediaQueries = o.m_mediaQueries->copy();
 }
 
-void StyleRuleMedia::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_mediaQueries);
-    StyleRuleGroup::traceAfterDispatch(visitor);
-}
-
 StyleRuleSupports::StyleRuleSupports(const String& conditionText, bool conditionIsSupported, Vector<RefPtr<StyleRuleBase> >& adoptRules)
     : StyleRuleGroup(Supports, adoptRules)
     , m_conditionText(conditionText)
@@ -356,10 +274,4 @@
     m_properties = properties;
 }
 
-void StyleRuleFilter::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_properties);
-    StyleRuleBase::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/StyleRule.h b/sky/engine/core/css/StyleRule.h
index eb992b5..058c334 100644
--- a/sky/engine/core/css/StyleRule.h
+++ b/sky/engine/core/css/StyleRule.h
@@ -72,10 +72,6 @@
     PassRefPtr<CSSRule> createCSSOMWrapper(CSSStyleSheet* parentSheet = 0) const;
     PassRefPtr<CSSRule> createCSSOMWrapper(CSSRule* parentRule) const;
 
-    void trace(Visitor*);
-    void traceAfterDispatch(Visitor*) { };
-    void finalizeGarbageCollectedObject();
-
 protected:
     StyleRuleBase(Type type) : m_type(type) { }
     StyleRuleBase(const StyleRuleBase& o) : m_type(o.m_type) { }
@@ -109,8 +105,6 @@
 
     static unsigned averageSizeInBytes();
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     StyleRule();
     StyleRule(const StyleRule&);
@@ -132,8 +126,6 @@
 
     PassRefPtr<StyleRuleFontFace> copy() const { return adoptRef(new StyleRuleFontFace(*this)); }
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     StyleRuleFontFace();
     StyleRuleFontFace(const StyleRuleFontFace&);
@@ -148,8 +140,6 @@
     void wrapperInsertRule(unsigned, PassRefPtr<StyleRuleBase>);
     void wrapperRemoveRule(unsigned);
 
-    void traceAfterDispatch(Visitor*);
-
 protected:
     StyleRuleGroup(Type, Vector<RefPtr<StyleRuleBase> >& adoptRule);
     StyleRuleGroup(const StyleRuleGroup&);
@@ -169,8 +159,6 @@
 
     PassRefPtr<StyleRuleMedia> copy() const { return adoptRef(new StyleRuleMedia(*this)); }
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     StyleRuleMedia(PassRefPtr<MediaQuerySet>, Vector<RefPtr<StyleRuleBase> >& adoptRules);
     StyleRuleMedia(const StyleRuleMedia&);
@@ -189,8 +177,6 @@
     bool conditionIsSupported() const { return m_conditionIsSupported; }
     PassRefPtr<StyleRuleSupports> copy() const { return adoptRef(new StyleRuleSupports(*this)); }
 
-    void traceAfterDispatch(Visitor* visitor) { StyleRuleGroup::traceAfterDispatch(visitor); }
-
 private:
     StyleRuleSupports(const String& conditionText, bool conditionIsSupported, Vector<RefPtr<StyleRuleBase> >& adoptRules);
     StyleRuleSupports(const StyleRuleSupports&);
@@ -214,8 +200,6 @@
 
     PassRefPtr<StyleRuleFilter> copy() const { return adoptRef(new StyleRuleFilter(*this)); }
 
-    void traceAfterDispatch(Visitor*);
-
 private:
     StyleRuleFilter(const String&);
     StyleRuleFilter(const StyleRuleFilter&);
diff --git a/sky/engine/core/css/StyleSheet.h b/sky/engine/core/css/StyleSheet.h
index 3044abb..0552755 100644
--- a/sky/engine/core/css/StyleSheet.h
+++ b/sky/engine/core/css/StyleSheet.h
@@ -50,8 +50,6 @@
     virtual void clearOwnerNode() = 0;
     virtual KURL baseURL() const = 0;
     virtual bool isCSSStyleSheet() const { return false; }
-
-    virtual void trace(Visitor*) { }
 };
 
 } // namespace blink
diff --git a/sky/engine/core/css/StyleSheetContents.cpp b/sky/engine/core/css/StyleSheetContents.cpp
index 2239120..740fcf1 100644
--- a/sky/engine/core/css/StyleSheetContents.cpp
+++ b/sky/engine/core/css/StyleSheetContents.cpp
@@ -378,14 +378,4 @@
     findFontFaceRulesFromRules(childRules(), fontFaceRules);
 }
 
-void StyleSheetContents::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_childRules);
-    visitor->trace(m_loadingClients);
-    visitor->trace(m_completedClients);
-    visitor->trace(m_ruleSet);
-#endif
-}
-
 }
diff --git a/sky/engine/core/css/StyleSheetContents.h b/sky/engine/core/css/StyleSheetContents.h
index 8e3d5a8..250d56e 100644
--- a/sky/engine/core/css/StyleSheetContents.h
+++ b/sky/engine/core/css/StyleSheetContents.h
@@ -129,8 +129,6 @@
     RuleSet& ensureRuleSet(const MediaQueryEvaluator&, AddRuleFlags);
     void clearRuleSet();
 
-    void trace(Visitor*);
-
 private:
     StyleSheetContents(const String& originalURL, const CSSParserContext&);
     StyleSheetContents(const StyleSheetContents&);
diff --git a/sky/engine/core/css/StyleSheetList.cpp b/sky/engine/core/css/StyleSheetList.cpp
index e48c8f6..e145801 100644
--- a/sky/engine/core/css/StyleSheetList.cpp
+++ b/sky/engine/core/css/StyleSheetList.cpp
@@ -90,9 +90,4 @@
     return item->sheet();
 }
 
-void StyleSheetList::trace(Visitor* visitor)
-{
-    visitor->trace(m_treeScope);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/StyleSheetList.h b/sky/engine/core/css/StyleSheetList.h
index 284793f..a6b5b93 100644
--- a/sky/engine/core/css/StyleSheetList.h
+++ b/sky/engine/core/css/StyleSheetList.h
@@ -53,8 +53,6 @@
 
     CSSStyleSheet* anonymousNamedGetter(const AtomicString&);
 
-    void trace(Visitor*);
-
 private:
     StyleSheetList(TreeScope*);
     const Vector<RefPtr<StyleSheet> >& styleSheets();
diff --git a/sky/engine/core/css/resolver/MatchResult.cpp b/sky/engine/core/css/resolver/MatchResult.cpp
index 6c34ec7..8081563 100644
--- a/sky/engine/core/css/resolver/MatchResult.cpp
+++ b/sky/engine/core/css/resolver/MatchResult.cpp
@@ -42,11 +42,6 @@
 {
 }
 
-void MatchedProperties::trace(Visitor* visitor)
-{
-    visitor->trace(properties);
-}
-
 void MatchResult::addMatchedProperties(const StylePropertySet* properties)
 {
     matchedProperties.grow(matchedProperties.size() + 1);
diff --git a/sky/engine/core/css/resolver/MatchResult.h b/sky/engine/core/css/resolver/MatchResult.h
index 9ebc766..b75f009 100644
--- a/sky/engine/core/css/resolver/MatchResult.h
+++ b/sky/engine/core/css/resolver/MatchResult.h
@@ -55,8 +55,6 @@
     MatchedProperties();
     ~MatchedProperties();
 
-    void trace(Visitor*);
-
     RefPtr<StylePropertySet> properties;
 };
 
diff --git a/sky/engine/core/css/resolver/MatchedPropertiesCache.cpp b/sky/engine/core/css/resolver/MatchedPropertiesCache.cpp
index 146f4eb..6e226ce 100644
--- a/sky/engine/core/css/resolver/MatchedPropertiesCache.cpp
+++ b/sky/engine/core/css/resolver/MatchedPropertiesCache.cpp
@@ -150,8 +150,4 @@
     return true;
 }
 
-void MatchedPropertiesCache::trace(Visitor* visitor)
-{
-}
-
 }
diff --git a/sky/engine/core/css/resolver/MatchedPropertiesCache.h b/sky/engine/core/css/resolver/MatchedPropertiesCache.h
index d591362..4d3f59a 100644
--- a/sky/engine/core/css/resolver/MatchedPropertiesCache.h
+++ b/sky/engine/core/css/resolver/MatchedPropertiesCache.h
@@ -46,7 +46,6 @@
 
     void set(const RenderStyle*, const RenderStyle* parentStyle, const MatchResult&);
     void clear();
-    void trace(Visitor* visitor) { visitor->trace(matchedProperties); }
 };
 
 class MatchedPropertiesCache {
@@ -63,8 +62,6 @@
 
     static bool isCacheable(const Element*, const RenderStyle*, const RenderStyle* parentStyle);
 
-    void trace(Visitor*);
-
 private:
     // Every N additions to the matched declaration cache trigger a sweep where entries holding
     // the last reference to a style declaration are garbage collected.
diff --git a/sky/engine/core/css/resolver/MediaQueryResult.h b/sky/engine/core/css/resolver/MediaQueryResult.h
index a1976b5..e77a03f 100644
--- a/sky/engine/core/css/resolver/MediaQueryResult.h
+++ b/sky/engine/core/css/resolver/MediaQueryResult.h
@@ -38,8 +38,6 @@
     {
     }
 
-    void trace(Visitor* visitor) { visitor->trace(m_expression); }
-
     const MediaQueryExp* expression() const
     {
         return &m_expression;
diff --git a/sky/engine/core/css/resolver/ScopedStyleResolver.cpp b/sky/engine/core/css/resolver/ScopedStyleResolver.cpp
index 915e155..b95dedd 100644
--- a/sky/engine/core/css/resolver/ScopedStyleResolver.cpp
+++ b/sky/engine/core/css/resolver/ScopedStyleResolver.cpp
@@ -132,13 +132,4 @@
     }
 }
 
-void ScopedStyleResolver::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_scope);
-    visitor->trace(m_authorStyleSheets);
-    visitor->trace(m_keyframesRuleMap);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/resolver/ScopedStyleResolver.h b/sky/engine/core/css/resolver/ScopedStyleResolver.h
index 45edbcf..83e9c29 100644
--- a/sky/engine/core/css/resolver/ScopedStyleResolver.h
+++ b/sky/engine/core/css/resolver/ScopedStyleResolver.h
@@ -65,8 +65,6 @@
     void collectFeaturesTo(RuleFeatureSet&, HashSet<const StyleSheetContents*>& visitedSharedStyleSheetContents) const;
     void resetAuthorStyle();
 
-    void trace(Visitor*);
-
 private:
     explicit ScopedStyleResolver(TreeScope& scope)
         : m_scope(scope)
diff --git a/sky/engine/core/css/resolver/StyleResolver.cpp b/sky/engine/core/css/resolver/StyleResolver.cpp
index 50ac219..c4d1e33 100644
--- a/sky/engine/core/css/resolver/StyleResolver.cpp
+++ b/sky/engine/core/css/resolver/StyleResolver.cpp
@@ -1001,18 +1001,4 @@
     return false;
 }
 
-void StyleResolver::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_keyframesRuleMap);
-    visitor->trace(m_matchedPropertiesCache);
-    visitor->trace(m_viewportDependentMediaQueryResults);
-    visitor->trace(m_features);
-    visitor->trace(m_attributeRuleSet);
-    visitor->trace(m_styleSharingLists);
-    visitor->trace(m_pendingStyleSheets);
-    visitor->trace(m_document);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/css/resolver/StyleResolver.h b/sky/engine/core/css/resolver/StyleResolver.h
index 4f9052b..0b22ab5 100644
--- a/sky/engine/core/css/resolver/StyleResolver.h
+++ b/sky/engine/core/css/resolver/StyleResolver.h
@@ -190,8 +190,6 @@
     void increaseStyleSharingDepth() { ++m_styleSharingDepth; }
     void decreaseStyleSharingDepth() { --m_styleSharingDepth; }
 
-    void trace(Visitor*);
-
 private:
     // FIXME: This should probably go away, folded into FontBuilder.
     void updateFont(StyleResolverState&);
diff --git a/sky/engine/core/dom/ChildListMutationScope.cpp b/sky/engine/core/dom/ChildListMutationScope.cpp
index 7c61184..f613572 100644
--- a/sky/engine/core/dom/ChildListMutationScope.cpp
+++ b/sky/engine/core/dom/ChildListMutationScope.cpp
@@ -157,15 +157,4 @@
     return result;
 }
 
-void ChildListMutationAccumulator::trace(Visitor* visitor)
-{
-    visitor->trace(m_target);
-    visitor->trace(m_removedNodes);
-    visitor->trace(m_addedNodes);
-    visitor->trace(m_previousSibling);
-    visitor->trace(m_nextSibling);
-    visitor->trace(m_lastAdded);
-    visitor->trace(m_observers);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/ChildListMutationScope.h b/sky/engine/core/dom/ChildListMutationScope.h
index 28f0c8a..2c80873 100644
--- a/sky/engine/core/dom/ChildListMutationScope.h
+++ b/sky/engine/core/dom/ChildListMutationScope.h
@@ -64,8 +64,6 @@
     void enterMutationScope() { m_mutationScopes++; }
     void leaveMutationScope();
 
-    void trace(Visitor*);
-
 private:
     ChildListMutationAccumulator(PassRefPtr<Node>, PassOwnPtr<MutationObserverInterestGroup>);
 
diff --git a/sky/engine/core/dom/ClientRect.h b/sky/engine/core/dom/ClientRect.h
index ef3927a..ba03664 100644
--- a/sky/engine/core/dom/ClientRect.h
+++ b/sky/engine/core/dom/ClientRect.h
@@ -60,8 +60,6 @@
     float width() const { return m_rect.width(); }
     float height() const { return m_rect.height(); }
 
-    void trace(Visitor*) { }
-
 private:
     ClientRect();
     explicit ClientRect(const IntRect&);
diff --git a/sky/engine/core/dom/ClientRectList.cpp b/sky/engine/core/dom/ClientRectList.cpp
index 36f8fa7..e0b8006 100644
--- a/sky/engine/core/dom/ClientRectList.cpp
+++ b/sky/engine/core/dom/ClientRectList.cpp
@@ -60,9 +60,4 @@
     return m_list[index].get();
 }
 
-void ClientRectList::trace(Visitor* visitor)
-{
-    visitor->trace(m_list);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/ClientRectList.h b/sky/engine/core/dom/ClientRectList.h
index b8cdfdc..078275c 100644
--- a/sky/engine/core/dom/ClientRectList.h
+++ b/sky/engine/core/dom/ClientRectList.h
@@ -53,8 +53,6 @@
     unsigned length() const;
     ClientRect* item(unsigned index);
 
-    void trace(Visitor*);
-
 private:
     ClientRectList();
     explicit ClientRectList(const Vector<FloatQuad>&);
diff --git a/sky/engine/core/dom/DOMError.h b/sky/engine/core/dom/DOMError.h
index a9c39ff..373c8c6 100644
--- a/sky/engine/core/dom/DOMError.h
+++ b/sky/engine/core/dom/DOMError.h
@@ -61,8 +61,6 @@
     const String& name() const { return m_name; }
     const String& message() const { return m_message; }
 
-    void trace(Visitor*) { }
-
 protected:
     explicit DOMError(const String& name);
     DOMError(const String& name, const String& message);
diff --git a/sky/engine/core/dom/DOMException.h b/sky/engine/core/dom/DOMException.h
index 9c89493..74deeb8 100644
--- a/sky/engine/core/dom/DOMException.h
+++ b/sky/engine/core/dom/DOMException.h
@@ -58,8 +58,6 @@
     static String getErrorName(ExceptionCode);
     static String getErrorMessage(ExceptionCode);
 
-    void trace(Visitor*) { }
-
 private:
     DOMException(unsigned short m_code, const String& name, const String& sanitizedMessage, const String& unsanitizedMessage);
 
diff --git a/sky/engine/core/dom/DOMStringList.h b/sky/engine/core/dom/DOMStringList.h
index 0e81df0..5bc963a 100644
--- a/sky/engine/core/dom/DOMStringList.h
+++ b/sky/engine/core/dom/DOMStringList.h
@@ -57,8 +57,6 @@
 
     operator const Vector<String>&() const { return m_strings; }
 
-    void trace(Visitor*) { }
-
 private:
     DOMStringList()
     {
diff --git a/sky/engine/core/dom/DOMTokenList.h b/sky/engine/core/dom/DOMTokenList.h
index 04511b9..7de8f09 100644
--- a/sky/engine/core/dom/DOMTokenList.h
+++ b/sky/engine/core/dom/DOMTokenList.h
@@ -65,8 +65,6 @@
 
     virtual Element* element() { return 0; }
 
-    virtual void trace(Visitor*) { }
-
 protected:
     virtual const AtomicString& value() const = 0;
     virtual void setValue(const AtomicString&) = 0;
diff --git a/sky/engine/core/dom/DOMURL.h b/sky/engine/core/dom/DOMURL.h
index 70f8a9e..a5d88bb 100644
--- a/sky/engine/core/dom/DOMURL.h
+++ b/sky/engine/core/dom/DOMURL.h
@@ -63,8 +63,6 @@
     virtual String input() const override { return m_input; }
     virtual void setInput(const String&) override;
 
-    void trace(Visitor*) { }
-
 private:
     DOMURL(const String& url, const KURL& base, ExceptionState&);
 
diff --git a/sky/engine/core/dom/DocumentMarker.cpp b/sky/engine/core/dom/DocumentMarker.cpp
index 2d225bb..badd021 100644
--- a/sky/engine/core/dom/DocumentMarker.cpp
+++ b/sky/engine/core/dom/DocumentMarker.cpp
@@ -183,9 +183,4 @@
     return false;
 }
 
-void DocumentMarker::trace(Visitor* visitor)
-{
-    visitor->trace(m_details);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/DocumentMarker.h b/sky/engine/core/dom/DocumentMarker.h
index c29bc14..f717a4f 100644
--- a/sky/engine/core/dom/DocumentMarker.h
+++ b/sky/engine/core/dom/DocumentMarker.h
@@ -128,8 +128,6 @@
         return !(*this == o);
     }
 
-    void trace(Visitor*);
-
 private:
     MarkerType m_type;
     unsigned m_startOffset;
@@ -152,8 +150,6 @@
     virtual ~DocumentMarkerDetails();
     virtual bool isDescription() const { return false; }
     virtual bool isTextMatch() const { return false; }
-
-    virtual void trace(Visitor*) { }
 };
 
 } // namespace blink
diff --git a/sky/engine/core/dom/DocumentMarkerController.cpp b/sky/engine/core/dom/DocumentMarkerController.cpp
index 9c06043..5e1e03e 100644
--- a/sky/engine/core/dom/DocumentMarkerController.cpp
+++ b/sky/engine/core/dom/DocumentMarkerController.cpp
@@ -491,13 +491,6 @@
     return result;
 }
 
-void DocumentMarkerController::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_markers);
-#endif
-}
-
 void DocumentMarkerController::removeMarkers(Node* node, DocumentMarker::MarkerTypes markerTypes)
 {
     if (!possiblyHasMarkers(markerTypes))
diff --git a/sky/engine/core/dom/DocumentMarkerController.h b/sky/engine/core/dom/DocumentMarkerController.h
index ff1097d..5eeff4c 100644
--- a/sky/engine/core/dom/DocumentMarkerController.h
+++ b/sky/engine/core/dom/DocumentMarkerController.h
@@ -90,8 +90,6 @@
     DocumentMarkerVector markers();
     Vector<IntRect> renderedRectsForMarkers(DocumentMarker::MarkerType);
 
-    void trace(Visitor*);
-
 #ifndef NDEBUG
     void showMarkers() const;
 #endif
diff --git a/sky/engine/core/dom/DocumentOrderedList.cpp b/sky/engine/core/dom/DocumentOrderedList.cpp
index c575b22..fc74c1e 100644
--- a/sky/engine/core/dom/DocumentOrderedList.cpp
+++ b/sky/engine/core/dom/DocumentOrderedList.cpp
@@ -69,12 +69,5 @@
     m_nodes.remove(const_cast<Node*>(node));
 }
 
-void DocumentOrderedList::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_nodes);
-#endif
-}
-
 }
 
diff --git a/sky/engine/core/dom/DocumentOrderedList.h b/sky/engine/core/dom/DocumentOrderedList.h
index ec66567..7e01e73 100644
--- a/sky/engine/core/dom/DocumentOrderedList.h
+++ b/sky/engine/core/dom/DocumentOrderedList.h
@@ -54,8 +54,6 @@
     iterator begin() { return m_nodes.begin(); }
     iterator end() { return m_nodes.end(); }
 
-    void trace(Visitor*);
-
 private:
     ListHashSet<RawPtr<Node>, 32> m_nodes;
 };
diff --git a/sky/engine/core/dom/DocumentStyleSheetCollection.h b/sky/engine/core/dom/DocumentStyleSheetCollection.h
index dc60006..5fe109e 100644
--- a/sky/engine/core/dom/DocumentStyleSheetCollection.h
+++ b/sky/engine/core/dom/DocumentStyleSheetCollection.h
@@ -48,11 +48,6 @@
     void updateActiveStyleSheets(StyleEngine*, StyleResolverUpdateMode);
     void collectStyleSheets(StyleEngine*, DocumentStyleSheetCollector&);
 
-    virtual void trace(Visitor* visitor) override
-    {
-        TreeScopeStyleSheetCollection::trace(visitor);
-    }
-
 private:
     explicit DocumentStyleSheetCollection(TreeScope&);
 
diff --git a/sky/engine/core/dom/ElementData.cpp b/sky/engine/core/dom/ElementData.cpp
index b5821f4..4c9a28e 100644
--- a/sky/engine/core/dom/ElementData.cpp
+++ b/sky/engine/core/dom/ElementData.cpp
@@ -73,15 +73,6 @@
     // NOTE: The inline style is copied by the subclass copy constructor since we don't know what to do with it here.
 }
 
-#if ENABLE(OILPAN)
-void ElementData::finalizeGarbageCollectedObject()
-{
-    if (m_isUnique)
-        toUniqueElementData(this)->~UniqueElementData();
-    else
-        toShareableElementData(this)->~ShareableElementData();
-}
-#else
 void ElementData::destroy()
 {
     if (m_isUnique)
@@ -89,7 +80,6 @@
     else
         delete toShareableElementData(this);
 }
-#endif
 
 PassRefPtr<UniqueElementData> ElementData::makeUniqueCopy() const
 {
@@ -117,19 +107,6 @@
     return true;
 }
 
-void ElementData::trace(Visitor* visitor)
-{
-    if (m_isUnique)
-        toUniqueElementData(this)->traceAfterDispatch(visitor);
-    else
-        toShareableElementData(this)->traceAfterDispatch(visitor);
-}
-
-void ElementData::traceAfterDispatch(Visitor* visitor)
-{
-    visitor->trace(m_inlineStyle);
-}
-
 ShareableElementData::ShareableElementData(const Vector<Attribute>& attributes)
     : ElementData(attributes.size())
 {
@@ -195,9 +172,4 @@
     return adoptRef(new (slot) ShareableElementData(*this));
 }
 
-void UniqueElementData::traceAfterDispatch(Visitor* visitor)
-{
-    ElementData::traceAfterDispatch(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/ElementData.h b/sky/engine/core/dom/ElementData.h
index 1113e06..0e14fcc 100644
--- a/sky/engine/core/dom/ElementData.h
+++ b/sky/engine/core/dom/ElementData.h
@@ -71,9 +71,6 @@
 
     bool isUnique() const { return m_isUnique; }
 
-    void traceAfterDispatch(Visitor*);
-    void trace(Visitor*);
-
 protected:
     ElementData();
     explicit ElementData(unsigned arraySize);
@@ -116,8 +113,6 @@
     explicit ShareableElementData(const UniqueElementData&);
     ~ShareableElementData();
 
-    void traceAfterDispatch(Visitor* visitor) { ElementData::traceAfterDispatch(visitor); }
-
     // Add support for placement new as ShareableElementData is not allocated
     // with a fixed size. Instead the allocated memory size is computed based on
     // the number of attributes. This requires us to use Heap::allocate directly
@@ -153,8 +148,6 @@
     explicit UniqueElementData(const ShareableElementData&);
     explicit UniqueElementData(const UniqueElementData&);
 
-    void traceAfterDispatch(Visitor*);
-
     AttributeVector m_attributeVector;
 };
 
diff --git a/sky/engine/core/dom/ElementDataCache.cpp b/sky/engine/core/dom/ElementDataCache.cpp
index 912f623..1da617d 100644
--- a/sky/engine/core/dom/ElementDataCache.cpp
+++ b/sky/engine/core/dom/ElementDataCache.cpp
@@ -65,11 +65,4 @@
 {
 }
 
-void ElementDataCache::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_shareableElementDataCache);
-#endif
-}
-
 }
diff --git a/sky/engine/core/dom/ElementDataCache.h b/sky/engine/core/dom/ElementDataCache.h
index d94a1f6..fa041ae 100644
--- a/sky/engine/core/dom/ElementDataCache.h
+++ b/sky/engine/core/dom/ElementDataCache.h
@@ -47,8 +47,6 @@
 
     PassRefPtr<ShareableElementData> cachedShareableElementDataWithAttributes(const Vector<Attribute>&);
 
-    void trace(Visitor*);
-
 private:
     ElementDataCache();
 
diff --git a/sky/engine/core/dom/MutationObserver.cpp b/sky/engine/core/dom/MutationObserver.cpp
index 9f146bd..59fa6e3 100644
--- a/sky/engine/core/dom/MutationObserver.cpp
+++ b/sky/engine/core/dom/MutationObserver.cpp
@@ -267,12 +267,4 @@
     }
 }
 
-void MutationObserver::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_records);
-    visitor->trace(m_registrations);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/MutationObserver.h b/sky/engine/core/dom/MutationObserver.h
index b2cad0a..b62c5da 100644
--- a/sky/engine/core/dom/MutationObserver.h
+++ b/sky/engine/core/dom/MutationObserver.h
@@ -96,8 +96,6 @@
 
     HashSet<RawPtr<Node> > getObservedNodes() const;
 
-    void trace(Visitor*);
-
 private:
     struct ObserverLessThan;
 
diff --git a/sky/engine/core/dom/MutationObserverInterestGroup.cpp b/sky/engine/core/dom/MutationObserverInterestGroup.cpp
index f8ba117..93131c8 100644
--- a/sky/engine/core/dom/MutationObserverInterestGroup.cpp
+++ b/sky/engine/core/dom/MutationObserverInterestGroup.cpp
@@ -83,11 +83,4 @@
     }
 }
 
-void MutationObserverInterestGroup::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_observers);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/MutationObserverInterestGroup.h b/sky/engine/core/dom/MutationObserverInterestGroup.h
index 4e9eb61..1e385fd 100644
--- a/sky/engine/core/dom/MutationObserverInterestGroup.h
+++ b/sky/engine/core/dom/MutationObserverInterestGroup.h
@@ -71,8 +71,6 @@
     bool isOldValueRequested();
     void enqueueMutationRecord(PassRefPtr<MutationRecord>);
 
-    void trace(Visitor*);
-
 private:
     static PassOwnPtr<MutationObserverInterestGroup> createIfNeeded(Node& target, MutationObserver::MutationType, MutationRecordDeliveryOptions oldValueFlag, const QualifiedName* attributeName = 0);
     MutationObserverInterestGroup(HashMap<RawPtr<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationRecordDeliveryOptions oldValueFlag);
diff --git a/sky/engine/core/dom/MutationRecord.cpp b/sky/engine/core/dom/MutationRecord.cpp
index 6115b02..44e5504 100644
--- a/sky/engine/core/dom/MutationRecord.cpp
+++ b/sky/engine/core/dom/MutationRecord.cpp
@@ -53,16 +53,6 @@
     {
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_target);
-        visitor->trace(m_addedNodes);
-        visitor->trace(m_removedNodes);
-        visitor->trace(m_previousSibling);
-        visitor->trace(m_nextSibling);
-        MutationRecord::trace(visitor);
-    }
-
 private:
     virtual const AtomicString& type() override;
     virtual Node* target() override { return m_target.get(); }
@@ -86,14 +76,6 @@
     {
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_target);
-        visitor->trace(m_addedNodes);
-        visitor->trace(m_removedNodes);
-        MutationRecord::trace(visitor);
-    }
-
 private:
     virtual Node* target() override { return m_target.get(); }
     virtual String oldValue() override { return m_oldValue; }
@@ -146,12 +128,6 @@
     {
     }
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_record);
-        MutationRecord::trace(visitor);
-    }
-
 private:
     virtual const AtomicString& type() override { return m_record->type(); }
     virtual Node* target() override { return m_record->target(); }
diff --git a/sky/engine/core/dom/MutationRecord.h b/sky/engine/core/dom/MutationRecord.h
index cc89d46..c6bd983 100644
--- a/sky/engine/core/dom/MutationRecord.h
+++ b/sky/engine/core/dom/MutationRecord.h
@@ -70,8 +70,6 @@
 
     virtual String oldValue() { return String(); }
 
-    virtual void trace(Visitor*) { }
-
 };
 
 } // namespace blink
diff --git a/sky/engine/core/dom/Node.h b/sky/engine/core/dom/Node.h
index a6214d2..01dd2fe 100644
--- a/sky/engine/core/dom/Node.h
+++ b/sky/engine/core/dom/Node.h
@@ -98,10 +98,7 @@
         : m_renderer(renderer)
     { }
 
-protected:
-    // Oilpan: This member is traced in NodeRareData.
-    // FIXME: Can we add traceAfterDispatch and finalizeGarbageCollectedObject
-    // to NodeRareDataBase, and make m_renderer Member<>?
+private:
     RenderObject* m_renderer;
 };
 
diff --git a/sky/engine/core/dom/NodeList.h b/sky/engine/core/dom/NodeList.h
index a609985..03781d7 100644
--- a/sky/engine/core/dom/NodeList.h
+++ b/sky/engine/core/dom/NodeList.h
@@ -46,8 +46,6 @@
 
     virtual Node* virtualOwnerNode() const { return 0; }
 
-    virtual void trace(Visitor*) { }
-
 protected:
     NodeList()
     {
diff --git a/sky/engine/core/dom/NodeRareData.cpp b/sky/engine/core/dom/NodeRareData.cpp
index 66c62a7..dfaf796 100644
--- a/sky/engine/core/dom/NodeRareData.cpp
+++ b/sky/engine/core/dom/NodeRareData.cpp
@@ -46,29 +46,4 @@
 
 COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);
 
-void NodeRareData::traceAfterDispatch(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_renderer);
-#endif
-    visitor->trace(m_mutationObserverData);
-}
-
-void NodeRareData::trace(Visitor* visitor)
-{
-    if (m_isElementRareData)
-        static_cast<ElementRareData*>(this)->traceAfterDispatch(visitor);
-    else
-        traceAfterDispatch(visitor);
-}
-
-void NodeRareData::finalizeGarbageCollectedObject()
-{
-    RELEASE_ASSERT(!renderer());
-    if (m_isElementRareData)
-        static_cast<ElementRareData*>(this)->~ElementRareData();
-    else
-        this->~NodeRareData();
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/NodeRareData.h b/sky/engine/core/dom/NodeRareData.h
index 3f34fc2..725261c 100644
--- a/sky/engine/core/dom/NodeRareData.h
+++ b/sky/engine/core/dom/NodeRareData.h
@@ -43,14 +43,6 @@
         return adoptPtr(new NodeMutationObserverData);
     }
 
-    void trace(Visitor* visitor)
-    {
-#if ENABLE(OILPAN)
-        visitor->trace(registry);
-        visitor->trace(transientRegistry);
-#endif
-    }
-
 private:
     NodeMutationObserverData() { }
 };
@@ -76,11 +68,6 @@
     void setElementFlag(ElementFlags mask, bool value) { m_elementFlags = (m_elementFlags & ~mask) | (-(int32_t)value & mask); }
     void clearElementFlag(ElementFlags mask) { m_elementFlags &= ~mask; }
 
-    void trace(Visitor*);
-
-    void traceAfterDispatch(Visitor*);
-    void finalizeGarbageCollectedObject();
-
 protected:
     explicit NodeRareData(RenderObject* renderer)
         : NodeRareDataBase(renderer)
diff --git a/sky/engine/core/dom/Position.cpp b/sky/engine/core/dom/Position.cpp
index 1567b40..e4fc0b8 100644
--- a/sky/engine/core/dom/Position.cpp
+++ b/sky/engine/core/dom/Position.cpp
@@ -1162,11 +1162,6 @@
     return primaryDirection;
 }
 
-void Position::trace(Visitor* visitor)
-{
-    visitor->trace(m_anchorNode);
-}
-
 void Position::debugPosition(const char* msg) const
 {
     if (isNull())
diff --git a/sky/engine/core/dom/Position.h b/sky/engine/core/dom/Position.h
index d4ac550..d84eb85 100644
--- a/sky/engine/core/dom/Position.h
+++ b/sky/engine/core/dom/Position.h
@@ -198,8 +198,6 @@
     void showTreeForThis() const;
 #endif
 
-    void trace(Visitor*);
-
 private:
     int offsetForPositionAfterAnchor() const;
 
diff --git a/sky/engine/core/dom/Range.cpp b/sky/engine/core/dom/Range.cpp
index 907c4ed..a246715 100644
--- a/sky/engine/core/dom/Range.cpp
+++ b/sky/engine/core/dom/Range.cpp
@@ -1527,13 +1527,6 @@
     return result;
 }
 
-void Range::trace(Visitor* visitor)
-{
-    visitor->trace(m_ownerDocument);
-    visitor->trace(m_start);
-    visitor->trace(m_end);
-}
-
 } // namespace blink
 
 #ifndef NDEBUG
diff --git a/sky/engine/core/dom/Range.h b/sky/engine/core/dom/Range.h
index 011b1f8..530cb0c 100644
--- a/sky/engine/core/dom/Range.h
+++ b/sky/engine/core/dom/Range.h
@@ -139,8 +139,6 @@
     void formatForDebugger(char* buffer, unsigned length) const;
 #endif
 
-    void trace(Visitor*);
-
 private:
     explicit Range(Document&);
     Range(Document&, Node* startContainer, int startOffset, Node* endContainer, int endOffset);
diff --git a/sky/engine/core/dom/RangeBoundaryPoint.h b/sky/engine/core/dom/RangeBoundaryPoint.h
index b09c760..8612a6c 100644
--- a/sky/engine/core/dom/RangeBoundaryPoint.h
+++ b/sky/engine/core/dom/RangeBoundaryPoint.h
@@ -58,8 +58,6 @@
     void invalidateOffset() const;
     void ensureOffsetIsValid() const;
 
-    void trace(Visitor*);
-
 private:
     static const int invalidOffset = -1;
 
@@ -182,12 +180,6 @@
     m_offsetInContainer = invalidOffset;
 }
 
-inline void RangeBoundaryPoint::trace(Visitor* visitor)
-{
-    visitor->trace(m_containerNode);
-    visitor->trace(m_childBeforeBoundary);
-}
-
 inline bool operator==(const RangeBoundaryPoint& a, const RangeBoundaryPoint& b)
 {
     if (a.container() != b.container())
diff --git a/sky/engine/core/dom/RequestAnimationFrameCallback.h b/sky/engine/core/dom/RequestAnimationFrameCallback.h
index f5bb51a..6e813c0 100644
--- a/sky/engine/core/dom/RequestAnimationFrameCallback.h
+++ b/sky/engine/core/dom/RequestAnimationFrameCallback.h
@@ -38,7 +38,6 @@
 class RequestAnimationFrameCallback {
 public:
     virtual ~RequestAnimationFrameCallback() { }
-    virtual void trace(Visitor*) { }
     virtual void handleEvent(double highResTimeMs) = 0;
 
     int m_id;
diff --git a/sky/engine/core/dom/ScriptedAnimationController.cpp b/sky/engine/core/dom/ScriptedAnimationController.cpp
index b1cc13e..9a6e3ba 100644
--- a/sky/engine/core/dom/ScriptedAnimationController.cpp
+++ b/sky/engine/core/dom/ScriptedAnimationController.cpp
@@ -53,18 +53,6 @@
 {
 }
 
-void ScriptedAnimationController::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_callbacks);
-    visitor->trace(m_callbacksToInvoke);
-    visitor->trace(m_document);
-    visitor->trace(m_eventQueue);
-    visitor->trace(m_mediaQueryListListeners);
-    visitor->trace(m_perFrameEvents);
-#endif
-}
-
 void ScriptedAnimationController::suspend()
 {
     ++m_suspendCount;
diff --git a/sky/engine/core/dom/ScriptedAnimationController.h b/sky/engine/core/dom/ScriptedAnimationController.h
index f78fd5f..079f42e 100644
--- a/sky/engine/core/dom/ScriptedAnimationController.h
+++ b/sky/engine/core/dom/ScriptedAnimationController.h
@@ -48,7 +48,6 @@
         return adoptRef(new ScriptedAnimationController(document));
     }
     ~ScriptedAnimationController();
-    void trace(Visitor*);
     void clearDocumentPointer() { m_document = nullptr; }
 
     typedef int CallbackId;
diff --git a/sky/engine/core/dom/ShadowTreeStyleSheetCollection.h b/sky/engine/core/dom/ShadowTreeStyleSheetCollection.h
index e10b67d..0797f93 100644
--- a/sky/engine/core/dom/ShadowTreeStyleSheetCollection.h
+++ b/sky/engine/core/dom/ShadowTreeStyleSheetCollection.h
@@ -44,11 +44,6 @@
 
     void updateActiveStyleSheets(StyleEngine*, StyleResolverUpdateMode);
 
-    virtual void trace(Visitor* visitor) override
-    {
-        TreeScopeStyleSheetCollection::trace(visitor);
-    }
-
 private:
     void collectStyleSheets(StyleEngine*, StyleSheetCollection&);
 };
diff --git a/sky/engine/core/dom/StaticNodeList.h b/sky/engine/core/dom/StaticNodeList.h
index 66fdaa4..ba72f21 100644
--- a/sky/engine/core/dom/StaticNodeList.h
+++ b/sky/engine/core/dom/StaticNodeList.h
@@ -55,8 +55,6 @@
     virtual unsigned length() const override;
     virtual NodeType* item(unsigned index) const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     ptrdiff_t AllocationSize()
     {
@@ -98,13 +96,6 @@
     return 0;
 }
 
-template <typename NodeType>
-void StaticNodeTypeList<NodeType>::trace(Visitor* visitor)
-{
-    visitor->trace(m_nodes);
-    NodeList::trace(visitor);
-}
-
 } // namespace blink
 
 #endif // StaticNodeList_h
diff --git a/sky/engine/core/dom/StyleElement.cpp b/sky/engine/core/dom/StyleElement.cpp
index 1a114b6..985b0ab 100644
--- a/sky/engine/core/dom/StyleElement.cpp
+++ b/sky/engine/core/dom/StyleElement.cpp
@@ -164,9 +164,4 @@
     document.styleResolverMayHaveChanged();
 }
 
-void StyleElement::trace(Visitor* visitor)
-{
-    visitor->trace(m_sheet);
-}
-
 }
diff --git a/sky/engine/core/dom/StyleElement.h b/sky/engine/core/dom/StyleElement.h
index d200861..4bfca16 100644
--- a/sky/engine/core/dom/StyleElement.h
+++ b/sky/engine/core/dom/StyleElement.h
@@ -35,7 +35,6 @@
 public:
     StyleElement(Document*, bool createdByParser);
     virtual ~StyleElement();
-    virtual void trace(Visitor*);
 
 protected:
     virtual const AtomicString& type() const = 0;
diff --git a/sky/engine/core/dom/StyleEngine.cpp b/sky/engine/core/dom/StyleEngine.cpp
index 659d823..ca4629e 100644
--- a/sky/engine/core/dom/StyleEngine.cpp
+++ b/sky/engine/core/dom/StyleEngine.cpp
@@ -512,20 +512,4 @@
     document().setNeedsStyleRecalc(SubtreeStyleChange);
 }
 
-void StyleEngine::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_document);
-    visitor->trace(m_authorStyleSheets);
-    visitor->trace(m_documentStyleSheetCollection);
-    visitor->trace(m_styleSheetCollectionMap);
-    visitor->trace(m_scopedStyleResolvers);
-    visitor->trace(m_resolver);
-    visitor->trace(m_fontSelector);
-    visitor->trace(m_textToSheetCache);
-    visitor->trace(m_sheetToTextCache);
-#endif
-    CSSFontSelectorClient::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/dom/StyleEngine.h b/sky/engine/core/dom/StyleEngine.h
index 591ffca..aca8a6e 100644
--- a/sky/engine/core/dom/StyleEngine.h
+++ b/sky/engine/core/dom/StyleEngine.h
@@ -141,8 +141,6 @@
     bool hasOnlyScopedResolverForDocument() const { return m_scopedStyleResolvers.size() == 1; }
     void collectScopedStyleFeaturesTo(RuleFeatureSet&) const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     // CSSFontSelectorClient implementation.
     virtual void fontsNeedUpdate(CSSFontSelector*) override;
diff --git a/sky/engine/core/dom/StyleSheetCollection.cpp b/sky/engine/core/dom/StyleSheetCollection.cpp
index 3393653..a95ef1a 100644
--- a/sky/engine/core/dom/StyleSheetCollection.cpp
+++ b/sky/engine/core/dom/StyleSheetCollection.cpp
@@ -67,10 +67,4 @@
     m_styleSheetsForStyleSheetList.append(sheet);
 }
 
-void StyleSheetCollection::trace(Visitor* visitor)
-{
-    visitor->trace(m_activeAuthorStyleSheets);
-    visitor->trace(m_styleSheetsForStyleSheetList);
-}
-
 }
diff --git a/sky/engine/core/dom/StyleSheetCollection.h b/sky/engine/core/dom/StyleSheetCollection.h
index 6f26cc3..18263df 100644
--- a/sky/engine/core/dom/StyleSheetCollection.h
+++ b/sky/engine/core/dom/StyleSheetCollection.h
@@ -59,8 +59,6 @@
     void appendActiveStyleSheet(CSSStyleSheet*);
     void appendSheetForList(StyleSheet*);
 
-    virtual void trace(Visitor*);
-
 protected:
     Vector<RefPtr<StyleSheet> > m_styleSheetsForStyleSheetList;
     Vector<RefPtr<CSSStyleSheet> > m_activeAuthorStyleSheets;
diff --git a/sky/engine/core/dom/TemplateContentDocumentFragment.h b/sky/engine/core/dom/TemplateContentDocumentFragment.h
index 07d637f..7cbecae 100644
--- a/sky/engine/core/dom/TemplateContentDocumentFragment.h
+++ b/sky/engine/core/dom/TemplateContentDocumentFragment.h
@@ -43,12 +43,6 @@
     void clearHost() { m_host = nullptr; }
 #endif
 
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_host);
-        DocumentFragment::trace(visitor);
-    }
-
 private:
     TemplateContentDocumentFragment(Document& document, Element* host)
         : DocumentFragment(&document, CreateDocumentFragment)
diff --git a/sky/engine/core/dom/Touch.cpp b/sky/engine/core/dom/Touch.cpp
index 2afc40d..95937e9 100644
--- a/sky/engine/core/dom/Touch.cpp
+++ b/sky/engine/core/dom/Touch.cpp
@@ -64,9 +64,4 @@
     return adoptRef(new Touch(eventTarget, m_identifier, m_clientPos, m_screenPos, m_pagePos, m_radius, m_rotationAngle, m_force, m_absoluteLocation));
 }
 
-void Touch::trace(Visitor* visitor)
-{
-    visitor->trace(m_target);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/Touch.h b/sky/engine/core/dom/Touch.h
index 91ad6da..e0e66a3 100644
--- a/sky/engine/core/dom/Touch.h
+++ b/sky/engine/core/dom/Touch.h
@@ -70,8 +70,6 @@
     const FloatPoint& screenLocation() const { return m_screenPos; }
     PassRefPtr<Touch> cloneWithNewTarget(EventTarget*) const;
 
-    void trace(Visitor*);
-
 private:
     Touch(LocalFrame* frame, EventTarget* target, unsigned identifier,
         const FloatPoint& screenPos, const FloatPoint& pagePos,
diff --git a/sky/engine/core/dom/TouchList.cpp b/sky/engine/core/dom/TouchList.cpp
index effe69a..08b9664 100644
--- a/sky/engine/core/dom/TouchList.cpp
+++ b/sky/engine/core/dom/TouchList.cpp
@@ -41,9 +41,4 @@
     return const_cast<TouchList*>(this)->item(index);
 }
 
-void TouchList::trace(Visitor* visitor)
-{
-    visitor->trace(m_values);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/TouchList.h b/sky/engine/core/dom/TouchList.h
index 5489d86..816ca7a 100644
--- a/sky/engine/core/dom/TouchList.h
+++ b/sky/engine/core/dom/TouchList.h
@@ -54,8 +54,6 @@
 
     void append(const PassRefPtr<Touch> touch) { m_values.append(touch); }
 
-    void trace(Visitor*);
-
 private:
     TouchList()
     {
diff --git a/sky/engine/core/dom/TreeScope.cpp b/sky/engine/core/dom/TreeScope.cpp
index c34be15..de3f429 100644
--- a/sky/engine/core/dom/TreeScope.cpp
+++ b/sky/engine/core/dom/TreeScope.cpp
@@ -433,16 +433,4 @@
     }
 }
 
-void TreeScope::trace(Visitor* visitor)
-{
-    visitor->trace(m_rootNode);
-    visitor->trace(m_document);
-    visitor->trace(m_parentTreeScope);
-    visitor->trace(m_selection);
-    visitor->trace(m_elementsById);
-    visitor->trace(m_imageMapsByName);
-    visitor->trace(m_labelsByForAttribute);
-    visitor->trace(m_scopedStyleResolver);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/TreeScope.h b/sky/engine/core/dom/TreeScope.h
index fdf303f..90a3537 100644
--- a/sky/engine/core/dom/TreeScope.h
+++ b/sky/engine/core/dom/TreeScope.h
@@ -113,8 +113,6 @@
 
     Element* getElementByAccessKey(const String& key) const;
 
-    virtual void trace(Visitor*);
-
     ScopedStyleResolver* scopedStyleResolver() const { return m_scopedStyleResolver.get(); }
     ScopedStyleResolver& ensureScopedStyleResolver();
     void clearScopedStyleResolver();
diff --git a/sky/engine/core/dom/TreeScopeStyleSheetCollection.cpp b/sky/engine/core/dom/TreeScopeStyleSheetCollection.cpp
index 492d30c..9ebc45a 100644
--- a/sky/engine/core/dom/TreeScopeStyleSheetCollection.cpp
+++ b/sky/engine/core/dom/TreeScopeStyleSheetCollection.cpp
@@ -169,11 +169,4 @@
     m_usesRemUnits = styleSheetsUseRemUnits(m_activeAuthorStyleSheets);
 }
 
-void TreeScopeStyleSheetCollection::trace(Visitor* visitor)
-{
-    visitor->trace(m_treeScope);
-    visitor->trace(m_styleSheetCandidateNodes);
-    StyleSheetCollection::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/dom/TreeScopeStyleSheetCollection.h b/sky/engine/core/dom/TreeScopeStyleSheetCollection.h
index 90e8d3a..db06ff3 100644
--- a/sky/engine/core/dom/TreeScopeStyleSheetCollection.h
+++ b/sky/engine/core/dom/TreeScopeStyleSheetCollection.h
@@ -58,8 +58,6 @@
 
     void clearMediaQueryRuleSetStyleSheets();
 
-    virtual void trace(Visitor*) override;
-
 protected:
     explicit TreeScopeStyleSheetCollection(TreeScope&);
 
diff --git a/sky/engine/core/dom/UserActionElementSet.cpp b/sky/engine/core/dom/UserActionElementSet.cpp
index 6f6e581..eac4bf0 100644
--- a/sky/engine/core/dom/UserActionElementSet.cpp
+++ b/sky/engine/core/dom/UserActionElementSet.cpp
@@ -118,11 +118,4 @@
     m_elements.add(element, flags);
 }
 
-void UserActionElementSet::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_elements);
-#endif
-}
-
 }
diff --git a/sky/engine/core/dom/UserActionElementSet.h b/sky/engine/core/dom/UserActionElementSet.h
index 3169b52..da48b95 100644
--- a/sky/engine/core/dom/UserActionElementSet.h
+++ b/sky/engine/core/dom/UserActionElementSet.h
@@ -58,8 +58,6 @@
     void documentDidRemoveLastRef();
 #endif
 
-    void trace(Visitor*);
-
 private:
     enum ElementFlags {
         IsActiveFlag      = 1 ,
diff --git a/sky/engine/core/dom/custom/CustomElementCallbackQueue.cpp b/sky/engine/core/dom/custom/CustomElementCallbackQueue.cpp
index 8ce8a80..f0700f4 100644
--- a/sky/engine/core/dom/custom/CustomElementCallbackQueue.cpp
+++ b/sky/engine/core/dom/custom/CustomElementCallbackQueue.cpp
@@ -72,9 +72,4 @@
     return didWork;
 }
 
-void CustomElementCallbackQueue::trace(Visitor* visitor)
-{
-    visitor->trace(m_element);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementCallbackQueue.h b/sky/engine/core/dom/custom/CustomElementCallbackQueue.h
index bbed841..ad0f77e 100644
--- a/sky/engine/core/dom/custom/CustomElementCallbackQueue.h
+++ b/sky/engine/core/dom/custom/CustomElementCallbackQueue.h
@@ -65,8 +65,6 @@
     void append(PassOwnPtr<CustomElementProcessingStep> invocation) { m_queue.append(invocation); }
     bool inCreatedCallback() const { return m_inCreatedCallback; }
 
-    void trace(Visitor*);
-
 private:
     explicit CustomElementCallbackQueue(PassRefPtr<Element>);
 
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.cpp b/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.cpp
index d7c5fa6..e1019c7 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.cpp
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.cpp
@@ -83,11 +83,4 @@
     m_phase = Quiescent;
 }
 
-void CustomElementMicrotaskDispatcher::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_elements);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.h b/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.h
index 23473a3..cde46ca 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.h
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskDispatcher.h
@@ -28,8 +28,6 @@
 
     bool elementQueueIsEmpty() { return m_elements.isEmpty(); }
 
-    void trace(Visitor*);
-
 private:
     CustomElementMicrotaskDispatcher();
 
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.cpp b/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.cpp
index 7634b0c..18ef654 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.cpp
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.cpp
@@ -87,11 +87,4 @@
     return FinishedProcessing;
 }
 
-void CustomElementMicrotaskImportStep::trace(Visitor* visitor)
-{
-    visitor->trace(m_import);
-    visitor->trace(m_queue);
-    CustomElementMicrotaskStep::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.h b/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.h
index 27b2bdc..f8f5dac 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.h
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskImportStep.h
@@ -63,8 +63,6 @@
     WeakPtr<CustomElementMicrotaskImportStep> weakPtr() { return m_weakFactory.createWeakPtr(); }
 #endif
 
-    virtual void trace(Visitor*) override;
-
 private:
     explicit CustomElementMicrotaskImportStep(HTMLImportChild*);
 
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.cpp b/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.cpp
index 3bcbfa9..74cd36c 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.cpp
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.cpp
@@ -17,9 +17,4 @@
     m_inDispatch = false;
 }
 
-void CustomElementMicrotaskQueueBase::trace(Visitor* visitor)
-{
-    visitor->trace(m_queue);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.h b/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.h
index 07ee67b..54e2253 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.h
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskQueueBase.h
@@ -24,8 +24,6 @@
     bool isEmpty() const { return m_queue.isEmpty(); }
     void dispatch();
 
-    void trace(Visitor*);
-
 protected:
     CustomElementMicrotaskQueueBase() : m_inDispatch(false) { }
     virtual void doDispatch() = 0;
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.cpp b/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.cpp
index 3e5c6a1..94221d3 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.cpp
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.cpp
@@ -58,11 +58,4 @@
     return CustomElementMicrotaskStep::FinishedProcessing;
 }
 
-void CustomElementMicrotaskResolutionStep::trace(Visitor* visitor)
-{
-    visitor->trace(m_context);
-    visitor->trace(m_element);
-    CustomElementMicrotaskStep::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.h b/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.h
index 452d695..607e149 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.h
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskResolutionStep.h
@@ -50,8 +50,6 @@
 
     virtual ~CustomElementMicrotaskResolutionStep();
 
-    virtual void trace(Visitor*) override;
-
 private:
     CustomElementMicrotaskResolutionStep(PassRefPtr<CustomElementRegistrationContext>, PassRefPtr<Element>, const CustomElementDescriptor&);
 
diff --git a/sky/engine/core/dom/custom/CustomElementMicrotaskStep.h b/sky/engine/core/dom/custom/CustomElementMicrotaskStep.h
index 50ae45d..6871c8f 100644
--- a/sky/engine/core/dom/custom/CustomElementMicrotaskStep.h
+++ b/sky/engine/core/dom/custom/CustomElementMicrotaskStep.h
@@ -48,8 +48,6 @@
     };
 
     virtual Result process() = 0;
-
-    virtual void trace(Visitor*) { }
 };
 
 }
diff --git a/sky/engine/core/dom/custom/CustomElementObserver.h b/sky/engine/core/dom/custom/CustomElementObserver.h
index 2f88bd6..cf0350e 100644
--- a/sky/engine/core/dom/custom/CustomElementObserver.h
+++ b/sky/engine/core/dom/custom/CustomElementObserver.h
@@ -47,8 +47,6 @@
     static void notifyElementDidFinishParsingChildren(Element*);
     static void notifyElementWasDestroyed(Element*);
 
-    virtual void trace(Visitor*) { }
-
 protected:
     CustomElementObserver() { }
 
diff --git a/sky/engine/core/dom/custom/CustomElementRegistrationContext.cpp b/sky/engine/core/dom/custom/CustomElementRegistrationContext.cpp
index 4963a73..8b38625 100644
--- a/sky/engine/core/dom/custom/CustomElementRegistrationContext.cpp
+++ b/sky/engine/core/dom/custom/CustomElementRegistrationContext.cpp
@@ -144,9 +144,4 @@
     context->didGiveTypeExtension(element, type);
 }
 
-void CustomElementRegistrationContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_candidates);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementRegistrationContext.h b/sky/engine/core/dom/custom/CustomElementRegistrationContext.h
index b25936f..28ac838 100644
--- a/sky/engine/core/dom/custom/CustomElementRegistrationContext.h
+++ b/sky/engine/core/dom/custom/CustomElementRegistrationContext.h
@@ -66,8 +66,6 @@
 
     void resolve(Element*, const CustomElementDescriptor&);
 
-    void trace(Visitor*);
-
 protected:
     CustomElementRegistrationContext();
 
diff --git a/sky/engine/core/dom/custom/CustomElementScheduler.cpp b/sky/engine/core/dom/custom/CustomElementScheduler.cpp
index 091272c..2efc11b 100644
--- a/sky/engine/core/dom/custom/CustomElementScheduler.cpp
+++ b/sky/engine/core/dom/custom/CustomElementScheduler.cpp
@@ -156,11 +156,4 @@
     return callbackQueue;
 }
 
-void CustomElementScheduler::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_elementCallbackQueueMap);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/custom/CustomElementScheduler.h b/sky/engine/core/dom/custom/CustomElementScheduler.h
index 2d4479c..1ae8629 100644
--- a/sky/engine/core/dom/custom/CustomElementScheduler.h
+++ b/sky/engine/core/dom/custom/CustomElementScheduler.h
@@ -62,8 +62,6 @@
     static void microtaskDispatcherDidFinish();
     static void callbackDispatcherDidFinish();
 
-    void trace(Visitor*);
-
 private:
     CustomElementScheduler() { }
 
diff --git a/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.cpp b/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.cpp
index 046409e..4c385bb 100644
--- a/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.cpp
+++ b/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.cpp
@@ -110,13 +110,4 @@
     return candidates.release();
 }
 
-void CustomElementUpgradeCandidateMap::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_upgradeCandidates);
-    visitor->trace(m_unresolvedDefinitions);
-#endif
-    CustomElementObserver::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.h b/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.h
index fdebebc..2ecfb26 100644
--- a/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.h
+++ b/sky/engine/core/dom/custom/CustomElementUpgradeCandidateMap.h
@@ -55,8 +55,6 @@
     void add(const CustomElementDescriptor&, Element*);
     PassOwnPtr<ElementSet> takeUpgradeCandidatesFor(const CustomElementDescriptor&);
 
-    virtual void trace(Visitor*) override;
-
 private:
     CustomElementUpgradeCandidateMap() { }
 
diff --git a/sky/engine/core/dom/shadow/ContentDistribution.cpp b/sky/engine/core/dom/shadow/ContentDistribution.cpp
index 78a4f5c..0b23a21 100644
--- a/sky/engine/core/dom/shadow/ContentDistribution.cpp
+++ b/sky/engine/core/dom/shadow/ContentDistribution.cpp
@@ -71,12 +71,4 @@
     return at(index - 1).get();
 }
 
-void ContentDistribution::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_nodes);
-    visitor->trace(m_indices);
-#endif
-}
-
 } // namespace blink
diff --git a/sky/engine/core/dom/shadow/ContentDistribution.h b/sky/engine/core/dom/shadow/ContentDistribution.h
index 52294e1..5532561 100644
--- a/sky/engine/core/dom/shadow/ContentDistribution.h
+++ b/sky/engine/core/dom/shadow/ContentDistribution.h
@@ -62,8 +62,6 @@
 
     const Vector<RefPtr<Node> >& nodes() const { return m_nodes; }
 
-    void trace(Visitor*);
-
 private:
     Vector<RefPtr<Node> > m_nodes;
     HashMap<RawPtr<const Node>, size_t> m_indices;
diff --git a/sky/engine/core/dom/shadow/ElementShadow.cpp b/sky/engine/core/dom/shadow/ElementShadow.cpp
index 459dab7..28ceafc 100644
--- a/sky/engine/core/dom/shadow/ElementShadow.cpp
+++ b/sky/engine/core/dom/shadow/ElementShadow.cpp
@@ -315,16 +315,4 @@
     m_nodeToInsertionPoints.clear();
 }
 
-void ElementShadow::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_nodeToInsertionPoints);
-    visitor->trace(m_selectFeatures);
-    // Shadow roots are linked with previous and next pointers which are traced.
-    // It is therefore enough to trace one of the shadow roots here and the
-    // rest will be traced from there.
-    visitor->trace(m_shadowRoots.head());
-#endif
-}
-
 } // namespace
diff --git a/sky/engine/core/dom/shadow/ElementShadow.h b/sky/engine/core/dom/shadow/ElementShadow.h
index 7aa3ded..46d4895 100644
--- a/sky/engine/core/dom/shadow/ElementShadow.h
+++ b/sky/engine/core/dom/shadow/ElementShadow.h
@@ -68,8 +68,6 @@
 
     void didDistributeNode(const Node*, InsertionPoint*);
 
-    void trace(Visitor*);
-
 private:
     ElementShadow();
 
diff --git a/sky/engine/core/dom/shadow/SelectRuleFeatureSet.h b/sky/engine/core/dom/shadow/SelectRuleFeatureSet.h
index d1d80f4..8e9cfaf 100644
--- a/sky/engine/core/dom/shadow/SelectRuleFeatureSet.h
+++ b/sky/engine/core/dom/shadow/SelectRuleFeatureSet.h
@@ -54,8 +54,6 @@
     bool checkSelectorsForClassChange(const SpaceSplitString& changedClasses) const;
     bool checkSelectorsForClassChange(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses) const;
 
-    void trace(Visitor* visitor) { visitor->trace(m_cssRuleFeatureSet); }
-
 private:
     RuleFeatureSet m_cssRuleFeatureSet;
 };
diff --git a/sky/engine/core/dom/shadow/ShadowRoot.cpp b/sky/engine/core/dom/shadow/ShadowRoot.cpp
index ad544f5..3941a1f 100644
--- a/sky/engine/core/dom/shadow/ShadowRoot.cpp
+++ b/sky/engine/core/dom/shadow/ShadowRoot.cpp
@@ -255,13 +255,4 @@
     return m_shadowRootRareData->styleSheets();
 }
 
-void ShadowRoot::trace(Visitor* visitor)
-{
-    visitor->trace(m_prev);
-    visitor->trace(m_next);
-    visitor->trace(m_shadowRootRareData);
-    TreeScope::trace(visitor);
-    DocumentFragment::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/dom/shadow/ShadowRoot.h b/sky/engine/core/dom/shadow/ShadowRoot.h
index 1626034..b98a5a1 100644
--- a/sky/engine/core/dom/shadow/ShadowRoot.h
+++ b/sky/engine/core/dom/shadow/ShadowRoot.h
@@ -99,8 +99,6 @@
 
     StyleSheetList* styleSheets();
 
-    virtual void trace(Visitor*) override;
-
 private:
     ShadowRoot(Document&);
     virtual ~ShadowRoot();
diff --git a/sky/engine/core/editing/AppendNodeCommand.cpp b/sky/engine/core/editing/AppendNodeCommand.cpp
index b2ae37d..6c3830b 100644
--- a/sky/engine/core/editing/AppendNodeCommand.cpp
+++ b/sky/engine/core/editing/AppendNodeCommand.cpp
@@ -58,11 +58,4 @@
     m_node->remove(IGNORE_EXCEPTION);
 }
 
-void AppendNodeCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_parent);
-    visitor->trace(m_node);
-    SimpleEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/AppendNodeCommand.h b/sky/engine/core/editing/AppendNodeCommand.h
index d619531..5324560 100644
--- a/sky/engine/core/editing/AppendNodeCommand.h
+++ b/sky/engine/core/editing/AppendNodeCommand.h
@@ -37,8 +37,6 @@
         return adoptRef(new AppendNodeCommand(parent, node));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     AppendNodeCommand(PassRefPtr<ContainerNode> parent, PassRefPtr<Node>);
 
diff --git a/sky/engine/core/editing/ApplyBlockElementCommand.cpp b/sky/engine/core/editing/ApplyBlockElementCommand.cpp
index 2c717fd..fb70030 100644
--- a/sky/engine/core/editing/ApplyBlockElementCommand.cpp
+++ b/sky/engine/core/editing/ApplyBlockElementCommand.cpp
@@ -238,10 +238,4 @@
     return element.release();
 }
 
-void ApplyBlockElementCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_endOfLastParagraph);
-    CompositeEditCommand::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/editing/ApplyBlockElementCommand.h b/sky/engine/core/editing/ApplyBlockElementCommand.h
index 42c6cac..0acaddb 100644
--- a/sky/engine/core/editing/ApplyBlockElementCommand.h
+++ b/sky/engine/core/editing/ApplyBlockElementCommand.h
@@ -45,8 +45,6 @@
     PassRefPtr<HTMLElement> createBlockElement() const;
     const QualifiedName tagName() const { return m_tagName; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     virtual void doApply() override final;
     virtual void formatRange(const Position& start, const Position& end, const Position& endOfSelection, RefPtr<HTMLElement>&) = 0;
diff --git a/sky/engine/core/editing/Caret.cpp b/sky/engine/core/editing/Caret.cpp
index b03f84e..a953797 100644
--- a/sky/engine/core/editing/Caret.cpp
+++ b/sky/engine/core/editing/Caret.cpp
@@ -109,11 +109,6 @@
     clear();
 }
 
-void DragCaretController::trace(Visitor* visitor)
-{
-    visitor->trace(m_position);
-}
-
 void CaretBase::clearCaretRect()
 {
     m_caretLocalRect = LayoutRect();
diff --git a/sky/engine/core/editing/Caret.h b/sky/engine/core/editing/Caret.h
index d2b0386..7257d2a 100644
--- a/sky/engine/core/editing/Caret.h
+++ b/sky/engine/core/editing/Caret.h
@@ -94,8 +94,6 @@
 
     void nodeWillBeRemoved(Node&);
 
-    void trace(Visitor*);
-
 private:
     DragCaretController();
 
diff --git a/sky/engine/core/editing/CompositeEditCommand.cpp b/sky/engine/core/editing/CompositeEditCommand.cpp
index e4a67a5..e6f03bd 100644
--- a/sky/engine/core/editing/CompositeEditCommand.cpp
+++ b/sky/engine/core/editing/CompositeEditCommand.cpp
@@ -142,17 +142,6 @@
     m_endingRootEditableElement = selection.rootEditableElement();
 }
 
-void EditCommandComposition::trace(Visitor* visitor)
-{
-    visitor->trace(m_document);
-    visitor->trace(m_startingSelection);
-    visitor->trace(m_endingSelection);
-    visitor->trace(m_commands);
-    visitor->trace(m_startingRootEditableElement);
-    visitor->trace(m_endingRootEditableElement);
-    UndoStep::trace(visitor);
-}
-
 CompositeEditCommand::CompositeEditCommand(Document& document)
     : EditCommand(document)
 {
@@ -1078,11 +1067,4 @@
     return node.release();
 }
 
-void CompositeEditCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_commands);
-    visitor->trace(m_composition);
-    EditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/CompositeEditCommand.h b/sky/engine/core/editing/CompositeEditCommand.h
index a376470..fba6dbd 100644
--- a/sky/engine/core/editing/CompositeEditCommand.h
+++ b/sky/engine/core/editing/CompositeEditCommand.h
@@ -55,8 +55,6 @@
     Element* startingRootEditableElement() const { return m_startingRootEditableElement.get(); }
     Element* endingRootEditableElement() const { return m_endingRootEditableElement.get(); }
 
-    virtual void trace(Visitor*) override;
-
 private:
     EditCommandComposition(Document*, const VisibleSelection& startingSelection, const VisibleSelection& endingSelection, EditAction);
 
@@ -83,8 +81,6 @@
     virtual void setShouldRetainAutocorrectionIndicator(bool);
     virtual bool shouldStopCaretBlinking() const { return false; }
 
-    virtual void trace(Visitor*) override;
-
 protected:
     explicit CompositeEditCommand(Document&);
 
diff --git a/sky/engine/core/editing/DOMSelection.h b/sky/engine/core/editing/DOMSelection.h
index 77626be..673c1e7 100644
--- a/sky/engine/core/editing/DOMSelection.h
+++ b/sky/engine/core/editing/DOMSelection.h
@@ -96,8 +96,6 @@
     // Microsoft Selection Object API
     void empty();
 
-    void trace(Visitor* visitor) { visitor->trace(m_treeScope); }
-
 private:
     explicit DOMSelection(const TreeScope*);
 
diff --git a/sky/engine/core/editing/DeleteFromTextNodeCommand.cpp b/sky/engine/core/editing/DeleteFromTextNodeCommand.cpp
index 3e316be..afde38a 100644
--- a/sky/engine/core/editing/DeleteFromTextNodeCommand.cpp
+++ b/sky/engine/core/editing/DeleteFromTextNodeCommand.cpp
@@ -68,10 +68,4 @@
     m_node->insertData(m_offset, m_text, IGNORE_EXCEPTION, CharacterData::DeprecatedRecalcStyleImmediatlelyForEditing);
 }
 
-void DeleteFromTextNodeCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    SimpleEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/DeleteFromTextNodeCommand.h b/sky/engine/core/editing/DeleteFromTextNodeCommand.h
index db53eb3..34b7f69 100644
--- a/sky/engine/core/editing/DeleteFromTextNodeCommand.h
+++ b/sky/engine/core/editing/DeleteFromTextNodeCommand.h
@@ -39,8 +39,6 @@
         return adoptRef(new DeleteFromTextNodeCommand(node, offset, count));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     DeleteFromTextNodeCommand(PassRefPtr<Text>, unsigned offset, unsigned count);
 
diff --git a/sky/engine/core/editing/DeleteSelectionCommand.cpp b/sky/engine/core/editing/DeleteSelectionCommand.cpp
index 4a29796..1f4b0e7 100644
--- a/sky/engine/core/editing/DeleteSelectionCommand.cpp
+++ b/sky/engine/core/editing/DeleteSelectionCommand.cpp
@@ -673,23 +673,4 @@
     return false;
 }
 
-void DeleteSelectionCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_selectionToDelete);
-    visitor->trace(m_upstreamStart);
-    visitor->trace(m_downstreamStart);
-    visitor->trace(m_upstreamEnd);
-    visitor->trace(m_downstreamEnd);
-    visitor->trace(m_endingPosition);
-    visitor->trace(m_leadingWhitespace);
-    visitor->trace(m_trailingWhitespace);
-    visitor->trace(m_startBlock);
-    visitor->trace(m_endBlock);
-    visitor->trace(m_deleteIntoBlockquoteStyle);
-    visitor->trace(m_startRoot);
-    visitor->trace(m_endRoot);
-    visitor->trace(m_temporaryPlaceholder);
-    CompositeEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/DeleteSelectionCommand.h b/sky/engine/core/editing/DeleteSelectionCommand.h
index 2641f13..40bb4cf 100644
--- a/sky/engine/core/editing/DeleteSelectionCommand.h
+++ b/sky/engine/core/editing/DeleteSelectionCommand.h
@@ -43,8 +43,6 @@
         return adoptRef(new DeleteSelectionCommand(selection, smartDelete, mergeBlocksAfterDelete, expandForSpecialElements, sanitizeMarkup));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     DeleteSelectionCommand(Document&, bool smartDelete, bool mergeBlocksAfterDelete, bool expandForSpecialElements, bool santizeMarkup);
     DeleteSelectionCommand(const VisibleSelection&, bool smartDelete, bool mergeBlocksAfterDelete, bool expandForSpecialElements, bool sanitizeMarkup);
diff --git a/sky/engine/core/editing/EditCommand.cpp b/sky/engine/core/editing/EditCommand.cpp
index 0953c4e..a9d4857 100644
--- a/sky/engine/core/editing/EditCommand.cpp
+++ b/sky/engine/core/editing/EditCommand.cpp
@@ -120,12 +120,4 @@
     doApply();
 }
 
-void EditCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_document);
-    visitor->trace(m_startingSelection);
-    visitor->trace(m_endingSelection);
-    visitor->trace(m_parent);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/EditCommand.h b/sky/engine/core/editing/EditCommand.h
index b3b9e92..8e424f4 100644
--- a/sky/engine/core/editing/EditCommand.h
+++ b/sky/engine/core/editing/EditCommand.h
@@ -53,8 +53,6 @@
 
     virtual void doApply() = 0;
 
-    virtual void trace(Visitor*);
-
 protected:
     explicit EditCommand(Document&);
     EditCommand(Document*, const VisibleSelection&, const VisibleSelection&);
diff --git a/sky/engine/core/editing/EditingStyle.cpp b/sky/engine/core/editing/EditingStyle.cpp
index c26490f..1a239bc 100644
--- a/sky/engine/core/editing/EditingStyle.cpp
+++ b/sky/engine/core/editing/EditingStyle.cpp
@@ -165,8 +165,6 @@
     virtual bool valueIsPresentInStyle(HTMLElement*, StylePropertySet*) const;
     virtual void addToStyle(Element*, EditingStyle*) const;
 
-    virtual void trace(Visitor* visitor) { visitor->trace(m_primitiveValue); }
-
 protected:
     HTMLElementEquivalent(CSSPropertyID);
     HTMLElementEquivalent(CSSPropertyID, const HTMLQualifiedName& tagName);
@@ -218,8 +216,6 @@
     virtual bool propertyExistsInStyle(const StylePropertySet*) const override;
     virtual bool valueIsPresentInStyle(HTMLElement*, StylePropertySet*) const override;
 
-    virtual void trace(Visitor* visitor) override { HTMLElementEquivalent::trace(visitor); }
-
 private:
     HTMLTextDecorationEquivalent(CSSValueID primitiveValue, const HTMLQualifiedName& tagName);
 };
@@ -262,8 +258,6 @@
     virtual PassRefPtr<CSSValue> attributeValueAsCSSValue(Element*) const;
     inline const QualifiedName& attributeName() const { return m_attrName; }
 
-    virtual void trace(Visitor* visitor) override { HTMLElementEquivalent::trace(visitor); }
-
 protected:
     HTMLAttributeEquivalent(CSSPropertyID, const HTMLQualifiedName& tagName, const QualifiedName& attrName);
     HTMLAttributeEquivalent(CSSPropertyID, const QualifiedName& attrName);
@@ -1266,11 +1260,6 @@
     return foundDirection;
 }
 
-void EditingStyle::trace(Visitor* visitor)
-{
-    visitor->trace(m_mutableStyle);
-}
-
 static void reconcileTextDecorationProperties(MutableStylePropertySet* style)
 {
     RefPtr<CSSValue> textDecorationsInEffect = style->getPropertyCSSValue(CSSPropertyWebkitTextDecorationsInEffect);
diff --git a/sky/engine/core/editing/EditingStyle.h b/sky/engine/core/editing/EditingStyle.h
index 4c19036..ee12d3a 100644
--- a/sky/engine/core/editing/EditingStyle.h
+++ b/sky/engine/core/editing/EditingStyle.h
@@ -143,8 +143,6 @@
     static PassRefPtr<EditingStyle> styleAtSelectionStart(const VisibleSelection&, bool shouldUseBackgroundColorInEffect = false);
     static WritingDirection textDirectionForSelection(const VisibleSelection&, EditingStyle* typingStyle, bool& hasNestedOrMultipleEmbeddings);
 
-    void trace(Visitor*);
-
 private:
     EditingStyle();
     EditingStyle(ContainerNode*, PropertiesToInclude);
diff --git a/sky/engine/core/editing/Editor.cpp b/sky/engine/core/editing/Editor.cpp
index 7475de4..6205149 100644
--- a/sky/engine/core/editing/Editor.cpp
+++ b/sky/engine/core/editing/Editor.cpp
@@ -851,10 +851,4 @@
     frame().selection().setShouldShowBlockCursor(m_overwriteModeEnabled);
 }
 
-void Editor::trace(Visitor* visitor)
-{
-    visitor->trace(m_lastEditCommand);
-    visitor->trace(m_mark);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/Editor.h b/sky/engine/core/editing/Editor.h
index 3cd623e..cf88356 100644
--- a/sky/engine/core/editing/Editor.h
+++ b/sky/engine/core/editing/Editor.h
@@ -216,8 +216,6 @@
     };
     friend class RevealSelectionScope;
 
-    void trace(Visitor*);
-
 private:
     LocalFrame& m_frame;
     RefPtr<CompositeEditCommand> m_lastEditCommand;
diff --git a/sky/engine/core/editing/FrameSelection.cpp b/sky/engine/core/editing/FrameSelection.cpp
index 58f72e7..1a9309e 100644
--- a/sky/engine/core/editing/FrameSelection.cpp
+++ b/sky/engine/core/editing/FrameSelection.cpp
@@ -1696,16 +1696,6 @@
 
 #endif
 
-void FrameSelection::trace(Visitor* visitor)
-{
-    visitor->trace(m_selection);
-    visitor->trace(m_originalBase);
-    visitor->trace(m_logicalRange);
-    visitor->trace(m_previousCaretNode);
-    visitor->trace(m_typingStyle);
-    VisibleSelection::ChangeObserver::trace(visitor);
-}
-
 void FrameSelection::setCaretRectNeedsUpdate()
 {
     m_caretRectDirty = true;
diff --git a/sky/engine/core/editing/FrameSelection.h b/sky/engine/core/editing/FrameSelection.h
index 7582f18..aa777d9 100644
--- a/sky/engine/core/editing/FrameSelection.h
+++ b/sky/engine/core/editing/FrameSelection.h
@@ -210,8 +210,6 @@
     // VisibleSelection::ChangeObserver interface.
     virtual void didChangeVisibleSelection() override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     explicit FrameSelection(LocalFrame*);
 
diff --git a/sky/engine/core/editing/InsertIntoTextNodeCommand.cpp b/sky/engine/core/editing/InsertIntoTextNodeCommand.cpp
index 9ef008f..b77e168 100644
--- a/sky/engine/core/editing/InsertIntoTextNodeCommand.cpp
+++ b/sky/engine/core/editing/InsertIntoTextNodeCommand.cpp
@@ -61,10 +61,4 @@
     m_node->deleteData(m_offset, m_text.length(), IGNORE_EXCEPTION, CharacterData::DeprecatedRecalcStyleImmediatlelyForEditing);
 }
 
-void InsertIntoTextNodeCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    SimpleEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/InsertIntoTextNodeCommand.h b/sky/engine/core/editing/InsertIntoTextNodeCommand.h
index 581e4dd..681db84 100644
--- a/sky/engine/core/editing/InsertIntoTextNodeCommand.h
+++ b/sky/engine/core/editing/InsertIntoTextNodeCommand.h
@@ -39,8 +39,6 @@
         return adoptRef(new InsertIntoTextNodeCommand(node, offset, text));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     InsertIntoTextNodeCommand(PassRefPtr<Text> node, unsigned offset, const String& text);
 
diff --git a/sky/engine/core/editing/InsertNodeBeforeCommand.cpp b/sky/engine/core/editing/InsertNodeBeforeCommand.cpp
index b550844..74e34ec 100644
--- a/sky/engine/core/editing/InsertNodeBeforeCommand.cpp
+++ b/sky/engine/core/editing/InsertNodeBeforeCommand.cpp
@@ -63,11 +63,4 @@
     m_insertChild->remove(IGNORE_EXCEPTION);
 }
 
-void InsertNodeBeforeCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_insertChild);
-    visitor->trace(m_refChild);
-    SimpleEditCommand::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/editing/InsertNodeBeforeCommand.h b/sky/engine/core/editing/InsertNodeBeforeCommand.h
index ecfb0fe..daa224c 100644
--- a/sky/engine/core/editing/InsertNodeBeforeCommand.h
+++ b/sky/engine/core/editing/InsertNodeBeforeCommand.h
@@ -38,8 +38,6 @@
         return adoptRef(new InsertNodeBeforeCommand(childToInsert, childToInsertBefore, shouldAssumeContentIsAlwaysEditable));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     InsertNodeBeforeCommand(PassRefPtr<Node> childToInsert, PassRefPtr<Node> childToInsertBefore, ShouldAssumeContentIsAlwaysEditable);
 
diff --git a/sky/engine/core/editing/InsertParagraphSeparatorCommand.cpp b/sky/engine/core/editing/InsertParagraphSeparatorCommand.cpp
index 8e1cbcf..470dc6a 100644
--- a/sky/engine/core/editing/InsertParagraphSeparatorCommand.cpp
+++ b/sky/engine/core/editing/InsertParagraphSeparatorCommand.cpp
@@ -318,11 +318,4 @@
     setEndingSelection(VisibleSelection(firstPositionInNode(blockToInsert.get()), DOWNSTREAM, endingSelection().isDirectional()));
 }
 
-void InsertParagraphSeparatorCommand::trace(Visitor *visitor)
-{
-    visitor->trace(m_style);
-    CompositeEditCommand::trace(visitor);
-}
-
-
 } // namespace blink
diff --git a/sky/engine/core/editing/InsertParagraphSeparatorCommand.h b/sky/engine/core/editing/InsertParagraphSeparatorCommand.h
index c7aeb8d..54ca11f 100644
--- a/sky/engine/core/editing/InsertParagraphSeparatorCommand.h
+++ b/sky/engine/core/editing/InsertParagraphSeparatorCommand.h
@@ -39,8 +39,6 @@
         return adoptRef(new InsertParagraphSeparatorCommand(document, useDefaultParagraphElement, pasteBlockquoteIntoUnquotedArea));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     InsertParagraphSeparatorCommand(Document&, bool useDefaultParagraphElement, bool pasteBlockquoteIntoUnquotedArea);
 
diff --git a/sky/engine/core/editing/MoveSelectionCommand.cpp b/sky/engine/core/editing/MoveSelectionCommand.cpp
index a136315..958953b 100644
--- a/sky/engine/core/editing/MoveSelectionCommand.cpp
+++ b/sky/engine/core/editing/MoveSelectionCommand.cpp
@@ -83,11 +83,4 @@
     return EditActionDrag;
 }
 
-void MoveSelectionCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_fragment);
-    visitor->trace(m_position);
-    CompositeEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/MoveSelectionCommand.h b/sky/engine/core/editing/MoveSelectionCommand.h
index a6fbbf2..810f6aa 100644
--- a/sky/engine/core/editing/MoveSelectionCommand.h
+++ b/sky/engine/core/editing/MoveSelectionCommand.h
@@ -39,8 +39,6 @@
         return adoptRef(new MoveSelectionCommand(fragment, position, smartInsert, smartDelete));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     MoveSelectionCommand(PassRefPtr<DocumentFragment>, const Position&, bool smartInsert, bool smartDelete);
 
diff --git a/sky/engine/core/editing/PositionWithAffinity.cpp b/sky/engine/core/editing/PositionWithAffinity.cpp
index 668c408..e6650f4 100644
--- a/sky/engine/core/editing/PositionWithAffinity.cpp
+++ b/sky/engine/core/editing/PositionWithAffinity.cpp
@@ -22,9 +22,4 @@
 {
 }
 
-void PositionWithAffinity::trace(Visitor* visitor)
-{
-    visitor->trace(m_position);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/PositionWithAffinity.h b/sky/engine/core/editing/PositionWithAffinity.h
index 408c2e9..f68d8a7 100644
--- a/sky/engine/core/editing/PositionWithAffinity.h
+++ b/sky/engine/core/editing/PositionWithAffinity.h
@@ -20,8 +20,6 @@
     EAffinity affinity() const { return m_affinity; }
     const Position& position() const { return m_position; }
 
-    void trace(Visitor*);
-
 private:
     Position m_position;
     EAffinity m_affinity;
diff --git a/sky/engine/core/editing/RemoveNodeCommand.cpp b/sky/engine/core/editing/RemoveNodeCommand.cpp
index bd02059..6044ea7 100644
--- a/sky/engine/core/editing/RemoveNodeCommand.cpp
+++ b/sky/engine/core/editing/RemoveNodeCommand.cpp
@@ -65,12 +65,4 @@
     parent->insertBefore(m_node.get(), refChild.get(), IGNORE_EXCEPTION);
 }
 
-void RemoveNodeCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    visitor->trace(m_parent);
-    visitor->trace(m_refChild);
-    SimpleEditCommand::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/editing/RemoveNodeCommand.h b/sky/engine/core/editing/RemoveNodeCommand.h
index 1270920..fdcc683 100644
--- a/sky/engine/core/editing/RemoveNodeCommand.h
+++ b/sky/engine/core/editing/RemoveNodeCommand.h
@@ -37,8 +37,6 @@
         return adoptRef(new RemoveNodeCommand(node, shouldAssumeContentIsAlwaysEditable));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     explicit RemoveNodeCommand(PassRefPtr<Node>, ShouldAssumeContentIsAlwaysEditable);
 
diff --git a/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.cpp b/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.cpp
index 22c5795..2a38588 100644
--- a/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.cpp
+++ b/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.cpp
@@ -55,10 +55,4 @@
     removeNode(m_node, m_shouldAssumeContentIsAlwaysEditable);
 }
 
-void RemoveNodePreservingChildrenCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    CompositeEditCommand::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.h b/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.h
index 6c4ebd5..174623c 100644
--- a/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.h
+++ b/sky/engine/core/editing/RemoveNodePreservingChildrenCommand.h
@@ -37,8 +37,6 @@
         return adoptRef(new RemoveNodePreservingChildrenCommand(node, shouldAssumeContentIsAlwaysEditable));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     RemoveNodePreservingChildrenCommand(PassRefPtr<Node>, ShouldAssumeContentIsAlwaysEditable);
 
diff --git a/sky/engine/core/editing/ReplaceSelectionCommand.cpp b/sky/engine/core/editing/ReplaceSelectionCommand.cpp
index 2eea3f8..d94eaf6 100644
--- a/sky/engine/core/editing/ReplaceSelectionCommand.cpp
+++ b/sky/engine/core/editing/ReplaceSelectionCommand.cpp
@@ -1012,13 +1012,4 @@
     return true;
 }
 
-void ReplaceSelectionCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_startOfInsertedContent);
-    visitor->trace(m_endOfInsertedContent);
-    visitor->trace(m_insertionStyle);
-    visitor->trace(m_documentFragment);
-    CompositeEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/ReplaceSelectionCommand.h b/sky/engine/core/editing/ReplaceSelectionCommand.h
index 90b1c48..6c44721 100644
--- a/sky/engine/core/editing/ReplaceSelectionCommand.h
+++ b/sky/engine/core/editing/ReplaceSelectionCommand.h
@@ -51,8 +51,6 @@
         return adoptRef(new ReplaceSelectionCommand(document, fragment, options, action));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     ReplaceSelectionCommand(Document&, PassRefPtr<DocumentFragment>, CommandOptions, EditAction);
 
diff --git a/sky/engine/core/editing/SplitElementCommand.cpp b/sky/engine/core/editing/SplitElementCommand.cpp
index d84a9f3..931e623 100644
--- a/sky/engine/core/editing/SplitElementCommand.cpp
+++ b/sky/engine/core/editing/SplitElementCommand.cpp
@@ -107,12 +107,4 @@
     executeApply();
 }
 
-void SplitElementCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_element1);
-    visitor->trace(m_element2);
-    visitor->trace(m_atChild);
-    SimpleEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/SplitElementCommand.h b/sky/engine/core/editing/SplitElementCommand.h
index 5d7b250..ba7e262 100644
--- a/sky/engine/core/editing/SplitElementCommand.h
+++ b/sky/engine/core/editing/SplitElementCommand.h
@@ -37,8 +37,6 @@
         return adoptRef(new SplitElementCommand(element, splitPointChild));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     SplitElementCommand(PassRefPtr<Element>, PassRefPtr<Node> splitPointChild);
 
diff --git a/sky/engine/core/editing/SplitTextNodeCommand.cpp b/sky/engine/core/editing/SplitTextNodeCommand.cpp
index 7d692a2..eb18121 100644
--- a/sky/engine/core/editing/SplitTextNodeCommand.cpp
+++ b/sky/engine/core/editing/SplitTextNodeCommand.cpp
@@ -103,11 +103,4 @@
     m_text2->deleteData(0, m_offset, exceptionState, CharacterData::DeprecatedRecalcStyleImmediatlelyForEditing);
 }
 
-void SplitTextNodeCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_text1);
-    visitor->trace(m_text2);
-    SimpleEditCommand::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/SplitTextNodeCommand.h b/sky/engine/core/editing/SplitTextNodeCommand.h
index 110bee1..563a2ca 100644
--- a/sky/engine/core/editing/SplitTextNodeCommand.h
+++ b/sky/engine/core/editing/SplitTextNodeCommand.h
@@ -39,8 +39,6 @@
         return adoptRef(new SplitTextNodeCommand(node, offset));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     SplitTextNodeCommand(PassRefPtr<Text>, int offset);
 
diff --git a/sky/engine/core/editing/SplitTextNodeContainingElementCommand.cpp b/sky/engine/core/editing/SplitTextNodeContainingElementCommand.cpp
index 56270d3..719d8c2 100644
--- a/sky/engine/core/editing/SplitTextNodeContainingElementCommand.cpp
+++ b/sky/engine/core/editing/SplitTextNodeContainingElementCommand.cpp
@@ -48,10 +48,4 @@
     splitTextNode(m_text.get(), m_offset);
 }
 
-void SplitTextNodeContainingElementCommand::trace(Visitor* visitor)
-{
-    visitor->trace(m_text);
-    CompositeEditCommand::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/editing/SplitTextNodeContainingElementCommand.h b/sky/engine/core/editing/SplitTextNodeContainingElementCommand.h
index cadbbc7..fbfb5cd 100644
--- a/sky/engine/core/editing/SplitTextNodeContainingElementCommand.h
+++ b/sky/engine/core/editing/SplitTextNodeContainingElementCommand.h
@@ -37,8 +37,6 @@
         return adoptRef(new SplitTextNodeContainingElementCommand(node, offset));
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     SplitTextNodeContainingElementCommand(PassRefPtr<Text>, int offset);
 
diff --git a/sky/engine/core/editing/UndoStack.cpp b/sky/engine/core/editing/UndoStack.cpp
index 062524a..65cf013 100644
--- a/sky/engine/core/editing/UndoStack.cpp
+++ b/sky/engine/core/editing/UndoStack.cpp
@@ -120,10 +120,4 @@
     }
 }
 
-void UndoStack::trace(Visitor* visitor)
-{
-    visitor->trace(m_undoStack);
-    visitor->trace(m_redoStack);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/editing/UndoStack.h b/sky/engine/core/editing/UndoStack.h
index e784282..58b909c 100644
--- a/sky/engine/core/editing/UndoStack.h
+++ b/sky/engine/core/editing/UndoStack.h
@@ -53,8 +53,6 @@
     void undo();
     void redo();
 
-    void trace(Visitor*);
-
 private:
     UndoStack();
 
diff --git a/sky/engine/core/editing/UndoStep.h b/sky/engine/core/editing/UndoStep.h
index 5c0c8b8..e119d93 100644
--- a/sky/engine/core/editing/UndoStep.h
+++ b/sky/engine/core/editing/UndoStep.h
@@ -42,7 +42,6 @@
 class UndoStep : public RefCounted<UndoStep> {
 public:
     virtual ~UndoStep() { }
-    virtual void trace(Visitor*) { }
 
     virtual bool belongsTo(const LocalFrame&) const = 0;
     virtual void unapply() = 0;
diff --git a/sky/engine/core/editing/VisiblePosition.cpp b/sky/engine/core/editing/VisiblePosition.cpp
index 7cfc49a..fbbf4df 100644
--- a/sky/engine/core/editing/VisiblePosition.cpp
+++ b/sky/engine/core/editing/VisiblePosition.cpp
@@ -767,11 +767,6 @@
     return next.isNull() || !next.deepEquivalent().deprecatedNode()->isDescendantOf(node);
 }
 
-void VisiblePosition::trace(Visitor* visitor)
-{
-    visitor->trace(m_deepPosition);
-}
-
 }  // namespace blink
 
 #ifndef NDEBUG
diff --git a/sky/engine/core/editing/VisiblePosition.h b/sky/engine/core/editing/VisiblePosition.h
index d404e96..1aecd90 100644
--- a/sky/engine/core/editing/VisiblePosition.h
+++ b/sky/engine/core/editing/VisiblePosition.h
@@ -101,8 +101,6 @@
     // FIXME: navigation with transforms should be smarter.
     int lineDirectionPointForBlockDirectionNavigation() const;
 
-    void trace(Visitor*);
-
 #ifndef NDEBUG
     void debugPosition(const char* msg = "") const;
     void formatForDebugger(char* buffer, unsigned length) const;
diff --git a/sky/engine/core/editing/VisibleSelection.cpp b/sky/engine/core/editing/VisibleSelection.cpp
index 742ff2d..a48f13e 100644
--- a/sky/engine/core/editing/VisibleSelection.cpp
+++ b/sky/engine/core/editing/VisibleSelection.cpp
@@ -761,15 +761,6 @@
         m_changeObserver->didChangeVisibleSelection();
 }
 
-void VisibleSelection::trace(Visitor* visitor)
-{
-    visitor->trace(m_base);
-    visitor->trace(m_extent);
-    visitor->trace(m_start);
-    visitor->trace(m_end);
-    visitor->trace(m_changeObserver);
-}
-
 static bool isValidPosition(const Position& position)
 {
     if (!position.inDocument())
diff --git a/sky/engine/core/editing/VisibleSelection.h b/sky/engine/core/editing/VisibleSelection.h
index 3c2666d..6b5215e 100644
--- a/sky/engine/core/editing/VisibleSelection.h
+++ b/sky/engine/core/editing/VisibleSelection.h
@@ -123,15 +123,12 @@
         ChangeObserver();
         virtual ~ChangeObserver();
         virtual void didChangeVisibleSelection() = 0;
-        virtual void trace(Visitor*) { }
     };
 
     void setChangeObserver(ChangeObserver&);
     void clearChangeObserver();
     void didChange(); // Fire the change observer, if any.
 
-    void trace(Visitor*);
-
     void validatePositionsIfNeeded();
 
 #ifndef NDEBUG
diff --git a/sky/engine/core/editing/markup.cpp b/sky/engine/core/editing/markup.cpp
index 7bd6356..3f9b288 100644
--- a/sky/engine/core/editing/markup.cpp
+++ b/sky/engine/core/editing/markup.cpp
@@ -79,11 +79,6 @@
         m_element->setAttribute(m_name, AtomicString(m_value));
     }
 
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(m_element);
-    }
-
 private:
     RefPtr<Element> m_element;
     QualifiedName m_name;
diff --git a/sky/engine/core/events/AnimationEvent.cpp b/sky/engine/core/events/AnimationEvent.cpp
index 15fae75..4edbb9e 100644
--- a/sky/engine/core/events/AnimationEvent.cpp
+++ b/sky/engine/core/events/AnimationEvent.cpp
@@ -72,9 +72,4 @@
     return EventNames::AnimationEvent;
 }
 
-void AnimationEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/AnimationEvent.h b/sky/engine/core/events/AnimationEvent.h
index ab31fab..75d4522 100644
--- a/sky/engine/core/events/AnimationEvent.h
+++ b/sky/engine/core/events/AnimationEvent.h
@@ -63,8 +63,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     AnimationEvent();
     AnimationEvent(const AtomicString& type, const String& animationName, double elapsedTime);
diff --git a/sky/engine/core/events/AnimationPlayerEvent.cpp b/sky/engine/core/events/AnimationPlayerEvent.cpp
index b43c782..df79d4d 100644
--- a/sky/engine/core/events/AnimationPlayerEvent.cpp
+++ b/sky/engine/core/events/AnimationPlayerEvent.cpp
@@ -52,9 +52,4 @@
     return EventNames::AnimationPlayerEvent;
 }
 
-void AnimationPlayerEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/AnimationPlayerEvent.h b/sky/engine/core/events/AnimationPlayerEvent.h
index 2d24bf7..d3ff6d9 100644
--- a/sky/engine/core/events/AnimationPlayerEvent.h
+++ b/sky/engine/core/events/AnimationPlayerEvent.h
@@ -39,8 +39,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     AnimationPlayerEvent();
     AnimationPlayerEvent(const AtomicString& type, double currentTime, double timelineTime);
diff --git a/sky/engine/core/events/BeforeTextInsertedEvent.cpp b/sky/engine/core/events/BeforeTextInsertedEvent.cpp
index 766d63e..0ba4ee4 100644
--- a/sky/engine/core/events/BeforeTextInsertedEvent.cpp
+++ b/sky/engine/core/events/BeforeTextInsertedEvent.cpp
@@ -43,9 +43,4 @@
     return EventNames::Event;
 }
 
-void BeforeTextInsertedEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/events/BeforeTextInsertedEvent.h b/sky/engine/core/events/BeforeTextInsertedEvent.h
index 16c0c1d..2b99724 100644
--- a/sky/engine/core/events/BeforeTextInsertedEvent.h
+++ b/sky/engine/core/events/BeforeTextInsertedEvent.h
@@ -45,8 +45,6 @@
     const String& text() const { return m_text; }
     void setText(const String& s) { m_text = s; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     explicit BeforeTextInsertedEvent(const String&);
 
diff --git a/sky/engine/core/events/CompositionEvent.cpp b/sky/engine/core/events/CompositionEvent.cpp
index 49f5a8c..696f778 100644
--- a/sky/engine/core/events/CompositionEvent.cpp
+++ b/sky/engine/core/events/CompositionEvent.cpp
@@ -100,9 +100,4 @@
     return EventNames::CompositionEvent;
 }
 
-void CompositionEvent::trace(Visitor* visitor)
-{
-    UIEvent::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/CompositionEvent.h b/sky/engine/core/events/CompositionEvent.h
index 8c788aa..81f35f3 100644
--- a/sky/engine/core/events/CompositionEvent.h
+++ b/sky/engine/core/events/CompositionEvent.h
@@ -67,8 +67,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     CompositionEvent();
     CompositionEvent(const AtomicString& type, PassRefPtr<AbstractView>, const String&, const Vector<CompositionUnderline>& underlines);
diff --git a/sky/engine/core/events/CustomEvent.cpp b/sky/engine/core/events/CustomEvent.cpp
index e9d8d66..e05f107 100644
--- a/sky/engine/core/events/CustomEvent.cpp
+++ b/sky/engine/core/events/CustomEvent.cpp
@@ -58,9 +58,4 @@
     return EventNames::CustomEvent;
 }
 
-void CustomEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/CustomEvent.h b/sky/engine/core/events/CustomEvent.h
index 57a0862..cd2d15e 100644
--- a/sky/engine/core/events/CustomEvent.h
+++ b/sky/engine/core/events/CustomEvent.h
@@ -62,8 +62,6 @@
         m_serializedDetail = detail;
     }
 
-    virtual void trace(Visitor*) override;
-
 private:
     CustomEvent();
     CustomEvent(const AtomicString& type, const CustomEventInit& initializer);
diff --git a/sky/engine/core/events/DOMWindowEventQueue.cpp b/sky/engine/core/events/DOMWindowEventQueue.cpp
index 4b73006..f43a0e9 100644
--- a/sky/engine/core/events/DOMWindowEventQueue.cpp
+++ b/sky/engine/core/events/DOMWindowEventQueue.cpp
@@ -39,7 +39,6 @@
     DOMWindowEventQueueTimer(DOMWindowEventQueue* eventQueue, ExecutionContext* context)
         : SuspendableTimer(context)
         , m_eventQueue(eventQueue) { }
-    void trace(Visitor* visitor) { visitor->trace(m_eventQueue); }
 
 private:
     virtual void fired() { m_eventQueue->pendingEventTimerFired(); }
@@ -63,15 +62,6 @@
 {
 }
 
-void DOMWindowEventQueue::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_pendingEventTimer);
-    visitor->trace(m_queuedEvents);
-#endif
-    EventQueue::trace(visitor);
-}
-
 bool DOMWindowEventQueue::enqueueEvent(PassRefPtr<Event> event)
 {
     if (m_isClosed)
diff --git a/sky/engine/core/events/DOMWindowEventQueue.h b/sky/engine/core/events/DOMWindowEventQueue.h
index 72f8bb1..746c7cc 100644
--- a/sky/engine/core/events/DOMWindowEventQueue.h
+++ b/sky/engine/core/events/DOMWindowEventQueue.h
@@ -52,7 +52,6 @@
     virtual ~DOMWindowEventQueue();
 
     // EventQueue
-    virtual void trace(Visitor*) override;
     virtual bool enqueueEvent(PassRefPtr<Event>) override;
     virtual bool cancelEvent(Event*) override;
     virtual void close() override;
diff --git a/sky/engine/core/events/ErrorEvent.cpp b/sky/engine/core/events/ErrorEvent.cpp
index d83ce29..2c66611 100644
--- a/sky/engine/core/events/ErrorEvent.cpp
+++ b/sky/engine/core/events/ErrorEvent.cpp
@@ -88,9 +88,4 @@
     return EventNames::ErrorEvent;
 }
 
-void ErrorEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/ErrorEvent.h b/sky/engine/core/events/ErrorEvent.h
index 6f4efd6..d7f9d98 100644
--- a/sky/engine/core/events/ErrorEvent.h
+++ b/sky/engine/core/events/ErrorEvent.h
@@ -83,8 +83,6 @@
 
     void setUnsanitizedMessage(const String&);
 
-    virtual void trace(Visitor*) override;
-
 private:
     ErrorEvent();
     ErrorEvent(const String& message, const String& fileName, unsigned lineNumber, unsigned columnNumber, DOMWrapperWorld*);
diff --git a/sky/engine/core/events/Event.cpp b/sky/engine/core/events/Event.cpp
index b1cec4f..0855500 100644
--- a/sky/engine/core/events/Event.cpp
+++ b/sky/engine/core/events/Event.cpp
@@ -239,12 +239,4 @@
     return m_currentTarget.get();
 }
 
-void Event::trace(Visitor* visitor)
-{
-    visitor->trace(m_currentTarget);
-    visitor->trace(m_target);
-    visitor->trace(m_underlyingEvent);
-    visitor->trace(m_eventPath);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/Event.h b/sky/engine/core/events/Event.h
index c1d735c..20cb39d 100644
--- a/sky/engine/core/events/Event.h
+++ b/sky/engine/core/events/Event.h
@@ -180,8 +180,6 @@
 
     bool isBeingDispatched() const { return eventPhase(); }
 
-    virtual void trace(Visitor*);
-
 protected:
     Event();
     Event(const AtomicString& type, bool canBubble, bool cancelable);
diff --git a/sky/engine/core/events/EventDispatchMediator.cpp b/sky/engine/core/events/EventDispatchMediator.cpp
index 4e0bf14..838d1b7 100644
--- a/sky/engine/core/events/EventDispatchMediator.cpp
+++ b/sky/engine/core/events/EventDispatchMediator.cpp
@@ -46,11 +46,6 @@
 {
 }
 
-void EventDispatchMediator::trace(Visitor* visitor)
-{
-    visitor->trace(m_event);
-}
-
 bool EventDispatchMediator::dispatchEvent(EventDispatcher* dispatcher) const
 {
     ASSERT(m_event.get() == dispatcher->event());
diff --git a/sky/engine/core/events/EventDispatchMediator.h b/sky/engine/core/events/EventDispatchMediator.h
index e6df55b..d5a7fa9 100644
--- a/sky/engine/core/events/EventDispatchMediator.h
+++ b/sky/engine/core/events/EventDispatchMediator.h
@@ -46,7 +46,6 @@
 public:
     static PassRefPtr<EventDispatchMediator> create(PassRefPtr<Event>);
     virtual ~EventDispatchMediator() { };
-    virtual void trace(Visitor*);
     virtual bool dispatchEvent(EventDispatcher*) const;
     Event* event() const { return m_event.get(); };
 
diff --git a/sky/engine/core/events/EventPath.cpp b/sky/engine/core/events/EventPath.cpp
index 9031715..08717f9 100644
--- a/sky/engine/core/events/EventPath.cpp
+++ b/sky/engine/core/events/EventPath.cpp
@@ -325,12 +325,4 @@
 }
 #endif
 
-void EventPath::trace(Visitor* visitor)
-{
-    visitor->trace(m_nodeEventContexts);
-    visitor->trace(m_node);
-    visitor->trace(m_event);
-    visitor->trace(m_treeScopeEventContexts);
-}
-
 } // namespace
diff --git a/sky/engine/core/events/EventPath.h b/sky/engine/core/events/EventPath.h
index 0a1eb19..1c67c8d 100644
--- a/sky/engine/core/events/EventPath.h
+++ b/sky/engine/core/events/EventPath.h
@@ -60,8 +60,6 @@
 
     static EventTarget* eventTargetRespectingTargetRules(Node*);
 
-    void trace(Visitor*);
-
 private:
     EventPath();
 
diff --git a/sky/engine/core/events/EventQueue.h b/sky/engine/core/events/EventQueue.h
index 8497c2e..86305af 100644
--- a/sky/engine/core/events/EventQueue.h
+++ b/sky/engine/core/events/EventQueue.h
@@ -39,7 +39,6 @@
 class EventQueue {
 public:
     virtual ~EventQueue() { }
-    virtual void trace(Visitor*) { }
     virtual bool enqueueEvent(PassRefPtr<Event>) = 0;
     virtual bool cancelEvent(Event*) = 0;
     // The accumulated and all the future events will be discarded, no events will be dispatched anymore.
diff --git a/sky/engine/core/events/EventTarget.h b/sky/engine/core/events/EventTarget.h
index d9747e4..637e150 100644
--- a/sky/engine/core/events/EventTarget.h
+++ b/sky/engine/core/events/EventTarget.h
@@ -120,8 +120,6 @@
 
     bool fireEventListeners(Event*);
 
-    virtual void trace(Visitor*) { }
-
     virtual bool keepEventInNode(Event*) { return false; };
 
 protected:
diff --git a/sky/engine/core/events/FocusEvent.cpp b/sky/engine/core/events/FocusEvent.cpp
index fcc419b..050986b 100644
--- a/sky/engine/core/events/FocusEvent.cpp
+++ b/sky/engine/core/events/FocusEvent.cpp
@@ -62,12 +62,6 @@
 {
 }
 
-void FocusEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_relatedTarget);
-    UIEvent::trace(visitor);
-}
-
 PassRefPtr<FocusEventDispatchMediator> FocusEventDispatchMediator::create(PassRefPtr<FocusEvent> focusEvent)
 {
     return adoptRef(new FocusEventDispatchMediator(focusEvent));
diff --git a/sky/engine/core/events/FocusEvent.h b/sky/engine/core/events/FocusEvent.h
index 396e399..d0f812a 100644
--- a/sky/engine/core/events/FocusEvent.h
+++ b/sky/engine/core/events/FocusEvent.h
@@ -63,8 +63,6 @@
     virtual const AtomicString& interfaceName() const override;
     virtual bool isFocusEvent() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     FocusEvent();
     FocusEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>, int, EventTarget*);
diff --git a/sky/engine/core/events/GenericEventQueue.cpp b/sky/engine/core/events/GenericEventQueue.cpp
index 9bbdf59..387690f 100644
--- a/sky/engine/core/events/GenericEventQueue.cpp
+++ b/sky/engine/core/events/GenericEventQueue.cpp
@@ -48,13 +48,6 @@
 {
 }
 
-void GenericEventQueue::trace(Visitor* visitor)
-{
-    visitor->trace(m_owner);
-    visitor->trace(m_pendingEvents);
-    EventQueue::trace(visitor);
-}
-
 bool GenericEventQueue::enqueueEvent(PassRefPtr<Event> event)
 {
     if (m_isClosed)
diff --git a/sky/engine/core/events/GenericEventQueue.h b/sky/engine/core/events/GenericEventQueue.h
index a22e9cb..6427637 100644
--- a/sky/engine/core/events/GenericEventQueue.h
+++ b/sky/engine/core/events/GenericEventQueue.h
@@ -42,7 +42,6 @@
     virtual ~GenericEventQueue();
 
     // EventQueue
-    virtual void trace(Visitor*) override;
     virtual bool enqueueEvent(PassRefPtr<Event>) override;
     virtual bool cancelEvent(Event*) override;
     virtual void close() override;
diff --git a/sky/engine/core/events/GestureEvent.cpp b/sky/engine/core/events/GestureEvent.cpp
index f8c23cd..de46000 100644
--- a/sky/engine/core/events/GestureEvent.cpp
+++ b/sky/engine/core/events/GestureEvent.cpp
@@ -94,11 +94,6 @@
 {
 }
 
-void GestureEvent::trace(Visitor* visitor)
-{
-    MouseRelatedEvent::trace(visitor);
-}
-
 GestureEventDispatchMediator::GestureEventDispatchMediator(PassRefPtr<GestureEvent> gestureEvent)
     : EventDispatchMediator(gestureEvent)
 {
diff --git a/sky/engine/core/events/GestureEvent.h b/sky/engine/core/events/GestureEvent.h
index 0ac314c..9ba35da 100644
--- a/sky/engine/core/events/GestureEvent.h
+++ b/sky/engine/core/events/GestureEvent.h
@@ -45,8 +45,6 @@
     float deltaX() const { return m_deltaX; }
     float deltaY() const { return m_deltaY; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     GestureEvent();
     GestureEvent(const AtomicString& type, PassRefPtr<AbstractView>, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, float deltaX, float deltaY);
diff --git a/sky/engine/core/events/HashChangeEvent.h b/sky/engine/core/events/HashChangeEvent.h
index 6d039bd..09ab286 100644
--- a/sky/engine/core/events/HashChangeEvent.h
+++ b/sky/engine/core/events/HashChangeEvent.h
@@ -68,8 +68,6 @@
 
     virtual const AtomicString& interfaceName() const override { return EventNames::HashChangeEvent; }
 
-    virtual void trace(Visitor* visitor) override { Event::trace(visitor); }
-
 private:
     HashChangeEvent()
     {
diff --git a/sky/engine/core/events/KeyboardEvent.cpp b/sky/engine/core/events/KeyboardEvent.cpp
index ba75677..99822ee 100644
--- a/sky/engine/core/events/KeyboardEvent.cpp
+++ b/sky/engine/core/events/KeyboardEvent.cpp
@@ -207,11 +207,6 @@
     return keyCode();
 }
 
-void KeyboardEvent::trace(Visitor* visitor)
-{
-    UIEventWithKeyState::trace(visitor);
-}
-
 PassRefPtr<KeyboardEventDispatchMediator> KeyboardEventDispatchMediator::create(PassRefPtr<KeyboardEvent> event)
 {
     return adoptRef(new KeyboardEventDispatchMediator(event));
diff --git a/sky/engine/core/events/KeyboardEvent.h b/sky/engine/core/events/KeyboardEvent.h
index be1bfd5..8eed296 100644
--- a/sky/engine/core/events/KeyboardEvent.h
+++ b/sky/engine/core/events/KeyboardEvent.h
@@ -99,8 +99,6 @@
     virtual bool isKeyboardEvent() const override;
     virtual int which() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     KeyboardEvent();
     KeyboardEvent(const PlatformKeyboardEvent&, AbstractView*);
diff --git a/sky/engine/core/events/MouseEvent.cpp b/sky/engine/core/events/MouseEvent.cpp
index 700bbcb..08f8b7a 100644
--- a/sky/engine/core/events/MouseEvent.cpp
+++ b/sky/engine/core/events/MouseEvent.cpp
@@ -184,12 +184,6 @@
     return target() ? target()->toNode() : 0;
 }
 
-void MouseEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_relatedTarget);
-    MouseRelatedEvent::trace(visitor);
-}
-
 PassRefPtr<SimulatedMouseEvent> SimulatedMouseEvent::create(const AtomicString& eventType, PassRefPtr<AbstractView> view, PassRefPtr<Event> underlyingEvent)
 {
     return adoptRef(new SimulatedMouseEvent(eventType, view, underlyingEvent));
@@ -218,11 +212,6 @@
     }
 }
 
-void SimulatedMouseEvent::trace(Visitor* visitor)
-{
-    MouseEvent::trace(visitor);
-}
-
 PassRefPtr<MouseEventDispatchMediator> MouseEventDispatchMediator::create(PassRefPtr<MouseEvent> mouseEvent, MouseEventType mouseEventType)
 {
     return adoptRef(new MouseEventDispatchMediator(mouseEvent, mouseEventType));
diff --git a/sky/engine/core/events/MouseEvent.h b/sky/engine/core/events/MouseEvent.h
index 39e8c83..46a4136 100644
--- a/sky/engine/core/events/MouseEvent.h
+++ b/sky/engine/core/events/MouseEvent.h
@@ -91,8 +91,6 @@
     virtual bool isDragEvent() const override final;
     virtual int which() const override final;
 
-    virtual void trace(Visitor*) override;
-
 protected:
     MouseEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>,
         int detail, int screenX, int screenY, int pageX, int pageY,
@@ -117,8 +115,6 @@
     static PassRefPtr<SimulatedMouseEvent> create(const AtomicString& eventType, PassRefPtr<AbstractView>, PassRefPtr<Event> underlyingEvent);
     virtual ~SimulatedMouseEvent();
 
-    virtual void trace(Visitor*) override;
-
 private:
     SimulatedMouseEvent(const AtomicString& eventType, PassRefPtr<AbstractView>, PassRefPtr<Event> underlyingEvent);
 };
diff --git a/sky/engine/core/events/MouseRelatedEvent.cpp b/sky/engine/core/events/MouseRelatedEvent.cpp
index 8387b04..4713862 100644
--- a/sky/engine/core/events/MouseRelatedEvent.cpp
+++ b/sky/engine/core/events/MouseRelatedEvent.cpp
@@ -189,9 +189,4 @@
     return m_clientLocation.y();
 }
 
-void MouseRelatedEvent::trace(Visitor* visitor)
-{
-    UIEventWithKeyState::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/MouseRelatedEvent.h b/sky/engine/core/events/MouseRelatedEvent.h
index c5548df..4b24bfd 100644
--- a/sky/engine/core/events/MouseRelatedEvent.h
+++ b/sky/engine/core/events/MouseRelatedEvent.h
@@ -58,8 +58,6 @@
         const LayoutPoint& absoluteLocation() const { return m_absoluteLocation; }
         void setAbsoluteLocation(const LayoutPoint& p) { m_absoluteLocation = p; }
 
-        virtual void trace(Visitor*) override;
-
     protected:
         MouseRelatedEvent();
         MouseRelatedEvent(const AtomicString& type, bool canBubble, bool cancelable,
diff --git a/sky/engine/core/events/NodeEventContext.cpp b/sky/engine/core/events/NodeEventContext.cpp
index 5cd97f4..8dec3d0 100644
--- a/sky/engine/core/events/NodeEventContext.cpp
+++ b/sky/engine/core/events/NodeEventContext.cpp
@@ -44,13 +44,6 @@
     ASSERT(m_node);
 }
 
-void NodeEventContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    visitor->trace(m_currentTarget);
-    visitor->trace(m_treeScopeEventContext);
-}
-
 void NodeEventContext::handleLocalEvents(Event* event) const
 {
     if (touchEventContext()) {
diff --git a/sky/engine/core/events/NodeEventContext.h b/sky/engine/core/events/NodeEventContext.h
index 3326716..4cb667e 100644
--- a/sky/engine/core/events/NodeEventContext.h
+++ b/sky/engine/core/events/NodeEventContext.h
@@ -43,7 +43,6 @@
 public:
     // FIXME: Use ContainerNode instead of Node.
     NodeEventContext(PassRefPtr<Node>, PassRefPtr<EventTarget> currentTarget);
-    void trace(Visitor*);
 
     Node* node() const { return m_node.get(); }
 
diff --git a/sky/engine/core/events/PageTransitionEvent.cpp b/sky/engine/core/events/PageTransitionEvent.cpp
index 2d48bb8..7cd93e2 100644
--- a/sky/engine/core/events/PageTransitionEvent.cpp
+++ b/sky/engine/core/events/PageTransitionEvent.cpp
@@ -59,9 +59,4 @@
     return EventNames::PageTransitionEvent;
 }
 
-void PageTransitionEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/PageTransitionEvent.h b/sky/engine/core/events/PageTransitionEvent.h
index d5f1309..057902d 100644
--- a/sky/engine/core/events/PageTransitionEvent.h
+++ b/sky/engine/core/events/PageTransitionEvent.h
@@ -58,8 +58,6 @@
 
     bool persisted() const { return m_persisted; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     PageTransitionEvent();
     PageTransitionEvent(const AtomicString& type, bool persisted);
diff --git a/sky/engine/core/events/PopStateEvent.cpp b/sky/engine/core/events/PopStateEvent.cpp
index e8b259b..17b2fcb 100644
--- a/sky/engine/core/events/PopStateEvent.cpp
+++ b/sky/engine/core/events/PopStateEvent.cpp
@@ -76,10 +76,4 @@
     return EventNames::PopStateEvent;
 }
 
-void PopStateEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_history);
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/PopStateEvent.h b/sky/engine/core/events/PopStateEvent.h
index dd43d33..a38b64e 100644
--- a/sky/engine/core/events/PopStateEvent.h
+++ b/sky/engine/core/events/PopStateEvent.h
@@ -55,8 +55,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     PopStateEvent();
     PopStateEvent(const AtomicString&, const PopStateEventInit&);
diff --git a/sky/engine/core/events/ProgressEvent.cpp b/sky/engine/core/events/ProgressEvent.cpp
index 184cc33..70adab5 100644
--- a/sky/engine/core/events/ProgressEvent.cpp
+++ b/sky/engine/core/events/ProgressEvent.cpp
@@ -63,9 +63,4 @@
     return EventNames::ProgressEvent;
 }
 
-void ProgressEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/events/ProgressEvent.h b/sky/engine/core/events/ProgressEvent.h
index d9b6bf0..107e629 100644
--- a/sky/engine/core/events/ProgressEvent.h
+++ b/sky/engine/core/events/ProgressEvent.h
@@ -60,8 +60,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 protected:
     ProgressEvent();
     ProgressEvent(const AtomicString& type, bool lengthComputable, unsigned long long loaded, unsigned long long total);
diff --git a/sky/engine/core/events/ResourceProgressEvent.cpp b/sky/engine/core/events/ResourceProgressEvent.cpp
index 49291c5..792762a 100644
--- a/sky/engine/core/events/ResourceProgressEvent.cpp
+++ b/sky/engine/core/events/ResourceProgressEvent.cpp
@@ -49,9 +49,4 @@
     return EventNames::ResourceProgressEvent;
 }
 
-void ResourceProgressEvent::trace(Visitor* visitor)
-{
-    ProgressEvent::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/events/ResourceProgressEvent.h b/sky/engine/core/events/ResourceProgressEvent.h
index 1d11533..120342e 100644
--- a/sky/engine/core/events/ResourceProgressEvent.h
+++ b/sky/engine/core/events/ResourceProgressEvent.h
@@ -58,8 +58,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 protected:
     ResourceProgressEvent();
     ResourceProgressEvent(const AtomicString& type, bool lengthComputable, unsigned long long loaded, unsigned long long total, const String& url);
diff --git a/sky/engine/core/events/TextEvent.cpp b/sky/engine/core/events/TextEvent.cpp
index 612792e..fbd9591 100644
--- a/sky/engine/core/events/TextEvent.cpp
+++ b/sky/engine/core/events/TextEvent.cpp
@@ -103,10 +103,4 @@
     return EventNames::TextEvent;
 }
 
-void TextEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_pastingFragment);
-    UIEvent::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/TextEvent.h b/sky/engine/core/events/TextEvent.h
index 6e192a9..3031d0e 100644
--- a/sky/engine/core/events/TextEvent.h
+++ b/sky/engine/core/events/TextEvent.h
@@ -60,8 +60,6 @@
     bool shouldMatchStyle() const { return m_shouldMatchStyle; }
     DocumentFragment* pastingFragment() const { return m_pastingFragment.get(); }
 
-    virtual void trace(Visitor*) override;
-
 private:
     TextEvent();
 
diff --git a/sky/engine/core/events/TouchEvent.cpp b/sky/engine/core/events/TouchEvent.cpp
index eeaea5f..3e17a54 100644
--- a/sky/engine/core/events/TouchEvent.cpp
+++ b/sky/engine/core/events/TouchEvent.cpp
@@ -101,13 +101,6 @@
             "Ignored attempt to cancel a " + type() + " event with cancelable=false, for example because scrolling is in progress and cannot be interrupted."));
     }
 }
-void TouchEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_touches);
-    visitor->trace(m_targetTouches);
-    visitor->trace(m_changedTouches);
-    UIEventWithKeyState::trace(visitor);
-}
 
 PassRefPtr<TouchEventDispatchMediator> TouchEventDispatchMediator::create(PassRefPtr<TouchEvent> touchEvent)
 {
diff --git a/sky/engine/core/events/TouchEvent.h b/sky/engine/core/events/TouchEvent.h
index 64e7d1b..7fcd891 100644
--- a/sky/engine/core/events/TouchEvent.h
+++ b/sky/engine/core/events/TouchEvent.h
@@ -71,8 +71,6 @@
 
     virtual void preventDefault() override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     TouchEvent();
     TouchEvent(TouchList* touches, TouchList* targetTouches,
diff --git a/sky/engine/core/events/TouchEventContext.cpp b/sky/engine/core/events/TouchEventContext.cpp
index 9df9b61..f821325 100644
--- a/sky/engine/core/events/TouchEventContext.cpp
+++ b/sky/engine/core/events/TouchEventContext.cpp
@@ -56,11 +56,4 @@
     touchEvent->setChangedTouches(m_changedTouches);
 }
 
-void TouchEventContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_touches);
-    visitor->trace(m_targetTouches);
-    visitor->trace(m_changedTouches);
-}
-
 }
diff --git a/sky/engine/core/events/TouchEventContext.h b/sky/engine/core/events/TouchEventContext.h
index 0d59024..b16db7e 100644
--- a/sky/engine/core/events/TouchEventContext.h
+++ b/sky/engine/core/events/TouchEventContext.h
@@ -46,8 +46,6 @@
     TouchList& targetTouches() { return *m_targetTouches; }
     TouchList& changedTouches() { return *m_changedTouches; }
 
-    void trace(Visitor*);
-
 private:
     TouchEventContext();
 
diff --git a/sky/engine/core/events/TransitionEvent.cpp b/sky/engine/core/events/TransitionEvent.cpp
index 4e1f8f1..63a3a3c 100644
--- a/sky/engine/core/events/TransitionEvent.cpp
+++ b/sky/engine/core/events/TransitionEvent.cpp
@@ -72,9 +72,4 @@
     return EventNames::TransitionEvent;
 }
 
-void TransitionEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/TransitionEvent.h b/sky/engine/core/events/TransitionEvent.h
index c563984..a67f2d5 100644
--- a/sky/engine/core/events/TransitionEvent.h
+++ b/sky/engine/core/events/TransitionEvent.h
@@ -61,8 +61,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     TransitionEvent();
     TransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime);
diff --git a/sky/engine/core/events/TreeScopeEventContext.cpp b/sky/engine/core/events/TreeScopeEventContext.cpp
index 7f34522bfe..c0814e7 100644
--- a/sky/engine/core/events/TreeScopeEventContext.cpp
+++ b/sky/engine/core/events/TreeScopeEventContext.cpp
@@ -73,18 +73,6 @@
 
 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(TreeScopeEventContext)
 
-void TreeScopeEventContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_treeScope);
-    visitor->trace(m_target);
-    visitor->trace(m_relatedTarget);
-    visitor->trace(m_eventPath);
-    visitor->trace(m_touchEventContext);
-#if ENABLE(OILPAN)
-    visitor->trace(m_children);
-#endif
-}
-
 int TreeScopeEventContext::calculatePrePostOrderNumber(int orderNumber)
 {
     m_preOrder = orderNumber;
diff --git a/sky/engine/core/events/TreeScopeEventContext.h b/sky/engine/core/events/TreeScopeEventContext.h
index 33c5e8b..e8dc694 100644
--- a/sky/engine/core/events/TreeScopeEventContext.h
+++ b/sky/engine/core/events/TreeScopeEventContext.h
@@ -48,7 +48,6 @@
     DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(TreeScopeEventContext);
 public:
     static PassRefPtr<TreeScopeEventContext> create(TreeScope&);
-    void trace(Visitor*);
 
     TreeScope& treeScope() const { return *m_treeScope; }
 
diff --git a/sky/engine/core/events/UIEvent.cpp b/sky/engine/core/events/UIEvent.cpp
index 7f34522bfb..97f3b18 100644
--- a/sky/engine/core/events/UIEvent.cpp
+++ b/sky/engine/core/events/UIEvent.cpp
@@ -111,10 +111,4 @@
     return 0;
 }
 
-void UIEvent::trace(Visitor* visitor)
-{
-    visitor->trace(m_view);
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/events/UIEvent.h b/sky/engine/core/events/UIEvent.h
index f70ee58..2e4ad3c 100644
--- a/sky/engine/core/events/UIEvent.h
+++ b/sky/engine/core/events/UIEvent.h
@@ -75,8 +75,6 @@
 
     virtual int which() const;
 
-    virtual void trace(Visitor*) override;
-
 protected:
     UIEvent();
     UIEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>, int detail);
diff --git a/sky/engine/core/events/WheelEvent.cpp b/sky/engine/core/events/WheelEvent.cpp
index c1d55fb..8496ecd 100644
--- a/sky/engine/core/events/WheelEvent.cpp
+++ b/sky/engine/core/events/WheelEvent.cpp
@@ -86,11 +86,6 @@
     return true;
 }
 
-void WheelEvent::trace(Visitor* visitor)
-{
-    MouseEvent::trace(visitor);
-}
-
 inline static unsigned deltaMode(const PlatformWheelEvent& event)
 {
     return event.granularity() == ScrollByPageWheelEvent ? WheelEvent::DOM_DELTA_PAGE : WheelEvent::DOM_DELTA_PIXEL;
diff --git a/sky/engine/core/events/WheelEvent.h b/sky/engine/core/events/WheelEvent.h
index d0c7b8f..25c78d2 100644
--- a/sky/engine/core/events/WheelEvent.h
+++ b/sky/engine/core/events/WheelEvent.h
@@ -88,8 +88,6 @@
     virtual bool isMouseEvent() const override;
     virtual bool isWheelEvent() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     WheelEvent();
     WheelEvent(const AtomicString&, const WheelEventInit&);
diff --git a/sky/engine/core/fetch/FontResource.cpp b/sky/engine/core/fetch/FontResource.cpp
index f4fb3c9..13f5243 100644
--- a/sky/engine/core/fetch/FontResource.cpp
+++ b/sky/engine/core/fetch/FontResource.cpp
@@ -79,11 +79,6 @@
 {
 }
 
-void FontResource::trace(Visitor* visitor)
-{
-    Resource::trace(visitor);
-}
-
 void FontResource::didScheduleLoad()
 {
     if (m_state == Unloaded)
diff --git a/sky/engine/core/fetch/FontResource.h b/sky/engine/core/fetch/FontResource.h
index ccf7a95..1e9ba5c 100644
--- a/sky/engine/core/fetch/FontResource.h
+++ b/sky/engine/core/fetch/FontResource.h
@@ -47,7 +47,6 @@
 
     FontResource(const ResourceRequest&);
     virtual ~FontResource();
-    virtual void trace(Visitor*) override;
 
     virtual void load(ResourceFetcher*, const ResourceLoaderOptions&) override;
 
diff --git a/sky/engine/core/fetch/MemoryCache.cpp b/sky/engine/core/fetch/MemoryCache.cpp
index 6c904b8..c373578 100644
--- a/sky/engine/core/fetch/MemoryCache.cpp
+++ b/sky/engine/core/fetch/MemoryCache.cpp
@@ -63,20 +63,6 @@
     return oldCache.release();
 }
 
-void MemoryCacheEntry::trace(Visitor* visitor)
-{
-    visitor->trace(m_previousInLiveResourcesList);
-    visitor->trace(m_nextInLiveResourcesList);
-    visitor->trace(m_previousInAllResourcesList);
-    visitor->trace(m_nextInAllResourcesList);
-}
-
-void MemoryCacheLRUList::trace(Visitor* visitor)
-{
-    visitor->trace(m_head);
-    visitor->trace(m_tail);
-}
-
 inline MemoryCache::MemoryCache()
     : m_inPruneResources(false)
     , m_maxPruneDeferralDelay(cMaxPruneDeferralDelay)
@@ -107,17 +93,6 @@
 {
 }
 
-void MemoryCache::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_allResources);
-    for (size_t i = 0; i < WTF_ARRAY_LENGTH(m_liveDecodedResources); ++i)
-        visitor->trace(m_liveDecodedResources[i]);
-    visitor->trace(m_resources);
-    visitor->trace(m_liveResources);
-#endif
-}
-
 KURL MemoryCache::removeFragmentIdentifierIfNeeded(const KURL& originalURL)
 {
     if (!originalURL.hasFragmentIdentifier())
diff --git a/sky/engine/core/fetch/MemoryCache.h b/sky/engine/core/fetch/MemoryCache.h
index b8a0352..be81f34 100644
--- a/sky/engine/core/fetch/MemoryCache.h
+++ b/sky/engine/core/fetch/MemoryCache.h
@@ -77,7 +77,6 @@
 class MemoryCacheEntry final {
 public:
     static PassOwnPtr<MemoryCacheEntry> create(Resource* resource) { return adoptPtr(new MemoryCacheEntry(resource)); }
-    void trace(Visitor*);
 
     ResourcePtr<Resource> m_resource;
     bool m_inLiveDecodedResourcesList;
@@ -115,7 +114,6 @@
     RawPtr<MemoryCacheEntry> m_tail;
 
     MemoryCacheLRUList() : m_head(nullptr), m_tail(nullptr) { }
-    void trace(Visitor*);
 };
 
 }
@@ -129,7 +127,6 @@
 public:
     static PassOwnPtr<MemoryCache> create();
     ~MemoryCache();
-    void trace(Visitor*);
 
     struct TypeStatistic {
         int count;
diff --git a/sky/engine/core/fetch/Resource.cpp b/sky/engine/core/fetch/Resource.cpp
index c632c79..f3abc4c 100644
--- a/sky/engine/core/fetch/Resource.cpp
+++ b/sky/engine/core/fetch/Resource.cpp
@@ -153,13 +153,6 @@
 {
 }
 
-void Resource::trace(Visitor* visitor)
-{
-    visitor->trace(m_loader);
-    visitor->trace(m_resourceToRevalidate);
-    visitor->trace(m_proxyResource);
-}
-
 void Resource::failBeforeStarting()
 {
     WTF_LOG(ResourceLoading, "Cannot start loading '%s'", url().string().latin1().data());
diff --git a/sky/engine/core/fetch/Resource.h b/sky/engine/core/fetch/Resource.h
index 706f6d1..6812056 100644
--- a/sky/engine/core/fetch/Resource.h
+++ b/sky/engine/core/fetch/Resource.h
@@ -85,7 +85,6 @@
 public:
 #endif
     virtual void dispose();
-    virtual void trace(Visitor*);
     static unsigned instanceCount() { return s_instanceCount; }
 
     virtual void load(ResourceFetcher*, const ResourceLoaderOptions&);
diff --git a/sky/engine/core/fetch/ResourceLoader.cpp b/sky/engine/core/fetch/ResourceLoader.cpp
index d18a656..f9b87dc 100644
--- a/sky/engine/core/fetch/ResourceLoader.cpp
+++ b/sky/engine/core/fetch/ResourceLoader.cpp
@@ -90,12 +90,6 @@
     ASSERT(m_state == Terminated);
 }
 
-void ResourceLoader::trace(Visitor* visitor)
-{
-    visitor->trace(m_host);
-    visitor->trace(m_resource);
-}
-
 void ResourceLoader::releaseResources()
 {
     ASSERT(m_state != Terminated);
diff --git a/sky/engine/core/fetch/ResourceLoader.h b/sky/engine/core/fetch/ResourceLoader.h
index 2c4bd27..31d5363 100644
--- a/sky/engine/core/fetch/ResourceLoader.h
+++ b/sky/engine/core/fetch/ResourceLoader.h
@@ -48,7 +48,6 @@
 public:
     static PassRefPtr<ResourceLoader> create(ResourceLoaderHost*, Resource*, const ResourceRequest&, const ResourceLoaderOptions&);
     virtual ~ResourceLoader();
-    void trace(Visitor*);
 
     void start();
 
diff --git a/sky/engine/core/fetch/ResourceLoaderHost.h b/sky/engine/core/fetch/ResourceLoaderHost.h
index 207535c..e189791 100644
--- a/sky/engine/core/fetch/ResourceLoaderHost.h
+++ b/sky/engine/core/fetch/ResourceLoaderHost.h
@@ -67,8 +67,6 @@
 
     virtual bool isLoadedBy(ResourceLoaderHost*) const = 0;
 
-    virtual void trace(Visitor*) { }
-
 #if !ENABLE(OILPAN)
     virtual void refResourceLoaderHost() = 0;
     virtual void derefResourceLoaderHost() = 0;
diff --git a/sky/engine/core/fetch/ResourceLoaderSet.cpp b/sky/engine/core/fetch/ResourceLoaderSet.cpp
index bb2b8c2..57ee0e7 100644
--- a/sky/engine/core/fetch/ResourceLoaderSet.cpp
+++ b/sky/engine/core/fetch/ResourceLoaderSet.cpp
@@ -40,13 +40,6 @@
     return adoptPtr(new ResourceLoaderSet);
 }
 
-void ResourceLoaderSet::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_set);
-#endif
-}
-
 void ResourceLoaderSet::cancelAll()
 {
     Vector<RefPtr<ResourceLoader> > loadersCopy;
diff --git a/sky/engine/core/fetch/ResourceLoaderSet.h b/sky/engine/core/fetch/ResourceLoaderSet.h
index 936d661..ce9195b 100644
--- a/sky/engine/core/fetch/ResourceLoaderSet.h
+++ b/sky/engine/core/fetch/ResourceLoaderSet.h
@@ -41,7 +41,6 @@
     typedef HashSet<RefPtr<ResourceLoader> > SetType;
 
     static PassOwnPtr<ResourceLoaderSet> create();
-    void trace(Visitor*);
 
     void add(const RefPtr<ResourceLoader>& loader) { m_set.add(loader); }
     void remove(const RefPtr<ResourceLoader>& loader) { m_set.remove(loader); }
diff --git a/sky/engine/core/frame/Console.h b/sky/engine/core/frame/Console.h
index 8971a3e..aace58c 100644
--- a/sky/engine/core/frame/Console.h
+++ b/sky/engine/core/frame/Console.h
@@ -54,8 +54,6 @@
 
     PassRefPtr<MemoryInfo> memory() const;
 
-    virtual void trace(Visitor* visitor) override { ConsoleBase::trace(visitor); }
-
 protected:
     virtual ExecutionContext* context() override;
     virtual void reportMessageToConsole(PassRefPtr<ConsoleMessage>) override;
diff --git a/sky/engine/core/frame/ConsoleBase.h b/sky/engine/core/frame/ConsoleBase.h
index 18dee3b..f3559c6 100644
--- a/sky/engine/core/frame/ConsoleBase.h
+++ b/sky/engine/core/frame/ConsoleBase.h
@@ -74,8 +74,6 @@
     void groupCollapsed(ScriptState*, PassRefPtr<ScriptArguments>);
     void groupEnd();
 
-    virtual void trace(Visitor*) { }
-
     virtual ~ConsoleBase();
 
 protected:
diff --git a/sky/engine/core/frame/FrameConsole.cpp b/sky/engine/core/frame/FrameConsole.cpp
index ce351e5..b59a8d3 100644
--- a/sky/engine/core/frame/FrameConsole.cpp
+++ b/sky/engine/core/frame/FrameConsole.cpp
@@ -170,9 +170,4 @@
     messageStorage()->clear();
 }
 
-void FrameConsole::trace(Visitor* visitor)
-{
-    visitor->trace(m_consoleMessageStorage);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/frame/FrameConsole.h b/sky/engine/core/frame/FrameConsole.h
index b2d9d4e..60b76c3 100644
--- a/sky/engine/core/frame/FrameConsole.h
+++ b/sky/engine/core/frame/FrameConsole.h
@@ -66,8 +66,6 @@
     ConsoleMessageStorage* messageStorage();
     void clearMessages();
 
-    void trace(Visitor*);
-
 private:
     explicit FrameConsole(LocalFrame&);
 
diff --git a/sky/engine/core/frame/FrameHost.cpp b/sky/engine/core/frame/FrameHost.cpp
index 2ca340c..6dfc42a 100644
--- a/sky/engine/core/frame/FrameHost.cpp
+++ b/sky/engine/core/frame/FrameHost.cpp
@@ -73,9 +73,4 @@
     return m_page->deviceScaleFactor();
 }
 
-void FrameHost::trace(Visitor* visitor)
-{
-    visitor->trace(m_page);
-}
-
 }
diff --git a/sky/engine/core/frame/FrameHost.h b/sky/engine/core/frame/FrameHost.h
index 6b59b89..0089a0a 100644
--- a/sky/engine/core/frame/FrameHost.h
+++ b/sky/engine/core/frame/FrameHost.h
@@ -74,8 +74,6 @@
     // This value does not account for Page zoom, use LocalFrame::devicePixelRatio instead.
     float deviceScaleFactor() const;
 
-    void trace(Visitor*);
-
 private:
     FrameHost(Page&, ServiceProvider&);
 
diff --git a/sky/engine/core/frame/History.h b/sky/engine/core/frame/History.h
index a616c67..a4b1fc4 100644
--- a/sky/engine/core/frame/History.h
+++ b/sky/engine/core/frame/History.h
@@ -62,8 +62,6 @@
 
     void stateObjectAdded(PassRefPtr<SerializedScriptValue>, const String& title, const String& url, FrameLoadType, ExceptionState&);
 
-    void trace(Visitor*) { }
-
 private:
     explicit History(LocalFrame*);
 
diff --git a/sky/engine/core/frame/ImageBitmap.cpp b/sky/engine/core/frame/ImageBitmap.cpp
index 7414b4e..2cd85f8 100644
--- a/sky/engine/core/frame/ImageBitmap.cpp
+++ b/sky/engine/core/frame/ImageBitmap.cpp
@@ -186,10 +186,4 @@
     return FloatSize(width(), height());
 }
 
-void ImageBitmap::trace(Visitor* visitor)
-{
-    visitor->trace(m_imageElement);
-    ImageLoaderClient::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/frame/ImageBitmap.h b/sky/engine/core/frame/ImageBitmap.h
index 953ca59..602021c 100644
--- a/sky/engine/core/frame/ImageBitmap.h
+++ b/sky/engine/core/frame/ImageBitmap.h
@@ -44,8 +44,6 @@
     virtual void adjustDrawRects(FloatRect* srcRect, FloatRect* dstRect) const override;
     virtual FloatSize sourceSize() const override;
 
-    virtual void trace(Visitor*);
-
 private:
     ImageBitmap(HTMLImageElement*, const IntRect&);
     ImageBitmap(HTMLCanvasElement*, const IntRect&);
diff --git a/sky/engine/core/frame/Location.h b/sky/engine/core/frame/Location.h
index c88d5b1..f527ba5 100644
--- a/sky/engine/core/frame/Location.h
+++ b/sky/engine/core/frame/Location.h
@@ -76,8 +76,6 @@
 
     PassRefPtr<DOMStringList> ancestorOrigins() const;
 
-    void trace(Visitor*) { }
-
 private:
     explicit Location(LocalFrame*);
 
diff --git a/sky/engine/core/html/ClassList.cpp b/sky/engine/core/html/ClassList.cpp
index 066cb91..35e32c1 100644
--- a/sky/engine/core/html/ClassList.cpp
+++ b/sky/engine/core/html/ClassList.cpp
@@ -66,10 +66,4 @@
     return m_element->classNames();
 }
 
-void ClassList::trace(Visitor* visitor)
-{
-    visitor->trace(m_element);
-    DOMTokenList::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/ClassList.h b/sky/engine/core/html/ClassList.h
index e098ec2..d5384f8 100644
--- a/sky/engine/core/html/ClassList.h
+++ b/sky/engine/core/html/ClassList.h
@@ -55,8 +55,6 @@
 
     virtual Element* element() override { return m_element; }
 
-    virtual void trace(Visitor*) override;
-
 private:
     explicit ClassList(Element*);
 
diff --git a/sky/engine/core/html/HTMLImageElement.cpp b/sky/engine/core/html/HTMLImageElement.cpp
index 428c08c..4bf05c9 100644
--- a/sky/engine/core/html/HTMLImageElement.cpp
+++ b/sky/engine/core/html/HTMLImageElement.cpp
@@ -59,14 +59,8 @@
             m_element->notifyViewportChanged();
     }
 
-#if !ENABLE(OILPAN)
     void clearElement() { m_element = nullptr; }
-#endif
-    virtual void trace(Visitor* visitor) override
-    {
-        visitor->trace(m_element);
-        MediaQueryListListener::trace(visitor);
-    }
+
 private:
     explicit ViewportChangeListener(HTMLImageElement* element) : m_element(element) { }
     RawPtr<HTMLImageElement> m_element;
@@ -102,13 +96,6 @@
 #endif
 }
 
-void HTMLImageElement::trace(Visitor* visitor)
-{
-    visitor->trace(m_imageLoader);
-    visitor->trace(m_listener);
-    HTMLElement::trace(visitor);
-}
-
 void HTMLImageElement::notifyViewportChanged()
 {
     // Re-selecting the source URL in order to pick a more fitting resource
diff --git a/sky/engine/core/html/HTMLImageElement.h b/sky/engine/core/html/HTMLImageElement.h
index 13dfd41..fc04974 100644
--- a/sky/engine/core/html/HTMLImageElement.h
+++ b/sky/engine/core/html/HTMLImageElement.h
@@ -45,7 +45,6 @@
     static PassRefPtr<HTMLImageElement> createForJSConstructor(Document&, int width, int height);
 
     virtual ~HTMLImageElement();
-    virtual void trace(Visitor*) override;
 
     int width(bool ignorePendingStylesheets = false);
     int height(bool ignorePendingStylesheets = false);
diff --git a/sky/engine/core/html/HTMLStyleElement.cpp b/sky/engine/core/html/HTMLStyleElement.cpp
index 200a133..8b78645 100644
--- a/sky/engine/core/html/HTMLStyleElement.cpp
+++ b/sky/engine/core/html/HTMLStyleElement.cpp
@@ -127,10 +127,4 @@
     return &document();
 }
 
-void HTMLStyleElement::trace(Visitor* visitor)
-{
-    StyleElement::trace(visitor);
-    HTMLElement::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/html/HTMLStyleElement.h b/sky/engine/core/html/HTMLStyleElement.h
index 7e6dc42..3793e00 100644
--- a/sky/engine/core/html/HTMLStyleElement.h
+++ b/sky/engine/core/html/HTMLStyleElement.h
@@ -43,8 +43,6 @@
 
     using StyleElement::sheet;
 
-    virtual void trace(Visitor*) override;
-
 private:
     HTMLStyleElement(Document&, bool createdByParser);
 
diff --git a/sky/engine/core/html/HTMLTemplateElement.cpp b/sky/engine/core/html/HTMLTemplateElement.cpp
index 5a7dffe..20b5a28 100644
--- a/sky/engine/core/html/HTMLTemplateElement.cpp
+++ b/sky/engine/core/html/HTMLTemplateElement.cpp
@@ -80,10 +80,4 @@
     document().ensureTemplateDocument().adoptIfNeeded(*m_content);
 }
 
-void HTMLTemplateElement::trace(Visitor* visitor)
-{
-    visitor->trace(m_content);
-    HTMLElement::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/HTMLTemplateElement.h b/sky/engine/core/html/HTMLTemplateElement.h
index ccaae5a..fce2e9c 100644
--- a/sky/engine/core/html/HTMLTemplateElement.h
+++ b/sky/engine/core/html/HTMLTemplateElement.h
@@ -43,7 +43,6 @@
 public:
     DECLARE_NODE_FACTORY(HTMLTemplateElement);
     virtual ~HTMLTemplateElement();
-    virtual void trace(Visitor*) override;
 
     DocumentFragment* content() const;
 
diff --git a/sky/engine/core/html/ImageData.h b/sky/engine/core/html/ImageData.h
index 1d9a955..ac22b43 100644
--- a/sky/engine/core/html/ImageData.h
+++ b/sky/engine/core/html/ImageData.h
@@ -53,8 +53,6 @@
     int height() const { return m_size.height(); }
     Uint8ClampedArray* data() const { return m_data.get(); }
 
-    void trace(Visitor*) { }
-
     virtual v8::Handle<v8::Object> wrap(v8::Handle<v8::Object> creationContext, v8::Isolate*) override;
 
 private:
diff --git a/sky/engine/core/html/TextMetrics.h b/sky/engine/core/html/TextMetrics.h
index 03be7f4..f33221c 100644
--- a/sky/engine/core/html/TextMetrics.h
+++ b/sky/engine/core/html/TextMetrics.h
@@ -74,8 +74,6 @@
     float ideographicBaseline() const { return m_ideographicBaseline; }
     void setIdeographicBaseline(float ideographicBaseline) { m_ideographicBaseline = ideographicBaseline; }
 
-    void trace(Visitor*) { }
-
 private:
     TextMetrics()
         : m_width(0)
diff --git a/sky/engine/core/html/VoidCallback.h b/sky/engine/core/html/VoidCallback.h
index 70cc895..c07a6d5 100644
--- a/sky/engine/core/html/VoidCallback.h
+++ b/sky/engine/core/html/VoidCallback.h
@@ -33,7 +33,6 @@
 class VoidCallback {
 public:
     virtual ~VoidCallback() { }
-    virtual void trace(Visitor*) { }
     virtual void handleEvent() = 0;
 };
 
diff --git a/sky/engine/core/html/canvas/CanvasContextAttributes.h b/sky/engine/core/html/canvas/CanvasContextAttributes.h
index d78db19..556976f 100644
--- a/sky/engine/core/html/canvas/CanvasContextAttributes.h
+++ b/sky/engine/core/html/canvas/CanvasContextAttributes.h
@@ -38,7 +38,6 @@
 class CanvasContextAttributes : public RefCounted<CanvasContextAttributes> {
     DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(CanvasContextAttributes);
 public:
-    virtual void trace(Visitor*) { }
 
 protected:
     CanvasContextAttributes();
diff --git a/sky/engine/core/html/canvas/CanvasGradient.h b/sky/engine/core/html/canvas/CanvasGradient.h
index 30a246f..376833d 100644
--- a/sky/engine/core/html/canvas/CanvasGradient.h
+++ b/sky/engine/core/html/canvas/CanvasGradient.h
@@ -54,8 +54,6 @@
 
     void addColorStop(float value, const String& color, ExceptionState&);
 
-    void trace(Visitor*) { }
-
 private:
     CanvasGradient(const FloatPoint& p0, const FloatPoint& p1);
     CanvasGradient(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1);
diff --git a/sky/engine/core/html/canvas/CanvasPattern.h b/sky/engine/core/html/canvas/CanvasPattern.h
index 3e48e42..4f6b49f 100644
--- a/sky/engine/core/html/canvas/CanvasPattern.h
+++ b/sky/engine/core/html/canvas/CanvasPattern.h
@@ -49,8 +49,6 @@
 
     Pattern* pattern() const { return m_pattern.get(); }
 
-    void trace(Visitor*) { }
-
 private:
     CanvasPattern(PassRefPtr<Image>, Pattern::RepeatMode);
 
diff --git a/sky/engine/core/html/canvas/CanvasRenderingContext.h b/sky/engine/core/html/canvas/CanvasRenderingContext.h
index 1fcbcbe..e3b412a 100644
--- a/sky/engine/core/html/canvas/CanvasRenderingContext.h
+++ b/sky/engine/core/html/canvas/CanvasRenderingContext.h
@@ -64,8 +64,6 @@
 
     virtual blink::WebLayer* platformLayer() const { return 0; }
 
-    virtual void trace(Visitor* visitor) { visitor->trace(m_canvas); }
-
 protected:
     CanvasRenderingContext(HTMLCanvasElement*);
 
diff --git a/sky/engine/core/html/canvas/CanvasRenderingContext2D.cpp b/sky/engine/core/html/canvas/CanvasRenderingContext2D.cpp
index 18467c3..53657df 100644
--- a/sky/engine/core/html/canvas/CanvasRenderingContext2D.cpp
+++ b/sky/engine/core/html/canvas/CanvasRenderingContext2D.cpp
@@ -161,16 +161,6 @@
     }
 }
 
-void CanvasRenderingContext2D::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_stateStack);
-    visitor->trace(m_fetchedFonts);
-    visitor->trace(m_hitRegionManager);
-#endif
-    CanvasRenderingContext::trace(visitor);
-}
-
 void CanvasRenderingContext2D::dispatchContextLostEvent(Timer<CanvasRenderingContext2D>*)
 {
     if (contextLostRestoredEventsEnabled()) {
@@ -354,13 +344,6 @@
     m_font.update(fontSelector);
 }
 
-void CanvasRenderingContext2D::State::trace(Visitor* visitor)
-{
-    visitor->trace(m_strokeStyle);
-    visitor->trace(m_fillStyle);
-    CSSFontSelectorClient::trace(visitor);
-}
-
 void CanvasRenderingContext2D::realizeSaves(GraphicsContext* context)
 {
     validateStateStack();
diff --git a/sky/engine/core/html/canvas/CanvasRenderingContext2D.h b/sky/engine/core/html/canvas/CanvasRenderingContext2D.h
index 85ee610..59ceafc 100644
--- a/sky/engine/core/html/canvas/CanvasRenderingContext2D.h
+++ b/sky/engine/core/html/canvas/CanvasRenderingContext2D.h
@@ -234,8 +234,6 @@
     void loseContext();
     void restoreContext();
 
-    virtual void trace(Visitor*) override;
-
 private:
     enum Direction {
         DirectionInherit,
@@ -254,8 +252,6 @@
         // CSSFontSelectorClient implementation
         virtual void fontsNeedUpdate(CSSFontSelector*) override;
 
-        virtual void trace(Visitor*) override;
-
         unsigned m_unrealizedSaveCount;
 
         String m_unparsedStrokeColor;
diff --git a/sky/engine/core/html/canvas/CanvasStyle.cpp b/sky/engine/core/html/canvas/CanvasStyle.cpp
index c8576e0..788a234 100644
--- a/sky/engine/core/html/canvas/CanvasStyle.cpp
+++ b/sky/engine/core/html/canvas/CanvasStyle.cpp
@@ -272,10 +272,4 @@
     }
 }
 
-void CanvasStyle::trace(Visitor* visitor)
-{
-    visitor->trace(m_gradient);
-    visitor->trace(m_pattern);
-}
-
 }
diff --git a/sky/engine/core/html/canvas/CanvasStyle.h b/sky/engine/core/html/canvas/CanvasStyle.h
index e34c23e..a709a1c 100644
--- a/sky/engine/core/html/canvas/CanvasStyle.h
+++ b/sky/engine/core/html/canvas/CanvasStyle.h
@@ -66,8 +66,6 @@
         bool isEquivalentRGBA(float r, float g, float b, float a) const;
         bool isEquivalentCMYKA(float c, float m, float y, float k, float a) const;
 
-        void trace(Visitor*);
-
     private:
         enum Type { RGBA, CMYKA, Gradient, ImagePattern, CurrentColor, CurrentColorWithOverrideAlpha };
 
diff --git a/sky/engine/core/html/canvas/HitRegion.cpp b/sky/engine/core/html/canvas/HitRegion.cpp
index aa9b27b..99f785f 100644
--- a/sky/engine/core/html/canvas/HitRegion.cpp
+++ b/sky/engine/core/html/canvas/HitRegion.cpp
@@ -31,11 +31,6 @@
     m_path.subtractPath(clearArea);
 }
 
-void HitRegion::trace(Visitor* visitor)
-{
-    visitor->trace(m_control);
-}
-
 void HitRegionManager::addHitRegion(PassRefPtr<HitRegion> passHitRegion)
 {
     RefPtr<HitRegion> hitRegion = passHitRegion;
@@ -133,15 +128,6 @@
     return m_hitRegionList.size();
 }
 
-void HitRegionManager::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_hitRegionList);
-    visitor->trace(m_hitRegionIdMap);
-    visitor->trace(m_hitRegionControlMap);
-#endif
-}
-
 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(HitRegionManager)
 
 } // namespace blink
diff --git a/sky/engine/core/html/canvas/HitRegion.h b/sky/engine/core/html/canvas/HitRegion.h
index 4daf5e0..14a2504 100644
--- a/sky/engine/core/html/canvas/HitRegion.h
+++ b/sky/engine/core/html/canvas/HitRegion.h
@@ -46,8 +46,6 @@
     Element* control() const { return m_control.get(); }
     WindRule fillRule() const { return m_fillRule; }
 
-    void trace(Visitor*);
-
 private:
     explicit HitRegion(const HitRegionOptions&);
 
@@ -77,8 +75,6 @@
 
     unsigned getHitRegionsCount() const;
 
-    void trace(Visitor*);
-
 private:
     HitRegionManager() { }
 
diff --git a/sky/engine/core/html/canvas/Path2D.h b/sky/engine/core/html/canvas/Path2D.h
index 3794f25..6f96bb9 100644
--- a/sky/engine/core/html/canvas/Path2D.h
+++ b/sky/engine/core/html/canvas/Path2D.h
@@ -55,7 +55,6 @@
     }
 
     virtual ~Path2D() { }
-    void trace(Visitor*) { }
 
 private:
     Path2D() : CanvasPathMethods()
diff --git a/sky/engine/core/html/canvas/WebGLActiveInfo.h b/sky/engine/core/html/canvas/WebGLActiveInfo.h
index 1fe4d74..3553678 100644
--- a/sky/engine/core/html/canvas/WebGLActiveInfo.h
+++ b/sky/engine/core/html/canvas/WebGLActiveInfo.h
@@ -45,8 +45,6 @@
     GLenum type() const { return m_type; }
     GLint size() const { return m_size; }
 
-    void trace(Visitor*) { }
-
 private:
     WebGLActiveInfo(const String& name, GLenum type, GLint size)
         : m_name(name)
diff --git a/sky/engine/core/html/canvas/WebGLContextEvent.cpp b/sky/engine/core/html/canvas/WebGLContextEvent.cpp
index bceb93f..12424ab 100644
--- a/sky/engine/core/html/canvas/WebGLContextEvent.cpp
+++ b/sky/engine/core/html/canvas/WebGLContextEvent.cpp
@@ -57,9 +57,4 @@
     return EventNames::WebGLContextEvent;
 }
 
-void WebGLContextEvent::trace(Visitor* visitor)
-{
-    Event::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/canvas/WebGLContextEvent.h b/sky/engine/core/html/canvas/WebGLContextEvent.h
index 659ef27..5fb3811 100644
--- a/sky/engine/core/html/canvas/WebGLContextEvent.h
+++ b/sky/engine/core/html/canvas/WebGLContextEvent.h
@@ -58,8 +58,6 @@
 
     virtual const AtomicString& interfaceName() const override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     WebGLContextEvent();
     WebGLContextEvent(const AtomicString& type, bool canBubble, bool cancelable, const String& statusMessage);
diff --git a/sky/engine/core/html/canvas/WebGLExtension.cpp b/sky/engine/core/html/canvas/WebGLExtension.cpp
index 8070663..042be62 100644
--- a/sky/engine/core/html/canvas/WebGLExtension.cpp
+++ b/sky/engine/core/html/canvas/WebGLExtension.cpp
@@ -38,9 +38,4 @@
 {
 }
 
-void WebGLExtension::trace(Visitor* visitor)
-{
-    visitor->trace(m_context);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/canvas/WebGLExtension.h b/sky/engine/core/html/canvas/WebGLExtension.h
index 4fd5f72..a48fffd 100644
--- a/sky/engine/core/html/canvas/WebGLExtension.h
+++ b/sky/engine/core/html/canvas/WebGLExtension.h
@@ -54,8 +54,6 @@
         return !m_context;
     }
 
-    virtual void trace(Visitor*);
-
 protected:
     explicit WebGLExtension(WebGLRenderingContextBase*);
 
diff --git a/sky/engine/core/html/canvas/WebGLObject.h b/sky/engine/core/html/canvas/WebGLObject.h
index c054918..cf648d0 100644
--- a/sky/engine/core/html/canvas/WebGLObject.h
+++ b/sky/engine/core/html/canvas/WebGLObject.h
@@ -61,8 +61,6 @@
     // True if this object belongs to the group or context.
     virtual bool validate(const WebGLContextGroup*, const WebGLRenderingContextBase*) const = 0;
 
-    virtual void trace(Visitor*) { }
-
 protected:
     explicit WebGLObject(WebGLRenderingContextBase*);
 
diff --git a/sky/engine/core/html/canvas/WebGLRenderbuffer.cpp b/sky/engine/core/html/canvas/WebGLRenderbuffer.cpp
index e0a8e45..81e73a5 100644
--- a/sky/engine/core/html/canvas/WebGLRenderbuffer.cpp
+++ b/sky/engine/core/html/canvas/WebGLRenderbuffer.cpp
@@ -76,10 +76,4 @@
     m_emulatedStencilBuffer.clear();
 }
 
-void WebGLRenderbuffer::trace(Visitor* visitor)
-{
-    visitor->trace(m_emulatedStencilBuffer);
-    WebGLSharedObject::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/html/canvas/WebGLRenderbuffer.h b/sky/engine/core/html/canvas/WebGLRenderbuffer.h
index 22dab16..001f55d 100644
--- a/sky/engine/core/html/canvas/WebGLRenderbuffer.h
+++ b/sky/engine/core/html/canvas/WebGLRenderbuffer.h
@@ -62,8 +62,6 @@
     WebGLRenderbuffer* emulatedStencilBuffer() const { return m_emulatedStencilBuffer.get(); }
     void deleteEmulatedStencilBuffer(blink::WebGraphicsContext3D* context3d);
 
-    virtual void trace(Visitor*) override;
-
 protected:
     explicit WebGLRenderbuffer(WebGLRenderingContextBase*);
 
diff --git a/sky/engine/core/html/canvas/WebGLRenderingContext.cpp b/sky/engine/core/html/canvas/WebGLRenderingContext.cpp
index c4fe5e3..a769206 100644
--- a/sky/engine/core/html/canvas/WebGLRenderingContext.cpp
+++ b/sky/engine/core/html/canvas/WebGLRenderingContext.cpp
@@ -138,30 +138,4 @@
     registerExtension<WebGLLoseContext>(m_webglLoseContext, ApprovedExtension, bothPrefixes);
 }
 
-void WebGLRenderingContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_angleInstancedArrays);
-    visitor->trace(m_extBlendMinMax);
-    visitor->trace(m_extFragDepth);
-    visitor->trace(m_extShaderTextureLOD);
-    visitor->trace(m_extTextureFilterAnisotropic);
-    visitor->trace(m_oesTextureFloat);
-    visitor->trace(m_oesTextureFloatLinear);
-    visitor->trace(m_oesTextureHalfFloat);
-    visitor->trace(m_oesTextureHalfFloatLinear);
-    visitor->trace(m_oesStandardDerivatives);
-    visitor->trace(m_oesVertexArrayObject);
-    visitor->trace(m_oesElementIndexUint);
-    visitor->trace(m_webglLoseContext);
-    visitor->trace(m_webglDebugRendererInfo);
-    visitor->trace(m_webglDebugShaders);
-    visitor->trace(m_webglDrawBuffers);
-    visitor->trace(m_webglCompressedTextureATC);
-    visitor->trace(m_webglCompressedTextureETC1);
-    visitor->trace(m_webglCompressedTexturePVRTC);
-    visitor->trace(m_webglCompressedTextureS3TC);
-    visitor->trace(m_webglDepthTexture);
-    WebGLRenderingContextBase::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/canvas/WebGLRenderingContext.h b/sky/engine/core/html/canvas/WebGLRenderingContext.h
index 65ee90c..b79e634 100644
--- a/sky/engine/core/html/canvas/WebGLRenderingContext.h
+++ b/sky/engine/core/html/canvas/WebGLRenderingContext.h
@@ -41,8 +41,6 @@
     virtual String contextName() const override { return "WebGLRenderingContext"; }
     virtual void registerContextExtensions() override;
 
-    virtual void trace(Visitor*) override;
-
 private:
     WebGLRenderingContext(HTMLCanvasElement*, PassOwnPtr<blink::WebGraphicsContext3D>, WebGLContextAttributes*);
 
diff --git a/sky/engine/core/html/canvas/WebGLRenderingContextBase.cpp b/sky/engine/core/html/canvas/WebGLRenderingContextBase.cpp
index 893bfd1..cae6902 100644
--- a/sky/engine/core/html/canvas/WebGLRenderingContextBase.cpp
+++ b/sky/engine/core/html/canvas/WebGLRenderingContextBase.cpp
@@ -504,11 +504,6 @@
 
     virtual void onContextLost() { m_context->forceLostContext(WebGLRenderingContextBase::RealLostContext, WebGLRenderingContextBase::Auto); }
 
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(m_context);
-    }
-
 private:
     explicit WebGLRenderingContextLostCallback(WebGLRenderingContextBase* context)
         : m_context(context) { }
@@ -532,11 +527,6 @@
             m_context->printGLErrorToConsole(message);
     }
 
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(m_context);
-    }
-
 private:
     explicit WebGLRenderingContextErrorMessageCallback(WebGLRenderingContextBase* context)
         : m_context(context) { }
@@ -5612,34 +5602,6 @@
     m_onePlusMaxNonDefaultTextureUnit = 0;
 }
 
-void WebGLRenderingContextBase::TextureUnitState::trace(Visitor* visitor)
-{
-    visitor->trace(m_texture2DBinding);
-    visitor->trace(m_textureCubeMapBinding);
-}
-
-void WebGLRenderingContextBase::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_contextObjects);
-#endif
-    visitor->trace(m_contextLostCallbackAdapter);
-    visitor->trace(m_errorMessageCallbackAdapter);
-    visitor->trace(m_boundArrayBuffer);
-    visitor->trace(m_defaultVertexArrayObject);
-    visitor->trace(m_boundVertexArrayObject);
-    visitor->trace(m_vertexAttrib0Buffer);
-    visitor->trace(m_currentProgram);
-    visitor->trace(m_framebufferBinding);
-    visitor->trace(m_renderbufferBinding);
-    visitor->trace(m_textureUnits);
-    visitor->trace(m_blackTexture2D);
-    visitor->trace(m_blackTextureCubeMap);
-    visitor->trace(m_requestedAttributes);
-    visitor->trace(m_extensions);
-    CanvasRenderingContext::trace(visitor);
-}
-
 #if ENABLE(OILPAN)
 PassRefPtr<WebGLSharedWebGraphicsContext3D> WebGLRenderingContextBase::sharedWebGraphicsContext3D() const
 {
diff --git a/sky/engine/core/html/canvas/WebGLRenderingContextBase.h b/sky/engine/core/html/canvas/WebGLRenderingContextBase.h
index 6a55fb7..e898dab 100644
--- a/sky/engine/core/html/canvas/WebGLRenderingContextBase.h
+++ b/sky/engine/core/html/canvas/WebGLRenderingContextBase.h
@@ -355,15 +355,11 @@
 
     void setSavingImage(bool isSaving) { m_savingImage = isSaving; }
 
-    virtual void trace(Visitor*) override;
-
     class TextureUnitState {
         ALLOW_ONLY_INLINE_ALLOCATION();
     public:
         RefPtr<WebGLTexture> m_texture2DBinding;
         RefPtr<WebGLTexture> m_textureCubeMapBinding;
-
-        void trace(Visitor*);
     };
 
 protected:
@@ -599,8 +595,6 @@
         virtual const char* extensionName() const = 0;
         virtual void loseExtension() = 0;
 
-        virtual void trace(Visitor*) { }
-
     private:
         bool m_draft;
         const char* const* m_prefixes;
@@ -653,12 +647,6 @@
             }
         }
 
-        virtual void trace(Visitor* visitor) override
-        {
-            visitor->trace(m_extension);
-            ExtensionTracker::trace(visitor);
-        }
-
     private:
         TypedExtensionTracker(RefPtr<T>& extensionField, ExtensionFlags flags, const char* const* prefixes)
             : ExtensionTracker(flags, prefixes)
diff --git a/sky/engine/core/html/canvas/WebGLShaderPrecisionFormat.h b/sky/engine/core/html/canvas/WebGLShaderPrecisionFormat.h
index 74ab35a..f806d57 100644
--- a/sky/engine/core/html/canvas/WebGLShaderPrecisionFormat.h
+++ b/sky/engine/core/html/canvas/WebGLShaderPrecisionFormat.h
@@ -44,8 +44,6 @@
     GLint rangeMax() const;
     GLint precision() const;
 
-    void trace(Visitor*) { }
-
 private:
     WebGLShaderPrecisionFormat(GLint rangeMin, GLint rangeMax, GLint precision);
 
diff --git a/sky/engine/core/html/canvas/WebGLUniformLocation.cpp b/sky/engine/core/html/canvas/WebGLUniformLocation.cpp
index d4dd1da..1105e55 100644
--- a/sky/engine/core/html/canvas/WebGLUniformLocation.cpp
+++ b/sky/engine/core/html/canvas/WebGLUniformLocation.cpp
@@ -60,9 +60,4 @@
     return m_location;
 }
 
-void WebGLUniformLocation::trace(Visitor* visitor)
-{
-    visitor->trace(m_program);
-}
-
 }
diff --git a/sky/engine/core/html/canvas/WebGLUniformLocation.h b/sky/engine/core/html/canvas/WebGLUniformLocation.h
index cd168d6..629db85 100644
--- a/sky/engine/core/html/canvas/WebGLUniformLocation.h
+++ b/sky/engine/core/html/canvas/WebGLUniformLocation.h
@@ -43,8 +43,6 @@
 
     GLint location() const;
 
-    void trace(Visitor*);
-
 protected:
     WebGLUniformLocation(WebGLProgram*, GLint location);
 
diff --git a/sky/engine/core/html/ime/InputMethodContext.cpp b/sky/engine/core/html/ime/InputMethodContext.cpp
index a0c2f5b..9bbda1c 100644
--- a/sky/engine/core/html/ime/InputMethodContext.cpp
+++ b/sky/engine/core/html/ime/InputMethodContext.cpp
@@ -177,10 +177,4 @@
     dispatchEvent(Event::create(EventTypeNames::candidatewindowhide));
 }
 
-void InputMethodContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_element);
-    EventTargetWithInlineData::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/ime/InputMethodContext.h b/sky/engine/core/html/ime/InputMethodContext.h
index 477134d..f8b4f9f 100644
--- a/sky/engine/core/html/ime/InputMethodContext.h
+++ b/sky/engine/core/html/ime/InputMethodContext.h
@@ -73,8 +73,6 @@
     void dispatchCandidateWindowUpdateEvent();
     void dispatchCandidateWindowHideEvent();
 
-    virtual void trace(Visitor*) override;
-
 private:
     InputMethodContext(HTMLElement*);
     bool hasFocus() const;
diff --git a/sky/engine/core/html/imports/HTMLImport.h b/sky/engine/core/html/imports/HTMLImport.h
index 711a962..670dd23 100644
--- a/sky/engine/core/html/imports/HTMLImport.h
+++ b/sky/engine/core/html/imports/HTMLImport.h
@@ -119,8 +119,6 @@
     virtual void stateWillChange() { }
     virtual void stateDidChange();
 
-    virtual void trace(Visitor*) { }
-
 protected:
     // Stating from most conservative state.
     // It will be corrected through state update flow.
diff --git a/sky/engine/core/html/imports/HTMLImportChild.cpp b/sky/engine/core/html/imports/HTMLImportChild.cpp
index 6813e65..d39d490 100644
--- a/sky/engine/core/html/imports/HTMLImportChild.cpp
+++ b/sky/engine/core/html/imports/HTMLImportChild.cpp
@@ -227,12 +227,4 @@
 }
 #endif
 
-void HTMLImportChild::trace(Visitor* visitor)
-{
-    visitor->trace(m_customElementMicrotaskStep);
-    visitor->trace(m_loader);
-    visitor->trace(m_client);
-    HTMLImport::trace(visitor);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/imports/HTMLImportChild.h b/sky/engine/core/html/imports/HTMLImportChild.h
index fd63467..c3dd934 100644
--- a/sky/engine/core/html/imports/HTMLImportChild.h
+++ b/sky/engine/core/html/imports/HTMLImportChild.h
@@ -74,7 +74,6 @@
     virtual HTMLImportLoader* loader() const override;
     virtual void stateWillChange() override;
     virtual void stateDidChange() override;
-    virtual void trace(Visitor*) override;
 
 #if !defined(NDEBUG)
     virtual void showThis() override;
diff --git a/sky/engine/core/html/imports/HTMLImportChildClient.h b/sky/engine/core/html/imports/HTMLImportChildClient.h
index b82d7b8..da3fa3e 100644
--- a/sky/engine/core/html/imports/HTMLImportChildClient.h
+++ b/sky/engine/core/html/imports/HTMLImportChildClient.h
@@ -45,7 +45,6 @@
 #endif
     virtual bool isSync() const = 0;
     virtual Element* link() = 0;
-    virtual void trace(Visitor*) { }
 };
 
 } // namespace blink
diff --git a/sky/engine/core/html/imports/HTMLImportLoader.cpp b/sky/engine/core/html/imports/HTMLImportLoader.cpp
index ce598b9..44dc906 100644
--- a/sky/engine/core/html/imports/HTMLImportLoader.cpp
+++ b/sky/engine/core/html/imports/HTMLImportLoader.cpp
@@ -196,14 +196,4 @@
     return m_microtaskQueue;
 }
 
-void HTMLImportLoader::trace(Visitor* visitor)
-{
-    visitor->trace(m_controller);
-#if ENABLE(OILPAN)
-    visitor->trace(m_imports);
-#endif
-    visitor->trace(m_document);
-    visitor->trace(m_microtaskQueue);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/html/imports/HTMLImportLoader.h b/sky/engine/core/html/imports/HTMLImportLoader.h
index a96cc4e..fc6e2ae 100644
--- a/sky/engine/core/html/imports/HTMLImportLoader.h
+++ b/sky/engine/core/html/imports/HTMLImportLoader.h
@@ -93,8 +93,6 @@
 
     PassRefPtr<CustomElementSyncMicrotaskQueue> microtaskQueue() const;
 
-    virtual void trace(Visitor*);
-
 private:
     HTMLImportLoader(HTMLImportsController*);
 
diff --git a/sky/engine/core/html/imports/HTMLImportTreeRoot.cpp b/sky/engine/core/html/imports/HTMLImportTreeRoot.cpp
index d1b86c7..8b4bba6 100644
--- a/sky/engine/core/html/imports/HTMLImportTreeRoot.cpp
+++ b/sky/engine/core/html/imports/HTMLImportTreeRoot.cpp
@@ -99,11 +99,4 @@
     } while (m_recalcTimer.isActive());
 }
 
-void HTMLImportTreeRoot::trace(Visitor* visitor)
-{
-    visitor->trace(m_document);
-    visitor->trace(m_imports);
-    HTMLImport::trace(visitor);
-}
-
 }
diff --git a/sky/engine/core/html/imports/HTMLImportTreeRoot.h b/sky/engine/core/html/imports/HTMLImportTreeRoot.h
index 60eede1..6114ebd 100644
--- a/sky/engine/core/html/imports/HTMLImportTreeRoot.h
+++ b/sky/engine/core/html/imports/HTMLImportTreeRoot.h
@@ -30,8 +30,6 @@
     HTMLImportChild* add(PassOwnPtr<HTMLImportChild>);
     HTMLImportChild* find(const KURL&) const;
 
-    virtual void trace(Visitor*) override;
-
 private:
     explicit HTMLImportTreeRoot(Document*);
 
diff --git a/sky/engine/core/html/parser/HTMLConstructionSite.cpp b/sky/engine/core/html/parser/HTMLConstructionSite.cpp
index 91dc06f..daee337 100644
--- a/sky/engine/core/html/parser/HTMLConstructionSite.cpp
+++ b/sky/engine/core/html/parser/HTMLConstructionSite.cpp
@@ -262,14 +262,6 @@
     ASSERT(m_pendingText.isEmpty());
 }
 
-void HTMLConstructionSite::trace(Visitor* visitor)
-{
-    visitor->trace(m_document);
-    visitor->trace(m_attachmentRoot);
-    visitor->trace(m_taskQueue);
-    visitor->trace(m_pendingText);
-}
-
 void HTMLConstructionSite::detach()
 {
     // FIXME: We'd like to ASSERT here that we're canceling and not just discarding
@@ -360,10 +352,4 @@
     return element.release();
 }
 
-void HTMLConstructionSite::PendingText::trace(Visitor* visitor)
-{
-    visitor->trace(parent);
-    visitor->trace(nextChild);
-}
-
 }
diff --git a/sky/engine/core/html/parser/HTMLConstructionSite.h b/sky/engine/core/html/parser/HTMLConstructionSite.h
index d8d5e8c..c5cfe92 100644
--- a/sky/engine/core/html/parser/HTMLConstructionSite.h
+++ b/sky/engine/core/html/parser/HTMLConstructionSite.h
@@ -51,13 +51,6 @@
     {
     }
 
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(parent);
-        visitor->trace(nextChild);
-        visitor->trace(child);
-    }
-
     Operation operation;
     RefPtr<ContainerNode> parent;
     RefPtr<Node> nextChild;
@@ -90,7 +83,6 @@
     explicit HTMLConstructionSite(Document*);
     explicit HTMLConstructionSite(DocumentFragment*);
     ~HTMLConstructionSite();
-    void trace(Visitor*);
 
     void detach();
 
@@ -194,8 +186,6 @@
             return stringBuilder.isEmpty();
         }
 
-        void trace(Visitor*);
-
         RefPtr<ContainerNode> parent;
         RefPtr<Node> nextChild;
         StringBuilder stringBuilder;
diff --git a/sky/engine/core/html/parser/HTMLTreeBuilder.cpp b/sky/engine/core/html/parser/HTMLTreeBuilder.cpp
index 710a99d..a8f7e3a 100644
--- a/sky/engine/core/html/parser/HTMLTreeBuilder.cpp
+++ b/sky/engine/core/html/parser/HTMLTreeBuilder.cpp
@@ -90,11 +90,6 @@
 {
 }
 
-void HTMLTreeBuilder::FragmentParsingContext::trace(Visitor* visitor)
-{
-    visitor->trace(m_fragment);
-}
-
 PassRefPtr<Element> HTMLTreeBuilder::takeScriptToProcess(TextPosition& scriptStartPosition)
 {
     ASSERT(m_scriptToProcess);
diff --git a/sky/engine/core/html/parser/HTMLTreeBuilder.h b/sky/engine/core/html/parser/HTMLTreeBuilder.h
index bbadaf0..f2be981 100644
--- a/sky/engine/core/html/parser/HTMLTreeBuilder.h
+++ b/sky/engine/core/html/parser/HTMLTreeBuilder.h
@@ -109,8 +109,6 @@
 
         DocumentFragment* fragment() const { return m_fragment; }
 
-        void trace(Visitor*);
-
     private:
         RawPtr<DocumentFragment> m_fragment;
     };
diff --git a/sky/engine/core/inspector/CodeGeneratorInspectorStrings.py b/sky/engine/core/inspector/CodeGeneratorInspectorStrings.py
index 2011cb6..33c1503 100644
--- a/sky/engine/core/inspector/CodeGeneratorInspectorStrings.py
+++ b/sky/engine/core/inspector/CodeGeneratorInspectorStrings.py
@@ -145,13 +145,11 @@
 public:
     static PassRefPtr<InspectorBackendDispatcher> create(InspectorFrontendChannel* inspectorFrontendChannel);
     virtual ~InspectorBackendDispatcher() { }
-    virtual void trace(Visitor*) { }
 
     class CallbackBase: public RefCounted<CallbackBase> {
     public:
         CallbackBase(PassRefPtr<InspectorBackendDispatcherImpl> backendImpl, int id);
         virtual ~CallbackBase();
-        virtual void trace(Visitor*);
         void sendFailure(const ErrorString&);
         bool isActive();
 
@@ -492,11 +490,6 @@
 
 InspectorBackendDispatcher::CallbackBase::~CallbackBase() {}
 
-void InspectorBackendDispatcher::CallbackBase::trace(Visitor* visitor)
-{
-    visitor->trace(m_backendImpl);
-}
-
 void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString& error)
 {
     ASSERT(error.length());
diff --git a/sky/engine/core/inspector/ConsoleMessage.cpp b/sky/engine/core/inspector/ConsoleMessage.cpp
index a9b610f..ea6f16f 100644
--- a/sky/engine/core/inspector/ConsoleMessage.cpp
+++ b/sky/engine/core/inspector/ConsoleMessage.cpp
@@ -194,10 +194,4 @@
     m_callStack.clear();
 }
 
-void ConsoleMessage::trace(Visitor* visitor)
-{
-    visitor->trace(m_callStack);
-    visitor->trace(m_scriptArguments);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/inspector/ConsoleMessage.h b/sky/engine/core/inspector/ConsoleMessage.h
index f8bb765..d33d7e9 100644
--- a/sky/engine/core/inspector/ConsoleMessage.h
+++ b/sky/engine/core/inspector/ConsoleMessage.h
@@ -58,8 +58,6 @@
 
     void collectCallStack();
 
-    void trace(Visitor*);
-
 private:
     ConsoleMessage(MessageSource, MessageLevel, const String& message, const String& url = String(), unsigned lineNumber = 0, unsigned columnNumber = 0);
 
diff --git a/sky/engine/core/inspector/ConsoleMessageStorage.cpp b/sky/engine/core/inspector/ConsoleMessageStorage.cpp
index f24d7f3..15ef7f9 100644
--- a/sky/engine/core/inspector/ConsoleMessageStorage.cpp
+++ b/sky/engine/core/inspector/ConsoleMessageStorage.cpp
@@ -84,10 +84,4 @@
     return m_frame ? m_frame->document() : m_context;
 }
 
-void ConsoleMessageStorage::trace(Visitor* visitor)
-{
-    visitor->trace(m_messages);
-    visitor->trace(m_context);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/inspector/ConsoleMessageStorage.h b/sky/engine/core/inspector/ConsoleMessageStorage.h
index c7959d9..94f0d50 100644
--- a/sky/engine/core/inspector/ConsoleMessageStorage.h
+++ b/sky/engine/core/inspector/ConsoleMessageStorage.h
@@ -35,8 +35,6 @@
 
     int expiredCount() const;
 
-    void trace(Visitor*);
-
 private:
     explicit ConsoleMessageStorage(ExecutionContext*);
     explicit ConsoleMessageStorage(LocalFrame*);
diff --git a/sky/engine/core/inspector/JavaScriptCallFrame.cpp b/sky/engine/core/inspector/JavaScriptCallFrame.cpp
index 691a229..78c7e35 100644
--- a/sky/engine/core/inspector/JavaScriptCallFrame.cpp
+++ b/sky/engine/core/inspector/JavaScriptCallFrame.cpp
@@ -207,9 +207,4 @@
     return exceptionDetails;
 }
 
-void JavaScriptCallFrame::trace(Visitor* visitor)
-{
-    visitor->trace(m_caller);
-}
-
 } // namespace blink
\ No newline at end of file
diff --git a/sky/engine/core/inspector/JavaScriptCallFrame.h b/sky/engine/core/inspector/JavaScriptCallFrame.h
index efbd63a..e766eae 100644
--- a/sky/engine/core/inspector/JavaScriptCallFrame.h
+++ b/sky/engine/core/inspector/JavaScriptCallFrame.h
@@ -50,7 +50,6 @@
         return adoptRef(new JavaScriptCallFrame(debuggerContext, callFrame));
     }
     ~JavaScriptCallFrame();
-    void trace(Visitor*);
 
     JavaScriptCallFrame* caller();
 
diff --git a/sky/engine/core/inspector/ScriptArguments.h b/sky/engine/core/inspector/ScriptArguments.h
index 6e5934d..7f70d9c 100644
--- a/sky/engine/core/inspector/ScriptArguments.h
+++ b/sky/engine/core/inspector/ScriptArguments.h
@@ -53,8 +53,6 @@
 
     bool getFirstArgumentAsString(WTF::String& result, bool checkForNullOrUndefined = false);
 
-    void trace(Visitor*) { }
-
 private:
     ScriptArguments(ScriptState*, Vector<ScriptValue>& arguments);
 
diff --git a/sky/engine/core/inspector/ScriptAsyncCallStack.cpp b/sky/engine/core/inspector/ScriptAsyncCallStack.cpp
index e1fb6ea..f5e0906 100644
--- a/sky/engine/core/inspector/ScriptAsyncCallStack.cpp
+++ b/sky/engine/core/inspector/ScriptAsyncCallStack.cpp
@@ -22,10 +22,4 @@
     ASSERT(m_callStack);
 }
 
-void ScriptAsyncCallStack::trace(Visitor* visitor)
-{
-    visitor->trace(m_callStack);
-    visitor->trace(m_asyncStackTrace);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/inspector/ScriptAsyncCallStack.h b/sky/engine/core/inspector/ScriptAsyncCallStack.h
index 2542ead..1ecc4fc 100644
--- a/sky/engine/core/inspector/ScriptAsyncCallStack.h
+++ b/sky/engine/core/inspector/ScriptAsyncCallStack.h
@@ -17,8 +17,6 @@
 public:
     static PassRefPtr<ScriptAsyncCallStack> create(const String&, PassRefPtr<ScriptCallStack>, PassRefPtr<ScriptAsyncCallStack>);
 
-    void trace(Visitor*);
-
 private:
     ScriptAsyncCallStack(const String&, PassRefPtr<ScriptCallStack>, PassRefPtr<ScriptAsyncCallStack>);
 
diff --git a/sky/engine/core/inspector/ScriptCallStack.cpp b/sky/engine/core/inspector/ScriptCallStack.cpp
index ff3e7c7..68835d5 100644
--- a/sky/engine/core/inspector/ScriptCallStack.cpp
+++ b/sky/engine/core/inspector/ScriptCallStack.cpp
@@ -68,9 +68,4 @@
     m_asyncCallStack = asyncCallStack;
 }
 
-void ScriptCallStack::trace(Visitor* visitor)
-{
-    visitor->trace(m_asyncCallStack);
-}
-
 } // namespace blink
diff --git a/sky/engine/core/inspector/ScriptCallStack.h b/sky/engine/core/inspector/ScriptCallStack.h
index 4cab24c..8750d00 100644
--- a/sky/engine/core/inspector/ScriptCallStack.h
+++ b/sky/engine/core/inspector/ScriptCallStack.h
@@ -54,8 +54,6 @@
     PassRefPtr<ScriptAsyncCallStack> asyncCallStack() const;
     void setAsyncCallStack(PassRefPtr<ScriptAsyncCallStack>);
 
-    void trace(Visitor*);
-
 private:
     explicit ScriptCallStack(Vector<ScriptCallFrame>&);
 
diff --git a/sky/engine/core/inspector/ScriptProfile.h b/sky/engine/core/inspector/ScriptProfile.h
index 86a5913..7ce38b0 100644
--- a/sky/engine/core/inspector/ScriptProfile.h
+++ b/sky/engine/core/inspector/ScriptProfile.h
@@ -45,7 +45,6 @@
         return adoptRef(new ScriptProfile(profile, idleTime));
     }
     ~ScriptProfile();
-    void trace(Visitor*) { }
 
     String title() const;
     double idleTime() const;
diff --git a/sky/engine/core/loader/ImageLoader.cpp b/sky/engine/core/loader/ImageLoader.cpp
index b29803a..97cb8dc 100644
--- a/sky/engine/core/loader/ImageLoader.cpp
+++ b/sky/engine/core/loader/ImageLoader.cpp
@@ -128,11 +128,6 @@
         errorEventSender().cancelEvent(this);
 }
 
-void ImageLoader::trace(Visitor* visitor)
-{
-    visitor->trace(m_element);
-}
-
 void ImageLoader::setImage(ImageResource* newImage)
 {
     setImageWithoutConsideringPendingLoadEvent(newImage);
diff --git a/sky/engine/core/loader/ImageLoader.h b/sky/engine/core/loader/ImageLoader.h
index b9c4629..5798eb4 100644
--- a/sky/engine/core/loader/ImageLoader.h
+++ b/sky/engine/core/loader/ImageLoader.h
@@ -44,8 +44,6 @@
     // Determines whether the observed ImageResource should have higher priority in the decoded resources cache.
     virtual bool requestsHighLiveResourceCachePriority() { return false; }
 
-    virtual void trace(Visitor*) { }
-
 protected:
     ImageLoaderClient() { }
 };
@@ -61,7 +59,6 @@
 public:
     explicit ImageLoader(Element*);
     virtual ~ImageLoader();
-    void trace(Visitor*);
 
     enum LoadType {
         LoadNormally,
diff --git a/sky/engine/core/page/EventHandler.cpp b/sky/engine/core/page/EventHandler.cpp
index a8a45a6..6e1ecb8 100644
--- a/sky/engine/core/page/EventHandler.cpp
+++ b/sky/engine/core/page/EventHandler.cpp
@@ -184,25 +184,6 @@
     ASSERT(!m_fakeMouseMoveEventTimer.isActive());
 }
 
-void EventHandler::trace(Visitor* visitor)
-{
-#if ENABLE(OILPAN)
-    visitor->trace(m_mousePressNode);
-    visitor->trace(m_capturingMouseEventsNode);
-    visitor->trace(m_nodeUnderMouse);
-    visitor->trace(m_lastNodeUnderMouse);
-    visitor->trace(m_clickNode);
-    visitor->trace(m_dragTarget);
-    visitor->trace(m_latchedWheelEventNode);
-    visitor->trace(m_previousWheelScrolledNode);
-    visitor->trace(m_targetForTouchID);
-    visitor->trace(m_touchSequenceDocument);
-    visitor->trace(m_scrollGestureHandlingNode);
-    visitor->trace(m_previousGestureScrolledNode);
-    visitor->trace(m_lastDeferredTapElement);
-#endif
-}
-
 void EventHandler::clear()
 {
     m_hoverTimer.stop();
diff --git a/sky/engine/core/page/EventHandler.h b/sky/engine/core/page/EventHandler.h
index 5c9e6f3..2caa9c9 100644
--- a/sky/engine/core/page/EventHandler.h
+++ b/sky/engine/core/page/EventHandler.h
@@ -86,7 +86,6 @@
 public:
     explicit EventHandler(LocalFrame*);
     ~EventHandler();
-    void trace(Visitor*);
 
     void clear();
     void nodeWillBeRemoved(Node&);
diff --git a/sky/engine/core/page/TouchAdjustment.cpp b/sky/engine/core/page/TouchAdjustment.cpp
index a746b63..191670c 100644
--- a/sky/engine/core/page/TouchAdjustment.cpp
+++ b/sky/engine/core/page/TouchAdjustment.cpp
@@ -51,7 +51,6 @@
         : m_node(node)
         , m_quad(quad)
     { }
-    void trace(Visitor* visitor) { visitor->trace(m_node); }
 
     Node* node() const { return m_node; }
     FloatQuad quad() const { return m_quad; }
diff --git a/sky/engine/core/rendering/HitTestResult.cpp b/sky/engine/core/rendering/HitTestResult.cpp
index ddfa5a8..0f54931 100644
--- a/sky/engine/core/rendering/HitTestResult.cpp
+++ b/sky/engine/core/rendering/HitTestResult.cpp
@@ -100,17 +100,6 @@
     return *this;
 }
 
-void HitTestResult::trace(Visitor* visitor)
-{
-    visitor->trace(m_innerNode);
-    visitor->trace(m_innerPossiblyPseudoNode);
-    visitor->trace(m_innerNonSharedNode);
-    visitor->trace(m_innerURLElement);
-#if ENABLE(OILPAN)
-    visitor->trace(m_rectBasedTestResult);
-#endif
-}
-
 PositionWithAffinity HitTestResult::position() const
 {
     if (!m_innerPossiblyPseudoNode)
diff --git a/sky/engine/core/rendering/HitTestResult.h b/sky/engine/core/rendering/HitTestResult.h
index 759cda2..9292912 100644
--- a/sky/engine/core/rendering/HitTestResult.h
+++ b/sky/engine/core/rendering/HitTestResult.h
@@ -58,7 +58,6 @@
     HitTestResult(const HitTestResult&);
     ~HitTestResult();
     HitTestResult& operator=(const HitTestResult&);
-    void trace(Visitor*);
 
     // For point-based hit tests, these accessors provide information about the node
     // under the point. For rect-based hit tests they are meaningless (reflect the
diff --git a/sky/engine/core/rendering/RenderBlock.cpp b/sky/engine/core/rendering/RenderBlock.cpp
index 1d0a01d..a59cb17 100644
--- a/sky/engine/core/rendering/RenderBlock.cpp
+++ b/sky/engine/core/rendering/RenderBlock.cpp
@@ -91,12 +91,6 @@
     // By default, subclasses do not have inline children.
 }
 
-void RenderBlock::trace(Visitor* visitor)
-{
-    visitor->trace(m_children);
-    RenderBox::trace(visitor);
-}
-
 static void removeBlockFromDescendantAndContainerMaps(RenderBlock* block, TrackedDescendantsMap*& descendantMap, TrackedContainerMap*& containerMap)
 {
     if (OwnPtr<TrackedRendererListHashSet> descendantSet = descendantMap->take(block)) {
diff --git a/sky/engine/core/rendering/RenderBlock.h b/sky/engine/core/rendering/RenderBlock.h
index d0c03ac..21c95b2 100644
--- a/sky/engine/core/rendering/RenderBlock.h
+++ b/sky/engine/core/rendering/RenderBlock.h
@@ -53,7 +53,6 @@
 class RenderBlock : public RenderBox {
 public:
     virtual void destroy() override;
-    virtual void trace(Visitor*) override;
     friend class LineLayoutState;
 
 protected:
diff --git a/sky/engine/core/rendering/RenderInline.cpp b/sky/engine/core/rendering/RenderInline.cpp
index add605f..4d93b6b 100644
--- a/sky/engine/core/rendering/RenderInline.cpp
+++ b/sky/engine/core/rendering/RenderInline.cpp
@@ -54,12 +54,6 @@
     setChildrenInline(true);
 }
 
-void RenderInline::trace(Visitor* visitor)
-{
-    visitor->trace(m_children);
-    RenderBoxModelObject::trace(visitor);
-}
-
 RenderInline* RenderInline::createAnonymous(Document* document)
 {
     RenderInline* renderer = new RenderInline(0);
diff --git a/sky/engine/core/rendering/RenderInline.h b/sky/engine/core/rendering/RenderInline.h
index 39972f7..0d2f0fa 100644
--- a/sky/engine/core/rendering/RenderInline.h
+++ b/sky/engine/core/rendering/RenderInline.h
@@ -33,7 +33,6 @@
 class RenderInline : public RenderBoxModelObject {
 public:
     explicit RenderInline(Element*);
-    virtual void trace(Visitor*) override;
 
     static RenderInline* createAnonymous(Document*);
 
diff --git a/sky/engine/core/rendering/RenderObject.cpp b/sky/engine/core/rendering/RenderObject.cpp
index ba07891..0938f76 100644
--- a/sky/engine/core/rendering/RenderObject.cpp
+++ b/sky/engine/core/rendering/RenderObject.cpp
@@ -184,14 +184,6 @@
     --s_instanceCount;
 }
 
-void RenderObject::trace(Visitor* visitor)
-{
-    visitor->trace(m_node);
-    visitor->trace(m_parent);
-    visitor->trace(m_previous);
-    visitor->trace(m_next);
-}
-
 String RenderObject::debugName() const
 {
     StringBuilder name;
diff --git a/sky/engine/core/rendering/RenderObject.h b/sky/engine/core/rendering/RenderObject.h
index fd5be33..7373085 100644
--- a/sky/engine/core/rendering/RenderObject.h
+++ b/sky/engine/core/rendering/RenderObject.h
@@ -153,7 +153,6 @@
     // marked as anonymous in the constructor.
     explicit RenderObject(Node*);
     virtual ~RenderObject();
-    virtual void trace(Visitor*);
 
     virtual const char* renderName() const = 0;
 
diff --git a/sky/engine/core/rendering/RenderSelectionInfo.h b/sky/engine/core/rendering/RenderSelectionInfo.h
index 4346c22..dd9866c 100644
--- a/sky/engine/core/rendering/RenderSelectionInfo.h
+++ b/sky/engine/core/rendering/RenderSelectionInfo.h
@@ -47,12 +47,6 @@
     {
     }
 
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(m_object);
-        visitor->trace(m_paintInvalidationContainer);
-    }
-
     RenderObject* object() const { return m_object; }
     const RenderLayerModelObject* paintInvalidationContainer() const { return m_paintInvalidationContainer; }
     RenderObject::SelectionState state() const { return m_state; }
diff --git a/sky/engine/core/rendering/RenderView.cpp b/sky/engine/core/rendering/RenderView.cpp
index 853ea5f..beb07ac 100644
--- a/sky/engine/core/rendering/RenderView.cpp
+++ b/sky/engine/core/rendering/RenderView.cpp
@@ -66,13 +66,6 @@
 {
 }
 
-void RenderView::trace(Visitor* visitor)
-{
-    visitor->trace(m_selectionStart);
-    visitor->trace(m_selectionEnd);
-    RenderBlockFlow::trace(visitor);
-}
-
 bool RenderView::hitTest(const HitTestRequest& request, HitTestResult& result)
 {
     return hitTest(request, result.hitTestLocation(), result);
diff --git a/sky/engine/core/rendering/RenderView.h b/sky/engine/core/rendering/RenderView.h
index b838d7c..e76f46a 100644
--- a/sky/engine/core/rendering/RenderView.h
+++ b/sky/engine/core/rendering/RenderView.h
@@ -41,7 +41,6 @@
 public:
     explicit RenderView(Document*);
     virtual ~RenderView();
-    virtual void trace(Visitor*) override;
 
     bool hitTest(const HitTestRequest&, HitTestResult&);
     bool hitTest(const HitTestRequest&, const HitTestLocation&, HitTestResult&);
diff --git a/sky/engine/core/testing/NullExecutionContext.h b/sky/engine/core/testing/NullExecutionContext.h
index e801f03..beca1b3 100644
--- a/sky/engine/core/testing/NullExecutionContext.h
+++ b/sky/engine/core/testing/NullExecutionContext.h
@@ -19,12 +19,6 @@
 
     virtual EventQueue* eventQueue() const override { return m_queue.get(); }
 
-    void trace(Visitor* visitor)
-    {
-        visitor->trace(m_queue);
-        ExecutionContext::trace(visitor);
-    }
-
     virtual void reportBlockedScriptExecutionToInspector(const String& directiveText) override { }
 
 #if !ENABLE(OILPAN)
diff --git a/sky/engine/platform/Supplementable.h b/sky/engine/platform/Supplementable.h
index 9efa8c1..a06d870 100644
--- a/sky/engine/platform/Supplementable.h
+++ b/sky/engine/platform/Supplementable.h
@@ -170,7 +170,6 @@
     // the vtable at the first word of the object. However we don't trace the
     // m_supplements here, but in the partially specialized template subclasses
     // since we only want to trace it for garbage collected classes.
-    virtual void trace(Visitor*) { }
 
     // FIXME: Oilpan: Make private and remove this ignore once PersistentHeapSupplementable is removed again.
 protected:
diff --git a/sky/engine/platform/fonts/FontCacheClient.h b/sky/engine/platform/fonts/FontCacheClient.h
index fe2950c..491b086 100644
--- a/sky/engine/platform/fonts/FontCacheClient.h
+++ b/sky/engine/platform/fonts/FontCacheClient.h
@@ -42,7 +42,6 @@
     virtual ~FontCacheClient() { }
 
     virtual void fontCacheInvalidated() = 0;
-    virtual void trace(Visitor*) { }
 };
 
 } // namespace blink
diff --git a/sky/engine/platform/heap/Handle.h b/sky/engine/platform/heap/Handle.h
index cb5dad0..acfe08e 100644
--- a/sky/engine/platform/heap/Handle.h
+++ b/sky/engine/platform/heap/Handle.h
@@ -85,24 +85,6 @@
 #define STACK_ALLOCATED() DISALLOW_ALLOCATION()
 #endif
 
-namespace blink {
-
-class Visitor {
-public:
-    template<typename T>
-    void trace(const T* t)
-    {
-    }
-    template<typename T>
-    void trace(T* t)
-    {
-    }
-    template<typename T>
-    void trace(const T& t)
-    {
-    }
-};
-
 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \
     public:                                            \
         ~type();                                       \
@@ -118,6 +100,4 @@
 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \
     DEFINE_STATIC_REF(type, name, arguments)
 
-} // namespace blink
-
 #endif
diff --git a/sky/engine/web/WebHitTestResult.cpp b/sky/engine/web/WebHitTestResult.cpp
index 0779533..a9e1e28 100644
--- a/sky/engine/web/WebHitTestResult.cpp
+++ b/sky/engine/web/WebHitTestResult.cpp
@@ -43,7 +43,6 @@
 public:
     static PassRefPtr<WebHitTestResultPrivate> create(const HitTestResult&);
     static PassRefPtr<WebHitTestResultPrivate> create(const WebHitTestResultPrivate&);
-    void trace(Visitor* visitor) { visitor->trace(m_result); }
     const HitTestResult& result() const { return m_result; }
 
 private:
diff --git a/sky/engine/wtf/Deque.h b/sky/engine/wtf/Deque.h
index 9ecabec..e8257c4 100644
--- a/sky/engine/wtf/Deque.h
+++ b/sky/engine/wtf/Deque.h
@@ -59,7 +59,6 @@
         Deque<T, 0, Allocator>& operator=(const Deque&);
 
         void finalize();
-        void finalizeGarbageCollectedObject() { finalize(); }
 
         // We hard wire the inlineCapacity to zero here, due to crbug.com/360572
         void swap(Deque<T, 0, Allocator>&);
diff --git a/sky/engine/wtf/Vector.h b/sky/engine/wtf/Vector.h
index 0912c2c..89f54b6 100644
--- a/sky/engine/wtf/Vector.h
+++ b/sky/engine/wtf/Vector.h
@@ -600,11 +600,6 @@
             Base::destruct();
         }
 
-        void finalizeGarbageCollectedObject()
-        {
-            finalize();
-        }
-
         Vector(const Vector&);
         template<size_t otherCapacity>
         explicit Vector(const Vector<T, otherCapacity, Allocator>&);