[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 14:27:21 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 7538c25f9fbc6325fae26b2d593716ff54eda0fb
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Oct 9 02:00:07 2010 +0000

    2010-10-08  James Robinson  <jamesr at chromium.org>
    
            Reviewed by Adam Barth.
    
            Avoid inlining large and/or virtual functions in widely included header files
            https://bugs.webkit.org/show_bug.cgi?id=47230
    
            Functions with very large bodies should not be included in widely included header files.
            This results in the function's code ending up included in hundreds of object files that
            the linker has to discard, at a cost of linker memory use, link time, and disk space. This
            is a particular problem in the Chromium windows build where MSVC often exhausts its 32-bit
            virtual address space and completely fails to link.
    
            This patch moves function definitions from the .h to the corresponding .cpp when the function
            is large and not a candidate for inlining either because it is virtual or because its size is
            above any reasonable compiler's threshhold for inlining.  The most common case by far in this
            patch is changing a class' implicitly defined destructor to an explicitly declared d'tor in
            the header and an explicitly defined d'tor in the .cpp.  This is important since many of our
            container and utility classes (especially Vector, String, and HashSet) have quite large
            destructors.
    
            This patch removes 22.4MB of object file size in a debug 64 bit compile.
    
            * css/CSSBorderImageValue.cpp:
            (WebCore::CSSBorderImageValue::~CSSBorderImageValue):
            * css/CSSBorderImageValue.h:
            * css/CSSFontFaceSrcValue.cpp:
            (WebCore::CSSFontFaceSrcValue::~CSSFontFaceSrcValue):
            * css/CSSFontFaceSrcValue.h:
            * css/CSSFunctionValue.h:
            * dom/BeforeTextInsertedEvent.cpp:
            (WebCore::BeforeTextInsertedEvent::~BeforeTextInsertedEvent):
            * dom/BeforeTextInsertedEvent.h:
            * dom/BeforeUnloadEvent.cpp:
            (WebCore::BeforeUnloadEvent::~BeforeUnloadEvent):
            * dom/BeforeUnloadEvent.h:
            * dom/ClassNodeList.h:
            * dom/ClipboardEvent.cpp:
            (WebCore::ClipboardEvent::~ClipboardEvent):
            * dom/ClipboardEvent.h:
            * dom/CustomEvent.cpp:
            (WebCore::CustomEvent::~CustomEvent):
            * dom/CustomEvent.h:
            * dom/Element.cpp:
            * dom/Element.h:
            * dom/EventTarget.cpp:
            (WebCore::EventTargetData::EventTargetData):
            * dom/EventTarget.h:
            * dom/InputElement.cpp:
            (WebCore::InputElementData::~InputElementData):
            * dom/InputElement.h:
            * dom/MutationEvent.cpp:
            (WebCore::MutationEvent::~MutationEvent):
            * dom/MutationEvent.h:
            * dom/Node.cpp:
            (WebCore::Node::refEventTarget):
            (WebCore::Node::derefEventTarget):
            * dom/Node.h:
            * dom/OptionElement.cpp:
            (WebCore::OptionElementData::~OptionElementData):
            * dom/OptionElement.h:
            * dom/PopStateEvent.cpp:
            (WebCore::PopStateEvent::~PopStateEvent):
            * dom/PopStateEvent.h:
            * dom/QualifiedName.cpp:
            (WebCore::QualifiedName::~QualifiedName):
            * dom/QualifiedName.h:
            * dom/SelectElement.cpp:
            (WebCore::SelectElementData::~SelectElementData):
            * dom/SelectElement.h:
            * dom/StaticHashSetNodeList.cpp:
            (WebCore::StaticHashSetNodeList::StaticHashSetNodeList):
            (WebCore::StaticHashSetNodeList::~StaticHashSetNodeList):
            * dom/StaticHashSetNodeList.h:
            * dom/StyleElement.cpp:
            (WebCore::StyleElement::~StyleElement):
            * dom/StyleElement.h:
            * dom/TouchEvent.cpp:
            (WebCore::TouchEvent::TouchEvent):
            (WebCore::TouchEvent::~TouchEvent):
            * dom/TouchEvent.h:
            * editing/CompositeEditCommand.cpp:
            (WebCore::CompositeEditCommand::~CompositeEditCommand):
            * editing/CompositeEditCommand.h:
            * editing/TextIterator.cpp:
            (WebCore::BitStack::~BitStack):
            (WebCore::TextIterator::~TextIterator):
            (WebCore::WordAwareIterator::~WordAwareIterator):
            * editing/TextIterator.h:
            * inspector/InspectorValues.cpp:
            (WebCore::InspectorObject::~InspectorObject):
            (WebCore::InspectorObject::InspectorObject):
            (WebCore::InspectorArray::~InspectorArray):
            (WebCore::InspectorArray::InspectorArray):
            * inspector/InspectorValues.h:
            * loader/CachedResource.cpp:
            (WebCore::CachedResource::registerHandle):
            (WebCore::CachedResource::unregisterHandle):
            * loader/CachedResource.h:
            * platform/network/HTTPHeaderMap.cpp:
            (WebCore::HTTPHeaderMap::HTTPHeaderMap):
            (WebCore::HTTPHeaderMap::~HTTPHeaderMap):
            (WebCore::HTTPHeaderMap::get):
            (WebCore::HTTPHeaderMap::add):
            * platform/network/HTTPHeaderMap.h:
            * rendering/RenderApplet.cpp:
            (WebCore::RenderApplet::~RenderApplet):
            * rendering/RenderApplet.h:
            * rendering/RenderButton.cpp:
            (WebCore::RenderButton::~RenderButton):
            * rendering/RenderButton.h:
            * rendering/RenderCounter.cpp:
            (WebCore::RenderCounter::~RenderCounter):
            * rendering/RenderCounter.h:
            * rendering/RenderFieldset.h:
            * rendering/RenderForeignObject.cpp:
            (WebCore::RenderForeignObject::~RenderForeignObject):
            * rendering/RenderForeignObject.h:
            * rendering/RenderFrame.h:
            * rendering/RenderFrameBase.h:
            * rendering/RenderHTMLCanvas.h:
            * rendering/RenderIFrame.h:
            * rendering/RenderInline.h:
            * rendering/RenderListItem.h:
            * rendering/RenderMarquee.cpp:
            (WebCore::RenderMarquee::~RenderMarquee):
            * rendering/RenderMarquee.h:
            * rendering/RenderPath.cpp:
            (WebCore::RenderPath::~RenderPath):
            * rendering/RenderPath.h:
            * rendering/RenderSVGBlock.h:
            * rendering/RenderSVGContainer.cpp:
            (WebCore::RenderSVGContainer::~RenderSVGContainer):
            * rendering/RenderSVGContainer.h:
            * rendering/RenderSVGHiddenContainer.h:
            * rendering/RenderSVGInline.h:
            * rendering/RenderSVGInlineText.cpp:
            (WebCore::RenderSVGInlineText::~RenderSVGInlineText):
            * rendering/RenderSVGInlineText.h:
            * rendering/RenderSVGModelObject.h:
            * rendering/RenderSVGResourceFilterPrimitive.h:
            * rendering/RenderSVGRoot.cpp:
            (WebCore::RenderSVGRoot::~RenderSVGRoot):
            * rendering/RenderSVGRoot.h:
            * rendering/RenderSVGTSpan.h:
            * rendering/RenderSVGText.h:
            * rendering/RenderSVGTextPath.h:
            * rendering/RenderSVGTransformableContainer.h:
            * rendering/RenderSVGViewportContainer.h:
            * rendering/RenderTable.cpp:
            (WebCore::RenderTable::~RenderTable):
            * rendering/RenderTable.h:
            * rendering/RenderTableCell.h:
            * rendering/RenderTableCol.h:
            * rendering/RenderTableRow.h:
            * rendering/RenderTextFragment.cpp:
            (WebCore::RenderTextFragment::~RenderTextFragment):
            * rendering/RenderTextFragment.h:
            * rendering/RenderWordBreak.h:
            * svg/SVGStyledElement.cpp:
            (WebCore::SVGStyledElement::~SVGStyledElement):
            * svg/SVGStyledElement.h:
            * svg/SVGStyledTransformableElement.cpp:
            (WebCore::SVGStyledTransformableElement::~SVGStyledTransformableElement):
            * svg/SVGStyledTransformableElement.h:
            * xml/XPathParser.cpp:
            (WebCore::XPath::Parser::~Parser):
            * xml/XPathParser.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69437 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 94debae..bd57853 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,172 @@
+2010-10-08  James Robinson  <jamesr at chromium.org>
+
+        Reviewed by Adam Barth.
+
+        Avoid inlining large and/or virtual functions in widely included header files
+        https://bugs.webkit.org/show_bug.cgi?id=47230
+
+        Functions with very large bodies should not be included in widely included header files.
+        This results in the function's code ending up included in hundreds of object files that
+        the linker has to discard, at a cost of linker memory use, link time, and disk space. This
+        is a particular problem in the Chromium windows build where MSVC often exhausts its 32-bit
+        virtual address space and completely fails to link.
+
+        This patch moves function definitions from the .h to the corresponding .cpp when the function
+        is large and not a candidate for inlining either because it is virtual or because its size is
+        above any reasonable compiler's threshhold for inlining.  The most common case by far in this
+        patch is changing a class' implicitly defined destructor to an explicitly declared d'tor in
+        the header and an explicitly defined d'tor in the .cpp.  This is important since many of our
+        container and utility classes (especially Vector, String, and HashSet) have quite large
+        destructors.
+
+        This patch removes 22.4MB of object file size in a debug 64 bit compile.
+
+        * css/CSSBorderImageValue.cpp:
+        (WebCore::CSSBorderImageValue::~CSSBorderImageValue):
+        * css/CSSBorderImageValue.h:
+        * css/CSSFontFaceSrcValue.cpp:
+        (WebCore::CSSFontFaceSrcValue::~CSSFontFaceSrcValue):
+        * css/CSSFontFaceSrcValue.h:
+        * css/CSSFunctionValue.h:
+        * dom/BeforeTextInsertedEvent.cpp:
+        (WebCore::BeforeTextInsertedEvent::~BeforeTextInsertedEvent):
+        * dom/BeforeTextInsertedEvent.h:
+        * dom/BeforeUnloadEvent.cpp:
+        (WebCore::BeforeUnloadEvent::~BeforeUnloadEvent):
+        * dom/BeforeUnloadEvent.h:
+        * dom/ClassNodeList.h:
+        * dom/ClipboardEvent.cpp:
+        (WebCore::ClipboardEvent::~ClipboardEvent):
+        * dom/ClipboardEvent.h:
+        * dom/CustomEvent.cpp:
+        (WebCore::CustomEvent::~CustomEvent):
+        * dom/CustomEvent.h:
+        * dom/Element.cpp:
+        * dom/Element.h:
+        * dom/EventTarget.cpp:
+        (WebCore::EventTargetData::EventTargetData):
+        * dom/EventTarget.h:
+        * dom/InputElement.cpp:
+        (WebCore::InputElementData::~InputElementData):
+        * dom/InputElement.h:
+        * dom/MutationEvent.cpp:
+        (WebCore::MutationEvent::~MutationEvent):
+        * dom/MutationEvent.h:
+        * dom/Node.cpp:
+        (WebCore::Node::refEventTarget):
+        (WebCore::Node::derefEventTarget):
+        * dom/Node.h:
+        * dom/OptionElement.cpp:
+        (WebCore::OptionElementData::~OptionElementData):
+        * dom/OptionElement.h:
+        * dom/PopStateEvent.cpp:
+        (WebCore::PopStateEvent::~PopStateEvent):
+        * dom/PopStateEvent.h:
+        * dom/QualifiedName.cpp:
+        (WebCore::QualifiedName::~QualifiedName):
+        * dom/QualifiedName.h:
+        * dom/SelectElement.cpp:
+        (WebCore::SelectElementData::~SelectElementData):
+        * dom/SelectElement.h:
+        * dom/StaticHashSetNodeList.cpp:
+        (WebCore::StaticHashSetNodeList::StaticHashSetNodeList):
+        (WebCore::StaticHashSetNodeList::~StaticHashSetNodeList):
+        * dom/StaticHashSetNodeList.h:
+        * dom/StyleElement.cpp:
+        (WebCore::StyleElement::~StyleElement):
+        * dom/StyleElement.h:
+        * dom/TouchEvent.cpp:
+        (WebCore::TouchEvent::TouchEvent):
+        (WebCore::TouchEvent::~TouchEvent):
+        * dom/TouchEvent.h:
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::CompositeEditCommand::~CompositeEditCommand):
+        * editing/CompositeEditCommand.h:
+        * editing/TextIterator.cpp:
+        (WebCore::BitStack::~BitStack):
+        (WebCore::TextIterator::~TextIterator):
+        (WebCore::WordAwareIterator::~WordAwareIterator):
+        * editing/TextIterator.h:
+        * inspector/InspectorValues.cpp:
+        (WebCore::InspectorObject::~InspectorObject):
+        (WebCore::InspectorObject::InspectorObject):
+        (WebCore::InspectorArray::~InspectorArray):
+        (WebCore::InspectorArray::InspectorArray):
+        * inspector/InspectorValues.h:
+        * loader/CachedResource.cpp:
+        (WebCore::CachedResource::registerHandle):
+        (WebCore::CachedResource::unregisterHandle):
+        * loader/CachedResource.h:
+        * platform/network/HTTPHeaderMap.cpp:
+        (WebCore::HTTPHeaderMap::HTTPHeaderMap):
+        (WebCore::HTTPHeaderMap::~HTTPHeaderMap):
+        (WebCore::HTTPHeaderMap::get):
+        (WebCore::HTTPHeaderMap::add):
+        * platform/network/HTTPHeaderMap.h:
+        * rendering/RenderApplet.cpp:
+        (WebCore::RenderApplet::~RenderApplet):
+        * rendering/RenderApplet.h:
+        * rendering/RenderButton.cpp:
+        (WebCore::RenderButton::~RenderButton):
+        * rendering/RenderButton.h:
+        * rendering/RenderCounter.cpp:
+        (WebCore::RenderCounter::~RenderCounter):
+        * rendering/RenderCounter.h:
+        * rendering/RenderFieldset.h:
+        * rendering/RenderForeignObject.cpp:
+        (WebCore::RenderForeignObject::~RenderForeignObject):
+        * rendering/RenderForeignObject.h:
+        * rendering/RenderFrame.h:
+        * rendering/RenderFrameBase.h:
+        * rendering/RenderHTMLCanvas.h:
+        * rendering/RenderIFrame.h:
+        * rendering/RenderInline.h:
+        * rendering/RenderListItem.h:
+        * rendering/RenderMarquee.cpp:
+        (WebCore::RenderMarquee::~RenderMarquee):
+        * rendering/RenderMarquee.h:
+        * rendering/RenderPath.cpp:
+        (WebCore::RenderPath::~RenderPath):
+        * rendering/RenderPath.h:
+        * rendering/RenderSVGBlock.h:
+        * rendering/RenderSVGContainer.cpp:
+        (WebCore::RenderSVGContainer::~RenderSVGContainer):
+        * rendering/RenderSVGContainer.h:
+        * rendering/RenderSVGHiddenContainer.h:
+        * rendering/RenderSVGInline.h:
+        * rendering/RenderSVGInlineText.cpp:
+        (WebCore::RenderSVGInlineText::~RenderSVGInlineText):
+        * rendering/RenderSVGInlineText.h:
+        * rendering/RenderSVGModelObject.h:
+        * rendering/RenderSVGResourceFilterPrimitive.h:
+        * rendering/RenderSVGRoot.cpp:
+        (WebCore::RenderSVGRoot::~RenderSVGRoot):
+        * rendering/RenderSVGRoot.h:
+        * rendering/RenderSVGTSpan.h:
+        * rendering/RenderSVGText.h:
+        * rendering/RenderSVGTextPath.h:
+        * rendering/RenderSVGTransformableContainer.h:
+        * rendering/RenderSVGViewportContainer.h:
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::~RenderTable):
+        * rendering/RenderTable.h:
+        * rendering/RenderTableCell.h:
+        * rendering/RenderTableCol.h:
+        * rendering/RenderTableRow.h:
+        * rendering/RenderTextFragment.cpp:
+        (WebCore::RenderTextFragment::~RenderTextFragment):
+        * rendering/RenderTextFragment.h:
+        * rendering/RenderWordBreak.h:
+        * svg/SVGStyledElement.cpp:
+        (WebCore::SVGStyledElement::~SVGStyledElement):
+        * svg/SVGStyledElement.h:
+        * svg/SVGStyledTransformableElement.cpp:
+        (WebCore::SVGStyledTransformableElement::~SVGStyledTransformableElement):
+        * svg/SVGStyledTransformableElement.h:
+        * xml/XPathParser.cpp:
+        (WebCore::XPath::Parser::~Parser):
+        * xml/XPathParser.h:
+
 2010-10-08  Martin Robinson  <mrobinson at igalia.com>
 
         Reviewed by Daniel Bates.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index eff99d8..d1dc021 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -174,6 +174,8 @@ __ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestEb
 __ZN7WebCore11FrameLoader6reloadEb
 __ZN7WebCore11Geolocation12setIsAllowedEb
 __ZN7WebCore11GeolocationD1Ev
+__ZN7WebCore13HTTPHeaderMapC1Ev
+__ZN7WebCore13HTTPHeaderMapD1Ev
 __ZN7WebCore11HistoryItem10targetItemEv
 __ZN7WebCore11HistoryItem11setReferrerERKN3WTF6StringE
 __ZN7WebCore11HistoryItem12addChildItemEN3WTF10PassRefPtrIS0_EE
@@ -267,6 +269,7 @@ __ZN7WebCore12SharedBuffer24createWithContentsOfFileERKN3WTF6StringE
 __ZN7WebCore12SharedBufferC1EPKci
 __ZN7WebCore12SharedBufferD1Ev
 __ZN7WebCore12TextEncodingC1ERKN3WTF6StringE
+__ZN7WebCore12TextIteratorD1Ev
 __ZN7WebCore12TextIterator11rangeLengthEPKNS_5RangeEb
 __ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_7ElementEiib
 __ZN7WebCore12TextIterator7advanceEv
@@ -877,6 +880,7 @@ __ZNK7WebCore11FrameLoader16outgoingReferrerEv
 __ZNK7WebCore11FrameLoader20activeDocumentLoaderEv
 __ZNK7WebCore11FrameLoader27numPendingOrLoadingRequestsEb
 __ZNK7WebCore11FrameLoader8loadTypeEv
+__ZNK7WebCore13HTTPHeaderMap3getERKN3WTF12AtomicStringE
 __ZNK7WebCore11HistoryItem10visitCountEv
 __ZNK7WebCore11HistoryItem11hasChildrenEv
 __ZNK7WebCore11HistoryItem11scrollPointEv
diff --git a/WebCore/css/CSSBorderImageValue.cpp b/WebCore/css/CSSBorderImageValue.cpp
index 3260af4..8d4721a 100644
--- a/WebCore/css/CSSBorderImageValue.cpp
+++ b/WebCore/css/CSSBorderImageValue.cpp
@@ -34,6 +34,10 @@ CSSBorderImageValue::CSSBorderImageValue(PassRefPtr<CSSValue> image, PassRefPtr<
 {
 }
 
+CSSBorderImageValue::~CSSBorderImageValue()
+{
+}
+
 String CSSBorderImageValue::cssText() const
 {
     // Image first.
diff --git a/WebCore/css/CSSBorderImageValue.h b/WebCore/css/CSSBorderImageValue.h
index 23832b8..a17df7d 100644
--- a/WebCore/css/CSSBorderImageValue.h
+++ b/WebCore/css/CSSBorderImageValue.h
@@ -35,6 +35,7 @@ public:
     {
         return adoptRef(new CSSBorderImageValue(image, sliceRect, horizontalRule, verticalRule));
     }
+    virtual ~CSSBorderImageValue();
 
     virtual String cssText() const;
 
diff --git a/WebCore/css/CSSFontFaceSrcValue.cpp b/WebCore/css/CSSFontFaceSrcValue.cpp
index 5b204d7..d951e5d 100644
--- a/WebCore/css/CSSFontFaceSrcValue.cpp
+++ b/WebCore/css/CSSFontFaceSrcValue.cpp
@@ -31,6 +31,10 @@
 
 namespace WebCore {
 
+CSSFontFaceSrcValue::~CSSFontFaceSrcValue()
+{
+}
+
 #if ENABLE(SVG_FONTS)
 bool CSSFontFaceSrcValue::isSVGFontFaceSrc() const
 {
diff --git a/WebCore/css/CSSFontFaceSrcValue.h b/WebCore/css/CSSFontFaceSrcValue.h
index 22f1be7..570652d 100644
--- a/WebCore/css/CSSFontFaceSrcValue.h
+++ b/WebCore/css/CSSFontFaceSrcValue.h
@@ -47,7 +47,7 @@ public:
         return adoptRef(new CSSFontFaceSrcValue(resource, true));
     }
 
-    virtual ~CSSFontFaceSrcValue() { }
+    virtual ~CSSFontFaceSrcValue();
 
     const String& resource() const { return m_resource; }
     const String& format() const { return m_format; }
diff --git a/WebCore/css/CSSFunctionValue.h b/WebCore/css/CSSFunctionValue.h
index e9545a1..1d73f33 100644
--- a/WebCore/css/CSSFunctionValue.h
+++ b/WebCore/css/CSSFunctionValue.h
@@ -40,14 +40,14 @@ public:
         return adoptRef(new CSSFunctionValue(function));
     }
 
-    ~CSSFunctionValue();
+    virtual ~CSSFunctionValue();
     
     virtual String cssText() const;
 
     virtual CSSParserValue parserValue() const;
 
 private:
-    CSSFunctionValue(CSSParserFunction*);
+    explicit CSSFunctionValue(CSSParserFunction*);
     
     String m_name;
     RefPtr<CSSValueList> m_args;
diff --git a/WebCore/dom/BeforeTextInsertedEvent.cpp b/WebCore/dom/BeforeTextInsertedEvent.cpp
index af86d66..472eefc 100644
--- a/WebCore/dom/BeforeTextInsertedEvent.cpp
+++ b/WebCore/dom/BeforeTextInsertedEvent.cpp
@@ -35,4 +35,8 @@ BeforeTextInsertedEvent::BeforeTextInsertedEvent(const String& text)
 {
 }
 
+BeforeTextInsertedEvent::~BeforeTextInsertedEvent()
+{
+}
+
 }
diff --git a/WebCore/dom/BeforeTextInsertedEvent.h b/WebCore/dom/BeforeTextInsertedEvent.h
index f2a2ac4..a6966ff 100644
--- a/WebCore/dom/BeforeTextInsertedEvent.h
+++ b/WebCore/dom/BeforeTextInsertedEvent.h
@@ -32,6 +32,8 @@ namespace WebCore {
 
 class BeforeTextInsertedEvent : public Event {
 public:
+    virtual ~BeforeTextInsertedEvent();
+
     static PassRefPtr<BeforeTextInsertedEvent> create(const String& text)
     {
         return adoptRef(new BeforeTextInsertedEvent(text));
diff --git a/WebCore/dom/BeforeUnloadEvent.cpp b/WebCore/dom/BeforeUnloadEvent.cpp
index 97d7f97..19adcab 100644
--- a/WebCore/dom/BeforeUnloadEvent.cpp
+++ b/WebCore/dom/BeforeUnloadEvent.cpp
@@ -32,6 +32,10 @@ BeforeUnloadEvent::BeforeUnloadEvent()
 {
 }
 
+BeforeUnloadEvent::~BeforeUnloadEvent()
+{
+}
+
 bool BeforeUnloadEvent::storesResultAsString() const
 {
     return true;
diff --git a/WebCore/dom/BeforeUnloadEvent.h b/WebCore/dom/BeforeUnloadEvent.h
index 2644693..136e85c 100644
--- a/WebCore/dom/BeforeUnloadEvent.h
+++ b/WebCore/dom/BeforeUnloadEvent.h
@@ -30,6 +30,8 @@ namespace WebCore {
 
     class BeforeUnloadEvent : public Event {
     public:
+        virtual ~BeforeUnloadEvent();
+
         static PassRefPtr<BeforeUnloadEvent> create()
         {
             return adoptRef(new BeforeUnloadEvent);
diff --git a/WebCore/dom/ClassNodeList.h b/WebCore/dom/ClassNodeList.h
index ea048a2..13d5d24 100644
--- a/WebCore/dom/ClassNodeList.h
+++ b/WebCore/dom/ClassNodeList.h
@@ -31,6 +31,7 @@
 #define ClassNodeList_h
 
 #include "DynamicNodeList.h"
+#include "Node.h"
 #include "SpaceSplitString.h"
 
 namespace WebCore {
diff --git a/WebCore/dom/ClipboardEvent.cpp b/WebCore/dom/ClipboardEvent.cpp
index 3c427e1..b64703d 100644
--- a/WebCore/dom/ClipboardEvent.cpp
+++ b/WebCore/dom/ClipboardEvent.cpp
@@ -34,6 +34,10 @@ ClipboardEvent::ClipboardEvent(const AtomicString& eventType, bool canBubble, bo
 {
 }
 
+ClipboardEvent::~ClipboardEvent()
+{
+}
+
 bool ClipboardEvent::isClipboardEvent() const
 {
     return true;
diff --git a/WebCore/dom/ClipboardEvent.h b/WebCore/dom/ClipboardEvent.h
index b9bc705..42741e6 100644
--- a/WebCore/dom/ClipboardEvent.h
+++ b/WebCore/dom/ClipboardEvent.h
@@ -31,6 +31,8 @@ namespace WebCore {
 
     class ClipboardEvent : public Event {
     public:
+        virtual ~ClipboardEvent();
+
         static PassRefPtr<ClipboardEvent> create()
         {
             return adoptRef(new ClipboardEvent);
diff --git a/WebCore/dom/CustomEvent.cpp b/WebCore/dom/CustomEvent.cpp
index c377063..53e255d 100644
--- a/WebCore/dom/CustomEvent.cpp
+++ b/WebCore/dom/CustomEvent.cpp
@@ -34,6 +34,10 @@ CustomEvent::CustomEvent()
 {
 }
 
+CustomEvent::~CustomEvent()
+{
+}
+
 void CustomEvent::initCustomEvent(const AtomicString& type, bool canBubble, bool cancelable, ScriptValue detail)
 {
     if (dispatched())
diff --git a/WebCore/dom/CustomEvent.h b/WebCore/dom/CustomEvent.h
index 8372af2..65c3f04 100644
--- a/WebCore/dom/CustomEvent.h
+++ b/WebCore/dom/CustomEvent.h
@@ -34,6 +34,8 @@ namespace WebCore {
 
 class CustomEvent : public Event {
 public:
+    virtual ~CustomEvent();
+
     static PassRefPtr<CustomEvent> create()
     {
         return adoptRef(new CustomEvent);
diff --git a/WebCore/dom/Element.cpp b/WebCore/dom/Element.cpp
index 60a1063..67e0fd0 100644
--- a/WebCore/dom/Element.cpp
+++ b/WebCore/dom/Element.cpp
@@ -94,6 +94,11 @@ NodeRareData* Element::createRareData()
     return new ElementRareData;
 }
 
+DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(Element, blur);
+DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(Element, error);
+DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(Element, focus);
+DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(Element, load);
+
 PassRefPtr<DocumentFragment> Element::deprecatedCreateContextualFragment(const String& markup, FragmentScriptingPermission scriptingPermission)
 {
     RefPtr<DocumentFragment> fragment = document()->createDocumentFragment();
diff --git a/WebCore/dom/Element.h b/WebCore/dom/Element.h
index b51e750..aa29729 100644
--- a/WebCore/dom/Element.h
+++ b/WebCore/dom/Element.h
@@ -74,10 +74,10 @@ public:
 
     // These four attribute event handler attributes are overridden by HTMLBodyElement
     // and HTMLFrameSetElement to forward to the DOMWindow.
-    DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(blur);
-    DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(error);
-    DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(focus);
-    DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(load);
+    DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(blur);
+    DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(error);
+    DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(focus);
+    DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(load);
 
     // WebKit extensions
     DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut);
diff --git a/WebCore/dom/EventTarget.cpp b/WebCore/dom/EventTarget.cpp
index 9db4174..42cbb32 100644
--- a/WebCore/dom/EventTarget.cpp
+++ b/WebCore/dom/EventTarget.cpp
@@ -66,6 +66,10 @@ bool eventDispatchForbidden()
 }
 #endif // NDEBUG
 
+EventTargetData::EventTargetData()
+{
+}
+
 EventTargetData::~EventTargetData()
 {
     deleteAllValues(eventListenerMap);
diff --git a/WebCore/dom/EventTarget.h b/WebCore/dom/EventTarget.h
index de7c2e0..feff4ae 100644
--- a/WebCore/dom/EventTarget.h
+++ b/WebCore/dom/EventTarget.h
@@ -83,6 +83,7 @@ namespace WebCore {
     typedef HashMap<AtomicString, EventListenerVector*> EventListenerMap;
 
     struct EventTargetData : Noncopyable {
+        EventTargetData();
         ~EventTargetData();
 
         EventListenerMap eventListenerMap;
@@ -177,9 +178,13 @@ namespace WebCore {
         EventListener* on##attribute() { return getAttributeEventListener(eventNames().attribute##Event); } \
         void setOn##attribute(PassRefPtr<EventListener> listener) { setAttributeEventListener(eventNames().attribute##Event, listener); } \
 
-    #define DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(attribute) \
-        virtual EventListener* on##attribute() { return getAttributeEventListener(eventNames().attribute##Event); } \
-        virtual void setOn##attribute(PassRefPtr<EventListener> listener) { setAttributeEventListener(eventNames().attribute##Event, listener); } \
+    #define DECLARE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(attribute) \
+        virtual EventListener* on##attribute(); \
+        virtual void setOn##attribute(PassRefPtr<EventListener> listener); \
+
+    #define DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(type, attribute) \
+        EventListener* type::on##attribute() { return getAttributeEventListener(eventNames().attribute##Event); } \
+        void type::setOn##attribute(PassRefPtr<EventListener> listener) { setAttributeEventListener(eventNames().attribute##Event, listener); } \
 
     #define DEFINE_WINDOW_ATTRIBUTE_EVENT_LISTENER(attribute) \
         EventListener* on##attribute() { return document()->getWindowAttributeEventListener(eventNames().attribute##Event); } \
diff --git a/WebCore/dom/InputElement.cpp b/WebCore/dom/InputElement.cpp
index b2a9714..ecae206 100644
--- a/WebCore/dom/InputElement.cpp
+++ b/WebCore/dom/InputElement.cpp
@@ -279,6 +279,10 @@ InputElementData::InputElementData()
 {
 }
 
+InputElementData::~InputElementData()
+{
+}
+
 const AtomicString& InputElementData::name() const
 {
     return m_name.isNull() ? emptyAtom : m_name;
diff --git a/WebCore/dom/InputElement.h b/WebCore/dom/InputElement.h
index d5ce212..34784bc 100644
--- a/WebCore/dom/InputElement.h
+++ b/WebCore/dom/InputElement.h
@@ -107,6 +107,7 @@ protected:
 class InputElementData {
 public:
     InputElementData();
+    ~InputElementData();
 
     const AtomicString& name() const;
     void setName(const AtomicString& value) { m_name = value; }
diff --git a/WebCore/dom/MutationEvent.cpp b/WebCore/dom/MutationEvent.cpp
index 58bce1f..890742f 100644
--- a/WebCore/dom/MutationEvent.cpp
+++ b/WebCore/dom/MutationEvent.cpp
@@ -42,6 +42,10 @@ MutationEvent::MutationEvent(const AtomicString& type, bool canBubble, bool canc
 {
 }
 
+MutationEvent::~MutationEvent()
+{
+}
+
 void MutationEvent::initMutationEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<Node> relatedNode,
                                       const String& prevValue, const String& newValue,
                                       const String& attrName, unsigned short attrChange)
diff --git a/WebCore/dom/MutationEvent.h b/WebCore/dom/MutationEvent.h
index 29b978c..f2ba759 100644
--- a/WebCore/dom/MutationEvent.h
+++ b/WebCore/dom/MutationEvent.h
@@ -31,6 +31,8 @@ namespace WebCore {
 
     class MutationEvent : public Event {
     public:
+        virtual ~MutationEvent();
+
         enum attrChangeType {
             MODIFICATION    = 1,
             ADDITION        = 2,
diff --git a/WebCore/dom/Node.cpp b/WebCore/dom/Node.cpp
index f54fec7..ab9dc02 100644
--- a/WebCore/dom/Node.cpp
+++ b/WebCore/dom/Node.cpp
@@ -731,6 +731,16 @@ inline void Node::markAncestorsWithChildNeedsStyleRecalc()
         document()->scheduleStyleRecalc();
 }
 
+void Node::refEventTarget()
+{
+    ref();
+}
+
+void Node::derefEventTarget()
+{
+    deref();
+}
+
 void Node::setNeedsStyleRecalc(StyleChangeType changeType)
 {
     ASSERT(changeType != NoStyleChange);
diff --git a/WebCore/dom/Node.h b/WebCore/dom/Node.h
index 587effd..b358094 100644
--- a/WebCore/dom/Node.h
+++ b/WebCore/dom/Node.h
@@ -687,8 +687,8 @@ private:
     // Used to share code between lazyAttach and setNeedsStyleRecalc.
     void markAncestorsWithChildNeedsStyleRecalc();
 
-    virtual void refEventTarget() { ref(); }
-    virtual void derefEventTarget() { deref(); }
+    virtual void refEventTarget();
+    virtual void derefEventTarget();
 
     virtual NodeRareData* createRareData();
     Node* containerChildNode(unsigned index) const;
diff --git a/WebCore/dom/OptionElement.cpp b/WebCore/dom/OptionElement.cpp
index 240a8fc..ab7863e 100644
--- a/WebCore/dom/OptionElement.cpp
+++ b/WebCore/dom/OptionElement.cpp
@@ -134,6 +134,10 @@ OptionElementData::OptionElementData()
 {
 }
 
+OptionElementData::~OptionElementData()
+{
+}
+
 OptionElement* toOptionElement(Element* element)
 {
     if (element->isHTMLElement() && element->hasTagName(HTMLNames::optionTag))
diff --git a/WebCore/dom/OptionElement.h b/WebCore/dom/OptionElement.h
index 232c3ee..9ff5cd5 100644
--- a/WebCore/dom/OptionElement.h
+++ b/WebCore/dom/OptionElement.h
@@ -58,6 +58,7 @@ private:
 class OptionElementData {
 public:
     OptionElementData();
+    ~OptionElementData();
 
     String value() const { return m_value; }
     void setValue(const String& value) { m_value = value; }
diff --git a/WebCore/dom/PopStateEvent.cpp b/WebCore/dom/PopStateEvent.cpp
index b9ad862..bac676a 100644
--- a/WebCore/dom/PopStateEvent.cpp
+++ b/WebCore/dom/PopStateEvent.cpp
@@ -36,7 +36,11 @@ PopStateEvent::PopStateEvent(PassRefPtr<SerializedScriptValue> stateObject)
     , m_stateObject(stateObject)
 {
 }
-    
+
+PopStateEvent::~PopStateEvent()
+{
+}
+
 void PopStateEvent::initPopStateEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<SerializedScriptValue> stateObject)
 {
     if (dispatched())
diff --git a/WebCore/dom/PopStateEvent.h b/WebCore/dom/PopStateEvent.h
index 2fb8d06..42fbd45 100644
--- a/WebCore/dom/PopStateEvent.h
+++ b/WebCore/dom/PopStateEvent.h
@@ -36,6 +36,8 @@ class SerializedScriptValue;
 
 class PopStateEvent : public Event {
 public:
+    virtual ~PopStateEvent();
+
     static PassRefPtr<PopStateEvent> create(PassRefPtr<SerializedScriptValue> stateObject)
     {
         return adoptRef(new PopStateEvent(stateObject));
@@ -47,7 +49,7 @@ public:
     SerializedScriptValue* state() const { return m_stateObject.get(); }    
 
 private:
-    PopStateEvent(PassRefPtr<SerializedScriptValue>);
+    explicit PopStateEvent(PassRefPtr<SerializedScriptValue>);
 
     RefPtr<SerializedScriptValue> m_stateObject;
 };
diff --git a/WebCore/dom/QualifiedName.cpp b/WebCore/dom/QualifiedName.cpp
index 7c29ce0..90c6d29 100644
--- a/WebCore/dom/QualifiedName.cpp
+++ b/WebCore/dom/QualifiedName.cpp
@@ -72,6 +72,11 @@ QualifiedName::QualifiedName(const AtomicString& p, const char* l, const AtomicS
     init(p, AtomicString(l), n);
 }
 
+QualifiedName::~QualifiedName()
+{
+    deref();
+}
+
 void QualifiedName::deref()
 {
 #ifdef QNAME_DEFAULT_CONSTRUCTOR
diff --git a/WebCore/dom/QualifiedName.h b/WebCore/dom/QualifiedName.h
index 2da8f0c..34fc069 100644
--- a/WebCore/dom/QualifiedName.h
+++ b/WebCore/dom/QualifiedName.h
@@ -60,7 +60,7 @@ public:
     QualifiedName(const AtomicString& prefix, const char* localName, const AtomicString& namespaceURI);
     QualifiedName(WTF::HashTableDeletedValueType) : m_impl(hashTableDeletedValue()) { }
     bool isHashTableDeletedValue() const { return m_impl == hashTableDeletedValue(); }
-    ~QualifiedName() { deref(); }
+    ~QualifiedName();
 #ifdef QNAME_DEFAULT_CONSTRUCTOR
     QualifiedName() : m_impl(0) { }
 #endif
diff --git a/WebCore/dom/SelectElement.cpp b/WebCore/dom/SelectElement.cpp
index 024ba7a..1af012e 100644
--- a/WebCore/dom/SelectElement.cpp
+++ b/WebCore/dom/SelectElement.cpp
@@ -953,6 +953,10 @@ SelectElementData::SelectElementData()
 {
 }
 
+SelectElementData::~SelectElementData()
+{
+}
+
 void SelectElementData::checkListItems(const Element* element) const
 {
 #if !ASSERT_DISABLED
diff --git a/WebCore/dom/SelectElement.h b/WebCore/dom/SelectElement.h
index 73e2620..53815f2 100644
--- a/WebCore/dom/SelectElement.h
+++ b/WebCore/dom/SelectElement.h
@@ -113,6 +113,7 @@ private:
 class SelectElementData {
 public:
     SelectElementData();
+    ~SelectElementData();
 
     bool multiple() const { return m_multiple; }
     void setMultiple(bool value) { m_multiple = value; }
diff --git a/WebCore/dom/StaticHashSetNodeList.cpp b/WebCore/dom/StaticHashSetNodeList.cpp
index d641cb5..6c8c2db 100644
--- a/WebCore/dom/StaticHashSetNodeList.cpp
+++ b/WebCore/dom/StaticHashSetNodeList.cpp
@@ -34,6 +34,19 @@
 
 namespace WebCore {
 
+StaticHashSetNodeList::StaticHashSetNodeList(ListHashSet<RefPtr<Node> >& nodes)
+{
+    m_nodes.swap(nodes);
+}
+
+StaticHashSetNodeList::StaticHashSetNodeList()
+{
+}
+
+StaticHashSetNodeList::~StaticHashSetNodeList()
+{
+}
+
 unsigned StaticHashSetNodeList::length() const
 {
     return m_nodes.size();
diff --git a/WebCore/dom/StaticHashSetNodeList.h b/WebCore/dom/StaticHashSetNodeList.h
index e954493..e60bf44 100644
--- a/WebCore/dom/StaticHashSetNodeList.h
+++ b/WebCore/dom/StaticHashSetNodeList.h
@@ -41,6 +41,9 @@ class Node;
 
 class StaticHashSetNodeList : public NodeList {
 public:
+    StaticHashSetNodeList();
+    ~StaticHashSetNodeList();
+
     // Adopts the contents of the nodes ListHashSet.
     static PassRefPtr<StaticHashSetNodeList> adopt(const ListHashSet<RefPtr<Node> >& nodes)
     {
@@ -57,10 +60,7 @@ public:
     virtual Node* itemWithName(const AtomicString&) const;
 
 private:
-    StaticHashSetNodeList(ListHashSet<RefPtr<Node> >& nodes)
-    {
-        m_nodes.swap(nodes);
-    }
+    StaticHashSetNodeList(ListHashSet<RefPtr<Node> >& nodes);
 
     ListHashSet<RefPtr<Node> > m_nodes;
 };
diff --git a/WebCore/dom/StyleElement.cpp b/WebCore/dom/StyleElement.cpp
index c3a7300..f318326 100644
--- a/WebCore/dom/StyleElement.cpp
+++ b/WebCore/dom/StyleElement.cpp
@@ -39,6 +39,10 @@ StyleElement::StyleElement(Document* document, bool createdByParser)
         m_startLineNumber = document->scriptableDocumentParser()->lineNumber();
 }
 
+StyleElement::~StyleElement()
+{
+}
+
 StyleSheet* StyleElement::sheet(Element* e)
 {
     if (!m_sheet)
diff --git a/WebCore/dom/StyleElement.h b/WebCore/dom/StyleElement.h
index 00e45ed..65f6310 100644
--- a/WebCore/dom/StyleElement.h
+++ b/WebCore/dom/StyleElement.h
@@ -31,7 +31,7 @@ class Element;
 class StyleElement {
 public:
     StyleElement(Document*, bool createdByParser);
-    virtual ~StyleElement() {}
+    virtual ~StyleElement();
 
 protected:
     virtual const AtomicString& type() const = 0;
diff --git a/WebCore/dom/TouchEvent.cpp b/WebCore/dom/TouchEvent.cpp
index bcc395f..88d3e6f 100644
--- a/WebCore/dom/TouchEvent.cpp
+++ b/WebCore/dom/TouchEvent.cpp
@@ -31,6 +31,10 @@
 
 namespace WebCore {
 
+TouchEvent::TouchEvent()
+{
+}
+
 TouchEvent::TouchEvent(TouchList* touches, TouchList* targetTouches,
         TouchList* changedTouches, const AtomicString& type, 
         PassRefPtr<AbstractView> view, int screenX, int screenY, int pageX, int pageY,
@@ -43,6 +47,10 @@ TouchEvent::TouchEvent(TouchList* touches, TouchList* targetTouches,
 {
 }
 
+TouchEvent::~TouchEvent()
+{
+}
+
 void TouchEvent::initTouchEvent(TouchList* touches, TouchList* targetTouches,
         TouchList* changedTouches, const AtomicString& type, 
         PassRefPtr<AbstractView> view, int screenX, int screenY, int clientX, int clientY,
diff --git a/WebCore/dom/TouchEvent.h b/WebCore/dom/TouchEvent.h
index 080a495..1514cf8 100644
--- a/WebCore/dom/TouchEvent.h
+++ b/WebCore/dom/TouchEvent.h
@@ -35,6 +35,8 @@ namespace WebCore {
 
 class TouchEvent : public MouseRelatedEvent {
 public:
+    virtual ~TouchEvent();
+
     static PassRefPtr<TouchEvent> create()
     {
         return adoptRef(new TouchEvent);
@@ -61,7 +63,7 @@ public:
     TouchList* changedTouches() const { return m_changedTouches.get(); }
 
 private:
-    TouchEvent() {}
+    TouchEvent();
     TouchEvent(TouchList* touches, TouchList* targetTouches,
             TouchList* changedTouches, const AtomicString& type,
             PassRefPtr<AbstractView>, int screenX, int screenY, int pageX,
diff --git a/WebCore/editing/CompositeEditCommand.cpp b/WebCore/editing/CompositeEditCommand.cpp
index 356a717..f27a2e5 100644
--- a/WebCore/editing/CompositeEditCommand.cpp
+++ b/WebCore/editing/CompositeEditCommand.cpp
@@ -77,6 +77,10 @@ CompositeEditCommand::CompositeEditCommand(Document *document)
 {
 }
 
+CompositeEditCommand::~CompositeEditCommand()
+{
+}
+
 void CompositeEditCommand::doUnapply()
 {
     size_t size = m_commands.size();
diff --git a/WebCore/editing/CompositeEditCommand.h b/WebCore/editing/CompositeEditCommand.h
index f839a72..4397464 100644
--- a/WebCore/editing/CompositeEditCommand.h
+++ b/WebCore/editing/CompositeEditCommand.h
@@ -39,10 +39,12 @@ class Text;
 
 class CompositeEditCommand : public EditCommand {
 public:
+    virtual ~CompositeEditCommand();
+
     bool isFirstCommand(EditCommand* command) { return !m_commands.isEmpty() && m_commands.first() == command; }
 
 protected:
-    CompositeEditCommand(Document*);
+    explicit CompositeEditCommand(Document*);
 
     //
     // sugary-sweet convenience functions to help create and apply edit commands in composite commands
diff --git a/WebCore/editing/TextIterator.cpp b/WebCore/editing/TextIterator.cpp
index 0612986..da30d8f 100644
--- a/WebCore/editing/TextIterator.cpp
+++ b/WebCore/editing/TextIterator.cpp
@@ -112,6 +112,10 @@ BitStack::BitStack()
 {
 }
 
+BitStack::~BitStack()
+{
+}
+
 void BitStack::push(bool bit)
 {
     unsigned index = m_size / bitsInWord;
@@ -336,6 +340,10 @@ TextIterator::TextIterator(const Range* r, TextIteratorBehavior behavior)
     advance();
 }
 
+TextIterator::~TextIterator()
+{
+}
+
 void TextIterator::advance()
 {
     // reset the run information
@@ -1456,6 +1464,10 @@ WordAwareIterator::WordAwareIterator(const Range* r)
     advance(); // get in position over the first chunk of text
 }
 
+WordAwareIterator::~WordAwareIterator()
+{
+}
+
 // We're always in one of these modes:
 // - The current chunk in the text iterator is our current chunk
 //      (typically its a piece of whitespace, or text that ended with whitespace)
diff --git a/WebCore/editing/TextIterator.h b/WebCore/editing/TextIterator.h
index 7fd87bd..1bd8828 100644
--- a/WebCore/editing/TextIterator.h
+++ b/WebCore/editing/TextIterator.h
@@ -64,6 +64,7 @@ PassRefPtr<Range> findPlainText(const Range*, const String&, bool forward, bool
 class BitStack {
 public:
     BitStack();
+    ~BitStack();
 
     void push(bool);
     void pop();
@@ -83,6 +84,7 @@ private:
 class TextIterator {
 public:
     TextIterator();
+    ~TextIterator();
     explicit TextIterator(const Range*, TextIteratorBehavior = TextIteratorDefaultBehavior);
 
     bool atEnd() const { return !m_positionNode; }
@@ -291,6 +293,7 @@ class WordAwareIterator {
 public:
     WordAwareIterator();
     explicit WordAwareIterator(const Range*);
+    ~WordAwareIterator();
 
     bool atEnd() const { return !m_didLookAhead && m_textIterator.atEnd(); }
     void advance();
diff --git a/WebCore/inspector/InspectorValues.cpp b/WebCore/inspector/InspectorValues.cpp
index c96e953..452fa7f 100644
--- a/WebCore/inspector/InspectorValues.cpp
+++ b/WebCore/inspector/InspectorValues.cpp
@@ -622,6 +622,10 @@ void InspectorString::writeJSON(Vector<UChar>* output) const
     doubleQuoteString(m_stringValue, output);
 }
 
+InspectorObject::~InspectorObject()
+{
+}
+
 bool InspectorObject::asObject(RefPtr<InspectorObject>* output)
 {
     *output = this;
@@ -696,6 +700,17 @@ void InspectorObject::writeJSON(Vector<UChar>* output) const
     output->append('}');
 }
 
+InspectorObject::InspectorObject()
+    : InspectorValue(TypeObject)
+    , m_data()
+    , m_order()
+{
+}
+
+InspectorArray::~InspectorArray()
+{
+}
+
 bool InspectorArray::asArray(RefPtr<InspectorArray>* output)
 {
     *output = this;
@@ -718,6 +733,12 @@ void InspectorArray::writeJSON(Vector<UChar>* output) const
     output->append(']');
 }
 
+InspectorArray::InspectorArray()
+    : InspectorValue(TypeArray)
+    , m_data()
+{
+}
+
 PassRefPtr<InspectorValue> InspectorArray::get(size_t index)
 {
     ASSERT(index < m_data.size());
diff --git a/WebCore/inspector/InspectorValues.h b/WebCore/inspector/InspectorValues.h
index 4036f55..391372e 100644
--- a/WebCore/inspector/InspectorValues.h
+++ b/WebCore/inspector/InspectorValues.h
@@ -166,7 +166,7 @@ public:
     {
         return adoptRef(new InspectorObject());
     }
-    ~InspectorObject() { }
+    ~InspectorObject();
 
     virtual bool asObject(RefPtr<InspectorObject>* output);
     virtual PassRefPtr<InspectorObject> asObject();
@@ -194,7 +194,7 @@ public:
     const_iterator end() const { return m_data.end(); }
 
 private:
-    InspectorObject() : InspectorValue(TypeObject) { }
+    InspectorObject();
     Dictionary m_data;
     Vector<String> m_order;
 };
@@ -205,7 +205,7 @@ public:
     {
         return adoptRef(new InspectorArray());
     }
-    ~InspectorArray() { }
+    ~InspectorArray();
 
     virtual bool asArray(RefPtr<InspectorArray>* output);
     virtual PassRefPtr<InspectorArray> asArray();
@@ -223,7 +223,7 @@ public:
     virtual void writeJSON(Vector<UChar>* output) const;
 
 private:
-    InspectorArray() : InspectorValue(TypeArray) { }
+    InspectorArray();
     Vector<RefPtr<InspectorValue> > m_data;
 };
 
diff --git a/WebCore/loader/CachedResource.cpp b/WebCore/loader/CachedResource.cpp
index a6ff0ff..08aca20 100644
--- a/WebCore/loader/CachedResource.cpp
+++ b/WebCore/loader/CachedResource.cpp
@@ -428,6 +428,25 @@ void CachedResource::updateResponseAfterRevalidation(const ResourceResponse& val
     }
 }
 
+void CachedResource::registerHandle(CachedResourceHandleBase* h)
+{
+    ++m_handleCount;
+    if (m_resourceToRevalidate)
+        m_handlesToRevalidate.add(h);
+}
+
+void CachedResource::unregisterHandle(CachedResourceHandleBase* h)
+{
+    ASSERT(m_handleCount > 0);
+    --m_handleCount;
+
+    if (m_resourceToRevalidate)
+         m_handlesToRevalidate.remove(h);
+
+    if (!m_handleCount)
+        deleteIfPossible();
+}
+
 bool CachedResource::canUseCacheValidator() const
 {
     if (m_loading || m_errorOccurred)
diff --git a/WebCore/loader/CachedResource.h b/WebCore/loader/CachedResource.h
index f95dccf..078da57 100644
--- a/WebCore/loader/CachedResource.h
+++ b/WebCore/loader/CachedResource.h
@@ -186,8 +186,8 @@ public:
     void increasePreloadCount() { ++m_preloadCount; }
     void decreasePreloadCount() { ASSERT(m_preloadCount); --m_preloadCount; }
     
-    void registerHandle(CachedResourceHandleBase* h) { ++m_handleCount; if (m_resourceToRevalidate) m_handlesToRevalidate.add(h); }
-    void unregisterHandle(CachedResourceHandleBase* h) { ASSERT(m_handleCount > 0); --m_handleCount; if (m_resourceToRevalidate) m_handlesToRevalidate.remove(h); if (!m_handleCount) deleteIfPossible(); }
+    void registerHandle(CachedResourceHandleBase* h);
+    void unregisterHandle(CachedResourceHandleBase* h);
     
     bool canUseCacheValidator() const;
     bool mustRevalidate(CachePolicy) const;
diff --git a/WebCore/platform/network/HTTPHeaderMap.cpp b/WebCore/platform/network/HTTPHeaderMap.cpp
index e304ffa..92079a0 100644
--- a/WebCore/platform/network/HTTPHeaderMap.cpp
+++ b/WebCore/platform/network/HTTPHeaderMap.cpp
@@ -37,6 +37,14 @@ using namespace std;
 
 namespace WebCore {
 
+HTTPHeaderMap::HTTPHeaderMap()
+{
+}
+
+HTTPHeaderMap::~HTTPHeaderMap()
+{
+}
+
 PassOwnPtr<CrossThreadHTTPHeaderMapData> HTTPHeaderMap::copyData() const
 {
     OwnPtr<CrossThreadHTTPHeaderMapData> data(new CrossThreadHTTPHeaderMapData());
@@ -58,7 +66,17 @@ void HTTPHeaderMap::adopt(PassOwnPtr<CrossThreadHTTPHeaderMapData> data)
         set(header.first, header.second);
     }
 }
-    
+
+String HTTPHeaderMap::get(const AtomicString& name) const
+{
+    return HashMap<AtomicString, String, CaseFoldingHash>::get(name);
+}
+
+pair<HTTPHeaderMap::iterator, bool> HTTPHeaderMap::add(const AtomicString& name, const String& value)
+{
+    return HashMap<AtomicString, String, CaseFoldingHash>::add(name, value);
+}
+
 // Adapter that allows the HashMap to take C strings as keys.
 struct CaseFoldingCStringTranslator {
     static unsigned hash(const char* cString)
diff --git a/WebCore/platform/network/HTTPHeaderMap.h b/WebCore/platform/network/HTTPHeaderMap.h
index c6145bd..02071e3 100644
--- a/WebCore/platform/network/HTTPHeaderMap.h
+++ b/WebCore/platform/network/HTTPHeaderMap.h
@@ -41,20 +41,17 @@ namespace WebCore {
 
     class HTTPHeaderMap : public HashMap<AtomicString, String, CaseFoldingHash> {
     public:
+        HTTPHeaderMap();
+        ~HTTPHeaderMap();
+
         // Gets a copy of the data suitable for passing to another thread.
         PassOwnPtr<CrossThreadHTTPHeaderMapData> copyData() const;
 
         void adopt(PassOwnPtr<CrossThreadHTTPHeaderMapData>);
         
-        String get(const AtomicString& name) const
-        {
-            return HashMap<AtomicString, String, CaseFoldingHash>::get(name);
-        }
+        String get(const AtomicString& name) const;
 
-        pair<iterator, bool> add(const AtomicString& name, const String& value)
-        {
-            return HashMap<AtomicString, String, CaseFoldingHash>::add(name, value);
-        }
+        pair<iterator, bool> add(const AtomicString& name, const String& value);
 
         // Alternate accessors that are faster than converting the char* to AtomicString first.
         bool contains(const char*) const;
diff --git a/WebCore/rendering/RenderApplet.cpp b/WebCore/rendering/RenderApplet.cpp
index 63a18a0..f9eb56e 100644
--- a/WebCore/rendering/RenderApplet.cpp
+++ b/WebCore/rendering/RenderApplet.cpp
@@ -39,6 +39,10 @@ RenderApplet::RenderApplet(HTMLAppletElement* applet, const HashMap<String, Stri
     setInline(true);
 }
 
+RenderApplet::~RenderApplet()
+{
+}
+
 IntSize RenderApplet::intrinsicSize() const
 {
     // FIXME: This doesn't make sense. We can't just start returning
diff --git a/WebCore/rendering/RenderApplet.h b/WebCore/rendering/RenderApplet.h
index 62f46cd..641568d 100644
--- a/WebCore/rendering/RenderApplet.h
+++ b/WebCore/rendering/RenderApplet.h
@@ -32,6 +32,7 @@ namespace WebCore {
     class RenderApplet : public RenderWidget {
     public:
         RenderApplet(HTMLAppletElement*, const HashMap<String, String>& args);
+        virtual ~RenderApplet();
 
         void createWidgetIfNecessary();
 
diff --git a/WebCore/rendering/RenderButton.cpp b/WebCore/rendering/RenderButton.cpp
index 8357bd4..2642f23 100644
--- a/WebCore/rendering/RenderButton.cpp
+++ b/WebCore/rendering/RenderButton.cpp
@@ -45,6 +45,10 @@ RenderButton::RenderButton(Node* node)
 {
 }
 
+RenderButton::~RenderButton()
+{
+}
+
 void RenderButton::addChild(RenderObject* newChild, RenderObject* beforeChild)
 {
     if (!m_inner) {
diff --git a/WebCore/rendering/RenderButton.h b/WebCore/rendering/RenderButton.h
index 1fc5eb6..252edb4 100644
--- a/WebCore/rendering/RenderButton.h
+++ b/WebCore/rendering/RenderButton.h
@@ -34,7 +34,8 @@ class RenderTextFragment;
 // to date as the button changes.
 class RenderButton : public RenderFlexibleBox {
 public:
-    RenderButton(Node*);
+    explicit RenderButton(Node*);
+    virtual ~RenderButton();
 
     virtual const char* renderName() const { return "RenderButton"; }
     virtual bool isRenderButton() const { return true; }
diff --git a/WebCore/rendering/RenderCounter.cpp b/WebCore/rendering/RenderCounter.cpp
index ba9c503..c357be1 100644
--- a/WebCore/rendering/RenderCounter.cpp
+++ b/WebCore/rendering/RenderCounter.cpp
@@ -294,6 +294,10 @@ RenderCounter::RenderCounter(Document* node, const CounterContent& counter)
 {
 }
 
+RenderCounter::~RenderCounter()
+{
+}
+
 const char* RenderCounter::renderName() const
 {
     return "RenderCounter";
diff --git a/WebCore/rendering/RenderCounter.h b/WebCore/rendering/RenderCounter.h
index 8d981df..9373193 100644
--- a/WebCore/rendering/RenderCounter.h
+++ b/WebCore/rendering/RenderCounter.h
@@ -32,6 +32,7 @@ class CounterNode;
 class RenderCounter : public RenderText {
 public:
     RenderCounter(Document*, const CounterContent&);
+    virtual ~RenderCounter();
 
     // Removes the reference to the CounterNode associated with this renderer
     // if its identifier matches the argument.
diff --git a/WebCore/rendering/RenderFieldset.h b/WebCore/rendering/RenderFieldset.h
index ea4e587..bada78c 100644
--- a/WebCore/rendering/RenderFieldset.h
+++ b/WebCore/rendering/RenderFieldset.h
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class RenderFieldset : public RenderBlock {
 public:
-    RenderFieldset(Node*);
+    explicit RenderFieldset(Node*);
 
     RenderBox* findLegend() const;
 
diff --git a/WebCore/rendering/RenderForeignObject.cpp b/WebCore/rendering/RenderForeignObject.cpp
index 839e963..f9f6988 100644
--- a/WebCore/rendering/RenderForeignObject.cpp
+++ b/WebCore/rendering/RenderForeignObject.cpp
@@ -41,6 +41,10 @@ RenderForeignObject::RenderForeignObject(SVGForeignObjectElement* node)
 {
 }
 
+RenderForeignObject::~RenderForeignObject()
+{
+}
+
 void RenderForeignObject::paint(PaintInfo& paintInfo, int, int)
 {
     if (paintInfo.context->paintingDisabled())
diff --git a/WebCore/rendering/RenderForeignObject.h b/WebCore/rendering/RenderForeignObject.h
index 87423e6..bdf96ce 100644
--- a/WebCore/rendering/RenderForeignObject.h
+++ b/WebCore/rendering/RenderForeignObject.h
@@ -33,7 +33,8 @@ class SVGForeignObjectElement;
 
 class RenderForeignObject : public RenderSVGBlock {
 public:
-    RenderForeignObject(SVGForeignObjectElement*);
+    explicit RenderForeignObject(SVGForeignObjectElement*);
+    virtual ~RenderForeignObject();
 
     virtual const char* renderName() const { return "RenderForeignObject"; }
 
diff --git a/WebCore/rendering/RenderFrame.h b/WebCore/rendering/RenderFrame.h
index c895a0c..f6d7ee8 100644
--- a/WebCore/rendering/RenderFrame.h
+++ b/WebCore/rendering/RenderFrame.h
@@ -32,7 +32,7 @@ class HTMLFrameElement;
 
 class RenderFrame : public RenderFrameBase {
 public:
-    RenderFrame(HTMLFrameElement*);
+    explicit RenderFrame(HTMLFrameElement*);
 
     FrameEdgeInfo edgeInfo() const;
 
diff --git a/WebCore/rendering/RenderFrameBase.h b/WebCore/rendering/RenderFrameBase.h
index cd3cf0c..4fad560 100644
--- a/WebCore/rendering/RenderFrameBase.h
+++ b/WebCore/rendering/RenderFrameBase.h
@@ -33,7 +33,7 @@ namespace WebCore {
 // Base class for RenderFrame and RenderIFrame
 class RenderFrameBase : public RenderPart {
 protected:
-    RenderFrameBase(Element*);
+    explicit RenderFrameBase(Element*);
 
 public:
     void layoutWithFlattening(bool fixedWidth, bool fixedHeight);
diff --git a/WebCore/rendering/RenderHTMLCanvas.h b/WebCore/rendering/RenderHTMLCanvas.h
index 473dad5..2230b39 100644
--- a/WebCore/rendering/RenderHTMLCanvas.h
+++ b/WebCore/rendering/RenderHTMLCanvas.h
@@ -34,7 +34,7 @@ class HTMLCanvasElement;
 
 class RenderHTMLCanvas : public RenderReplaced {
 public:
-    RenderHTMLCanvas(HTMLCanvasElement*);
+    explicit RenderHTMLCanvas(HTMLCanvasElement*);
 
     virtual bool isCanvas() const { return true; }
     virtual bool requiresLayer() const;
diff --git a/WebCore/rendering/RenderIFrame.h b/WebCore/rendering/RenderIFrame.h
index 325e2b3..0bb3182 100644
--- a/WebCore/rendering/RenderIFrame.h
+++ b/WebCore/rendering/RenderIFrame.h
@@ -32,7 +32,7 @@ namespace WebCore {
 
 class RenderIFrame : public RenderFrameBase {
 public:
-    RenderIFrame(Element*);
+    explicit RenderIFrame(Element*);
 
 #if USE(ACCELERATED_COMPOSITING)
     bool requiresAcceleratedCompositing() const;
diff --git a/WebCore/rendering/RenderInline.h b/WebCore/rendering/RenderInline.h
index feb8b8f..34b29d7 100644
--- a/WebCore/rendering/RenderInline.h
+++ b/WebCore/rendering/RenderInline.h
@@ -32,7 +32,7 @@ class Position;
 
 class RenderInline : public RenderBoxModelObject {
 public:
-    RenderInline(Node*);
+    explicit RenderInline(Node*);
 
     virtual void destroy();
 
diff --git a/WebCore/rendering/RenderListItem.h b/WebCore/rendering/RenderListItem.h
index f7bd661..2fcb6c4 100644
--- a/WebCore/rendering/RenderListItem.h
+++ b/WebCore/rendering/RenderListItem.h
@@ -31,7 +31,7 @@ class RenderListMarker;
 
 class RenderListItem : public RenderBlock {
 public:
-    RenderListItem(Node*);
+    explicit RenderListItem(Node*);
 
     int value() const { if (!m_isValueUpToDate) updateValueNow(); return m_value; }
     void updateValue();
diff --git a/WebCore/rendering/RenderMarquee.cpp b/WebCore/rendering/RenderMarquee.cpp
index 43eb514..90383d8 100644
--- a/WebCore/rendering/RenderMarquee.cpp
+++ b/WebCore/rendering/RenderMarquee.cpp
@@ -66,6 +66,10 @@ RenderMarquee::RenderMarquee(RenderLayer* l)
 {
 }
 
+RenderMarquee::~RenderMarquee()
+{
+}
+
 int RenderMarquee::marqueeSpeed() const
 {
     int result = m_layer->renderer()->style()->marqueeSpeed();
diff --git a/WebCore/rendering/RenderMarquee.h b/WebCore/rendering/RenderMarquee.h
index 1651454..79998ed 100644
--- a/WebCore/rendering/RenderMarquee.h
+++ b/WebCore/rendering/RenderMarquee.h
@@ -55,7 +55,8 @@ class RenderLayer;
 // This class handles the auto-scrolling of layers with overflow: marquee.
 class RenderMarquee : public Noncopyable {
 public:
-    RenderMarquee(RenderLayer*);
+    explicit RenderMarquee(RenderLayer*);
+    virtual ~RenderMarquee();
 
     int speed() const { return m_speed; }
     int marqueeSpeed() const;
diff --git a/WebCore/rendering/RenderSVGBlock.h b/WebCore/rendering/RenderSVGBlock.h
index c1379da..a9dd5db 100644
--- a/WebCore/rendering/RenderSVGBlock.h
+++ b/WebCore/rendering/RenderSVGBlock.h
@@ -31,7 +31,7 @@ class SVGElement;
 
 class RenderSVGBlock : public RenderBlock {
 public:
-    RenderSVGBlock(SVGElement*);
+    explicit RenderSVGBlock(SVGElement*);
 
 private:
     virtual void setStyle(PassRefPtr<RenderStyle>);
diff --git a/WebCore/rendering/RenderSVGContainer.cpp b/WebCore/rendering/RenderSVGContainer.cpp
index b5974ca..0761562 100644
--- a/WebCore/rendering/RenderSVGContainer.cpp
+++ b/WebCore/rendering/RenderSVGContainer.cpp
@@ -43,6 +43,10 @@ RenderSVGContainer::RenderSVGContainer(SVGStyledElement* node)
 {
 }
 
+RenderSVGContainer::~RenderSVGContainer()
+{
+}
+
 void RenderSVGContainer::layout()
 {
     ASSERT(needsLayout());
diff --git a/WebCore/rendering/RenderSVGContainer.h b/WebCore/rendering/RenderSVGContainer.h
index b0c952f..5bdbf32 100644
--- a/WebCore/rendering/RenderSVGContainer.h
+++ b/WebCore/rendering/RenderSVGContainer.h
@@ -33,7 +33,8 @@ class SVGElement;
 
 class RenderSVGContainer : public RenderSVGModelObject {
 public:
-    RenderSVGContainer(SVGStyledElement*);
+    explicit RenderSVGContainer(SVGStyledElement*);
+    virtual ~RenderSVGContainer();
 
     const RenderObjectChildList* children() const { return &m_children; }
     RenderObjectChildList* children() { return &m_children; }
diff --git a/WebCore/rendering/RenderSVGHiddenContainer.h b/WebCore/rendering/RenderSVGHiddenContainer.h
index 97800d4..c591a88 100644
--- a/WebCore/rendering/RenderSVGHiddenContainer.h
+++ b/WebCore/rendering/RenderSVGHiddenContainer.h
@@ -34,7 +34,7 @@ namespace WebCore {
     // <defs>, <linearGradient>, <radialGradient> are all good examples
     class RenderSVGHiddenContainer : public RenderSVGContainer {
     public:
-        RenderSVGHiddenContainer(SVGStyledElement*);
+        explicit RenderSVGHiddenContainer(SVGStyledElement*);
 
         virtual const char* renderName() const { return "RenderSVGHiddenContainer"; }
 
diff --git a/WebCore/rendering/RenderSVGModelObject.h b/WebCore/rendering/RenderSVGModelObject.h
index 9de217c..fb8f89f 100644
--- a/WebCore/rendering/RenderSVGModelObject.h
+++ b/WebCore/rendering/RenderSVGModelObject.h
@@ -47,7 +47,7 @@ class SVGStyledElement;
 
 class RenderSVGModelObject : public RenderObject {
 public:
-    RenderSVGModelObject(SVGStyledElement*);
+    explicit RenderSVGModelObject(SVGStyledElement*);
 
     virtual bool requiresLayer() const { return false; }
 
diff --git a/WebCore/rendering/RenderSVGResourceFilterPrimitive.h b/WebCore/rendering/RenderSVGResourceFilterPrimitive.h
index 4b23737..b054203 100644
--- a/WebCore/rendering/RenderSVGResourceFilterPrimitive.h
+++ b/WebCore/rendering/RenderSVGResourceFilterPrimitive.h
@@ -36,7 +36,7 @@ namespace WebCore {
 
 class RenderSVGResourceFilterPrimitive : public RenderSVGHiddenContainer {
 public:
-    RenderSVGResourceFilterPrimitive(SVGFilterPrimitiveStandardAttributes* filterPrimitiveElement);
+    explicit RenderSVGResourceFilterPrimitive(SVGFilterPrimitiveStandardAttributes* filterPrimitiveElement);
 
 private:
     virtual const char* renderName() const { return "RenderSVGResourceFilterPrimitive"; }
diff --git a/WebCore/rendering/RenderSVGRoot.cpp b/WebCore/rendering/RenderSVGRoot.cpp
index 31b62cf..a71454c 100644
--- a/WebCore/rendering/RenderSVGRoot.cpp
+++ b/WebCore/rendering/RenderSVGRoot.cpp
@@ -53,6 +53,10 @@ RenderSVGRoot::RenderSVGRoot(SVGStyledElement* node)
     setReplaced(true);
 }
 
+RenderSVGRoot::~RenderSVGRoot()
+{
+}
+
 int RenderSVGRoot::lineHeight(bool, bool) const
 {
     return height() + marginTop() + marginBottom();
diff --git a/WebCore/rendering/RenderSVGRoot.h b/WebCore/rendering/RenderSVGRoot.h
index 9964393..0f723be 100644
--- a/WebCore/rendering/RenderSVGRoot.h
+++ b/WebCore/rendering/RenderSVGRoot.h
@@ -35,7 +35,8 @@ class AffineTransform;
 
 class RenderSVGRoot : public RenderBox {
 public:
-    RenderSVGRoot(SVGStyledElement*);
+    explicit RenderSVGRoot(SVGStyledElement*);
+    virtual ~RenderSVGRoot();
 
     const RenderObjectChildList* children() const { return &m_children; }
     RenderObjectChildList* children() { return &m_children; }
diff --git a/WebCore/rendering/RenderSVGTransformableContainer.h b/WebCore/rendering/RenderSVGTransformableContainer.h
index b63b91c..b49a403 100644
--- a/WebCore/rendering/RenderSVGTransformableContainer.h
+++ b/WebCore/rendering/RenderSVGTransformableContainer.h
@@ -29,7 +29,7 @@ namespace WebCore {
     class SVGStyledTransformableElement;
     class RenderSVGTransformableContainer : public RenderSVGContainer {
     public:
-        RenderSVGTransformableContainer(SVGStyledTransformableElement*);
+        explicit RenderSVGTransformableContainer(SVGStyledTransformableElement*);
 
         virtual const AffineTransform& localToParentTransform() const { return m_localTransform; }
         virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; }
diff --git a/WebCore/rendering/RenderSVGViewportContainer.h b/WebCore/rendering/RenderSVGViewportContainer.h
index 7b5702b..63c336c 100644
--- a/WebCore/rendering/RenderSVGViewportContainer.h
+++ b/WebCore/rendering/RenderSVGViewportContainer.h
@@ -32,7 +32,7 @@ namespace WebCore {
 // thus we inherit from RenderSVGContainer instead of RenderSVGTransformableContainer
 class RenderSVGViewportContainer : public RenderSVGContainer {
 public:
-    RenderSVGViewportContainer(SVGStyledElement*);
+    explicit RenderSVGViewportContainer(SVGStyledElement*);
 
 private:
     virtual bool isSVGContainer() const { return true; }
diff --git a/WebCore/rendering/RenderTable.cpp b/WebCore/rendering/RenderTable.cpp
index 0027e6a..ffc38d2 100644
--- a/WebCore/rendering/RenderTable.cpp
+++ b/WebCore/rendering/RenderTable.cpp
@@ -65,6 +65,10 @@ RenderTable::RenderTable(Node* node)
     
 }
 
+RenderTable::~RenderTable()
+{
+}
+
 void RenderTable::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
 {
     RenderBlock::styleDidChange(diff, oldStyle);
diff --git a/WebCore/rendering/RenderTable.h b/WebCore/rendering/RenderTable.h
index afea402..1d41406 100644
--- a/WebCore/rendering/RenderTable.h
+++ b/WebCore/rendering/RenderTable.h
@@ -38,7 +38,8 @@ class TableLayout;
 
 class RenderTable : public RenderBlock {
 public:
-    RenderTable(Node*);
+    explicit RenderTable(Node*);
+    virtual ~RenderTable();
 
     int getColumnPos(int col) const { return m_columnPos[col]; }
 
diff --git a/WebCore/rendering/RenderTableCell.h b/WebCore/rendering/RenderTableCell.h
index 79376e9..d803f05 100644
--- a/WebCore/rendering/RenderTableCell.h
+++ b/WebCore/rendering/RenderTableCell.h
@@ -31,7 +31,7 @@ namespace WebCore {
 
 class RenderTableCell : public RenderBlock {
 public:
-    RenderTableCell(Node*);
+    explicit RenderTableCell(Node*);
 
     // FIXME: need to implement cellIndex
     int cellIndex() const { return 0; }
diff --git a/WebCore/rendering/RenderTableCol.h b/WebCore/rendering/RenderTableCol.h
index c5f9afc..5fb4128 100644
--- a/WebCore/rendering/RenderTableCol.h
+++ b/WebCore/rendering/RenderTableCol.h
@@ -34,7 +34,7 @@ class RenderTable;
 
 class RenderTableCol : public RenderBox {
 public:
-    RenderTableCol(Node*);
+    explicit RenderTableCol(Node*);
 
     const RenderObjectChildList* children() const { return &m_children; }
     RenderObjectChildList* children() { return &m_children; }
diff --git a/WebCore/rendering/RenderTableRow.h b/WebCore/rendering/RenderTableRow.h
index 588252b..3059060 100644
--- a/WebCore/rendering/RenderTableRow.h
+++ b/WebCore/rendering/RenderTableRow.h
@@ -31,7 +31,7 @@ namespace WebCore {
 
 class RenderTableRow : public RenderBox {
 public:
-    RenderTableRow(Node*);
+    explicit RenderTableRow(Node*);
 
     const RenderObjectChildList* children() const { return &m_children; }
     RenderObjectChildList* children() { return &m_children; }
diff --git a/WebCore/rendering/RenderTextFragment.cpp b/WebCore/rendering/RenderTextFragment.cpp
index b14308d..705c095 100644
--- a/WebCore/rendering/RenderTextFragment.cpp
+++ b/WebCore/rendering/RenderTextFragment.cpp
@@ -44,6 +44,10 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str)
 {
 }
 
+RenderTextFragment::~RenderTextFragment()
+{
+}
+
 PassRefPtr<StringImpl> RenderTextFragment::originalText() const
 {
     Node* e = node();
diff --git a/WebCore/rendering/RenderTextFragment.h b/WebCore/rendering/RenderTextFragment.h
index e023042..abb3fa4 100644
--- a/WebCore/rendering/RenderTextFragment.h
+++ b/WebCore/rendering/RenderTextFragment.h
@@ -35,6 +35,7 @@ class RenderTextFragment : public RenderText {
 public:
     RenderTextFragment(Node*, StringImpl*, int startOffset, int length);
     RenderTextFragment(Node*, StringImpl*);
+    virtual ~RenderTextFragment();
 
     virtual bool isTextFragment() const { return true; }
 
diff --git a/WebCore/rendering/RenderWordBreak.h b/WebCore/rendering/RenderWordBreak.h
index acd8179..db31eec 100644
--- a/WebCore/rendering/RenderWordBreak.h
+++ b/WebCore/rendering/RenderWordBreak.h
@@ -35,7 +35,7 @@ class HTMLElement;
 
 class RenderWordBreak : public RenderText {
 public:
-    RenderWordBreak(HTMLElement*);
+    explicit RenderWordBreak(HTMLElement*);
 
     virtual const char* renderName() const;
     virtual bool isWordBreak() const;
diff --git a/WebCore/rendering/svg/RenderSVGInline.h b/WebCore/rendering/svg/RenderSVGInline.h
index 92b6fe7..d7b7e66 100644
--- a/WebCore/rendering/svg/RenderSVGInline.h
+++ b/WebCore/rendering/svg/RenderSVGInline.h
@@ -33,7 +33,7 @@ namespace WebCore {
 
 class RenderSVGInline : public RenderInline {
 public:
-    RenderSVGInline(Node*);
+    explicit RenderSVGInline(Node*);
 
     virtual const char* renderName() const { return "RenderSVGInline"; }
     virtual bool requiresLayer() const { return false; }
diff --git a/WebCore/rendering/svg/RenderSVGPath.cpp b/WebCore/rendering/svg/RenderSVGPath.cpp
index f8f7f33..ada360a 100644
--- a/WebCore/rendering/svg/RenderSVGPath.cpp
+++ b/WebCore/rendering/svg/RenderSVGPath.cpp
@@ -74,6 +74,10 @@ RenderSVGPath::RenderSVGPath(SVGStyledTransformableElement* node)
 {
 }
 
+RenderSVGPath::~RenderSVGPath()
+{
+}
+
 bool RenderSVGPath::fillContains(const FloatPoint& point, bool requiresFill, WindRule fillRule)
 {
     if (!m_fillBoundingBox.contains(point))
diff --git a/WebCore/rendering/svg/RenderSVGPath.h b/WebCore/rendering/svg/RenderSVGPath.h
index cc06df6..41b0e51 100644
--- a/WebCore/rendering/svg/RenderSVGPath.h
+++ b/WebCore/rendering/svg/RenderSVGPath.h
@@ -38,7 +38,8 @@ class SVGStyledTransformableElement;
 
 class RenderSVGPath : public RenderSVGModelObject {
 public:
-    RenderSVGPath(SVGStyledTransformableElement*);
+    explicit RenderSVGPath(SVGStyledTransformableElement*);
+    virtual ~RenderSVGPath();
 
     const Path& path() const { return m_path; }
     void setNeedsPathUpdate() { m_needsPathUpdate = true; }
diff --git a/WebCore/rendering/svg/RenderSVGTSpan.h b/WebCore/rendering/svg/RenderSVGTSpan.h
index 931bd8c..97e0eb0 100644
--- a/WebCore/rendering/svg/RenderSVGTSpan.h
+++ b/WebCore/rendering/svg/RenderSVGTSpan.h
@@ -29,7 +29,7 @@
 namespace WebCore {
 class RenderSVGTSpan : public RenderSVGInline {
 public:
-    RenderSVGTSpan(Node*);
+    explicit RenderSVGTSpan(Node*);
     virtual const char* renderName() const { return "RenderSVGTSpan"; }
 };
 }
diff --git a/WebCore/svg/SVGStyledElement.cpp b/WebCore/svg/SVGStyledElement.cpp
index f554846..d4fa89c 100644
--- a/WebCore/svg/SVGStyledElement.cpp
+++ b/WebCore/svg/SVGStyledElement.cpp
@@ -60,6 +60,10 @@ SVGStyledElement::SVGStyledElement(const QualifiedName& tagName, Document* docum
 {
 }
 
+SVGStyledElement::~SVGStyledElement()
+{
+}
+
 String SVGStyledElement::title() const
 {
     // According to spec, we should not return titles when hovering over <svg> elements (those 
diff --git a/WebCore/svg/SVGStyledElement.h b/WebCore/svg/SVGStyledElement.h
index 3482a4f..5e996b3 100644
--- a/WebCore/svg/SVGStyledElement.h
+++ b/WebCore/svg/SVGStyledElement.h
@@ -35,6 +35,8 @@ namespace WebCore {
     class SVGStyledElement : public SVGElement,
                              public SVGStylable {
     public:
+        virtual ~SVGStyledElement();
+
         virtual String title() const;
 
         bool hasRelativeLengths() const { return !m_elementsWithRelativeLengths.isEmpty(); }
diff --git a/WebCore/svg/SVGStyledTransformableElement.cpp b/WebCore/svg/SVGStyledTransformableElement.cpp
index b90887a..4419443 100644
--- a/WebCore/svg/SVGStyledTransformableElement.cpp
+++ b/WebCore/svg/SVGStyledTransformableElement.cpp
@@ -38,6 +38,10 @@ SVGStyledTransformableElement::SVGStyledTransformableElement(const QualifiedName
 {
 }
 
+SVGStyledTransformableElement::~SVGStyledTransformableElement()
+{
+}
+
 AffineTransform SVGStyledTransformableElement::getCTM(StyleUpdateStrategy styleUpdateStrategy) const
 {
     return SVGLocatable::computeCTM(this, SVGLocatable::NearestViewportScope, styleUpdateStrategy);
diff --git a/WebCore/svg/SVGStyledTransformableElement.h b/WebCore/svg/SVGStyledTransformableElement.h
index 7668889..290f7f8 100644
--- a/WebCore/svg/SVGStyledTransformableElement.h
+++ b/WebCore/svg/SVGStyledTransformableElement.h
@@ -33,6 +33,8 @@ class AffineTransform;
 class SVGStyledTransformableElement : public SVGStyledLocatableElement,
                                       public SVGTransformable {
 public:
+    virtual ~SVGStyledTransformableElement();
+
     virtual AffineTransform getCTM(StyleUpdateStrategy = AllowStyleUpdate) const;
     virtual AffineTransform getScreenCTM(StyleUpdateStrategy = AllowStyleUpdate) const;
     virtual SVGElement* nearestViewportElement() const;
diff --git a/WebCore/xml/XPathParser.cpp b/WebCore/xml/XPathParser.cpp
index 20e7590..c242a5c 100644
--- a/WebCore/xml/XPathParser.cpp
+++ b/WebCore/xml/XPathParser.cpp
@@ -410,6 +410,10 @@ Parser::Parser()
     reset(String());
 }
 
+Parser::~Parser()
+{
+}
+
 void Parser::reset(const String& data)
 {
     m_nextPos = 0;
diff --git a/WebCore/xml/XPathParser.h b/WebCore/xml/XPathParser.h
index e779603..44a8e48 100644
--- a/WebCore/xml/XPathParser.h
+++ b/WebCore/xml/XPathParser.h
@@ -61,6 +61,7 @@ namespace WebCore {
         class Parser : public Noncopyable {
         public:
             Parser();
+            ~Parser();
 
             XPathNSResolver* resolver() const { return m_resolver.get(); }
             bool expandQName(const String& qName, String& localName, String& namespaceURI);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list