diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index adaa799..ffa3ebf 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,5 +1,26 @@
 2013-05-12  Andreas Kling  <akling@apple.com>
 
+        Devirtualize some things on Document.
+
+        From Blink r149967 by <esprehn@chromium.org>
+        <http://src.chromium.org/viewvc/blink?view=revision&revision=149967>
+
+        Several methods on Document are virtual but don't override a super class method
+        and don't need to be virtual. This patch devirtualizes:
+
+            - createElementNS()
+            - finishedParsing()
+            - suspendScriptedAnimationControllerCallbacks()
+            - resumeScriptedAnimationControllerCallbacks()
+
+        It also removes the suspend and resume callbacks from ScriptExecutionContext
+        since they didn't need to be there.
+
+        * dom/Document.h:
+        * dom/ScriptExecutionContext.h:
+
+2013-05-12  Andreas Kling  <akling@apple.com>
+
         Remove redundant call to removeAllEventListeners() in Document::open().
 
         From Blink r150175 by <dcheng@chromium.org>
diff --git a/Source/WebCore/dom/Document.h b/Source/WebCore/dom/Document.h
index f4d9577..2005616 100644
--- a/Source/WebCore/dom/Document.h
+++ b/Source/WebCore/dom/Document.h
@@ -358,7 +358,7 @@
     PassRefPtr<EntityReference> createEntityReference(const String& name, ExceptionCode&);
     PassRefPtr<Node> importNode(Node* importedNode, ExceptionCode& ec) { return importNode(importedNode, true, ec); }
     PassRefPtr<Node> importNode(Node* importedNode, bool deep, ExceptionCode&);
-    virtual PassRefPtr<Element> createElementNS(const String& namespaceURI, const String& qualifiedName, ExceptionCode&);
+    PassRefPtr<Element> createElementNS(const String& namespaceURI, const String& qualifiedName, ExceptionCode&);
     PassRefPtr<Element> createElement(const QualifiedName&, bool createdByParser);
 
     bool cssStickyPositionEnabled() const;
@@ -945,12 +945,12 @@
 
     virtual void postTask(PassOwnPtr<Task>); // Executes the task on context's thread asynchronously.
 
-    virtual void suspendScriptedAnimationControllerCallbacks();
-    virtual void resumeScriptedAnimationControllerCallbacks();
+    void suspendScriptedAnimationControllerCallbacks();
+    void resumeScriptedAnimationControllerCallbacks();
     
     void windowScreenDidChange(PlatformDisplayID);
 
-    virtual void finishedParsing();
+    void finishedParsing();
 
     bool inPageCache() const { return m_inPageCache; }
     void setInPageCache(bool flag);
diff --git a/Source/WebCore/dom/ScriptExecutionContext.h b/Source/WebCore/dom/ScriptExecutionContext.h
index e875978..80ad8c2 100644
--- a/Source/WebCore/dom/ScriptExecutionContext.h
+++ b/Source/WebCore/dom/ScriptExecutionContext.h
@@ -111,9 +111,6 @@
     void didCreateDestructionObserver(ContextDestructionObserver*);
     void willDestroyDestructionObserver(ContextDestructionObserver*);
 
-    virtual void suspendScriptedAnimationControllerCallbacks() { }
-    virtual void resumeScriptedAnimationControllerCallbacks() { }
-
     // MessagePort is conceptually a kind of ActiveDOMObject, but it needs to be tracked separately for message dispatch.
     void processMessagePortMessagesSoon();
     void dispatchMessagePortEvents();
