Diff
Modified: trunk/ChangeLog (123183 => 123184)
--- trunk/ChangeLog 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/ChangeLog 2012-07-20 06:33:48 UTC (rev 123184)
@@ -1,3 +1,12 @@
+2012-07-19 MORITA Hajime <[email protected]>
+
+ [Refactoring] Replace Node's Document pointer with a TreeScope pointer
+ https://bugs.webkit.org/show_bug.cgi?id=59816
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/autotools/symbols.filter: Added newly exported symbols.
+
2012-07-19 Christophe Dumez <[email protected]>
[EFL] Bump libsoup dependency to v2.39.4.1 to fix cookie issues
Modified: trunk/Source/WebCore/ChangeLog (123183 => 123184)
--- trunk/Source/WebCore/ChangeLog 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/ChangeLog 2012-07-20 06:33:48 UTC (rev 123184)
@@ -1,3 +1,80 @@
+2012-07-19 MORITA Hajime <[email protected]>
+
+ [Refactoring] Replace Node's Document pointer with a TreeScope pointer
+ https://bugs.webkit.org/show_bug.cgi?id=59816
+
+ Reviewed by Ryosuke Niwa.
+
+ Before this change, Node::treeScope() fetches the TreeScope object
+ from ElementRareData. This approach has several shortcomings:
+
+ - rareData() call is slow due to a hashtable lookup.
+ - In shadow tree, each node has its tree scope in ElementRareData,
+ that means the rare-data is no longer rare in that case.
+
+ This change gets rid of ElementRareData::m_treeScope by replacing
+ Node::m_document with Node::m_treeScope. And retrieves the
+ document of Node through m_treeScope.
+
+ Note that Node::document() is a hot function and naive
+ replacemennt of m_document with m_treeScope can hurt the
+ speed. This change employs some tricks to address it.
+
+ - This change introduces Node::InShadowTree flag, if the flag is off,
+ that means m_treeScope is actually a document an can be returned as the result.
+ this eliminates an extract dereference.
+ - Node::m_treeScope can be null. But we don't want to issue any extra
+ conditional statement. So this change represents a null
+ TreeScope as TreeScope::nullInstance(), which saves one conditional
+ statement.
+
+ With these changes, the Node::document() slowdown is minimized to
+ unnoticeable size.
+
+ No new tests. Covered by existing tests.
+
+ * dom/Document.cpp: Took care of connectio betwen TreeScope.
+ (WebCore::Document::Document):
+ (WebCore::Document::~Document):
+ (WebCore::Document::suggestedMIMEType):
+ * dom/Document.h:
+ (WebCore::Node::treeScope): Now just return m_treeScope, taking care of nullInstance() case.
+ (WebCore):
+ (WebCore::Node::setTreeScope): Now just sets m_treeScope.
+ (WebCore::Node::documentInternal): Extracted from document() to have ASSERT-free version.
+ (WebCore::Node::document): Re-implemented over treeScope() and the flag.
+ (WebCore::Node::isDocumentNode): Re-implemented using treeScope()
+ (WebCore::Node::Node):
+ * dom/Node.cpp:
+ (WebCore::Node::~Node):
+ (WebCore::Node::reportMemoryUsage):
+ * dom/Node.h:
+ (Node):
+ (WebCore::Node::inDocument):
+ (WebCore::Node::isInShadowTree): Rewrote to use InShadowTree flag.
+ * dom/NodeRareData.h:
+ (WebCore::NodeRareData::NodeRareData): Eliminated m_treeScope.
+ (NodeRareData):
+ * dom/ShadowRoot.cpp:
+ (WebCore::ShadowRoot::ShadowRoot):
+ * dom/TreeScope.cpp:
+ (WebCore::TreeScope::TreeScope):
+ (WebCore):
+ (WebCore::TreeScope::setParentTreeScope): Added.
+ (WebCore::TreeScope::isDocumentScope): Added.
+ (WebCore::TreeScope::nullInstance): Added.
+ * dom/TreeScope.h: Added m_parentTreeScope.
+ (WebCore):
+ (WebCore::TreeScope::rootDocument): Added.
+ (TreeScope):
+ * dom/TreeScopeAdopter.cpp: No longer calls setDocument()
+ (WebCore::TreeScopeAdopter::moveTreeToNewScope):
+ (WebCore::TreeScopeAdopter::moveNodeToNewDocument):
+ * editing/MoveSelectionCommand.cpp: Includes Document.h to find inlined Node functions
+ * editing/RemoveNodeCommand.cpp: Includes Document.h to find inlined Node functions
+ * editing/RemoveNodePreservingChildrenCommand.cpp: Includes Document.h to find inlined Node functions
+ * inspector/PageConsoleAgent.cpp: Includes Document.h to find inlined Node functions
+
2012-07-19 David Hyatt <[email protected]>
SVG not properly respecting max-width.
Modified: trunk/Source/WebCore/WebCore.exp.in (123183 => 123184)
--- trunk/Source/WebCore/WebCore.exp.in 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/WebCore.exp.in 2012-07-20 06:33:48 UTC (rev 123184)
@@ -1029,6 +1029,7 @@
__ZN7WebCore9TimerBase5startEdd
__ZN7WebCore9TimerBaseC2Ev
__ZN7WebCore9TimerBaseD2Ev
+__ZN7WebCore9TreeScope12nullInstanceEv
__ZN7WebCore9closeFileERi
__ZN7WebCore9endOfWordERKNS_15VisiblePositionENS_9EWordSideE
__ZN7WebCore9fontCacheEv
Modified: trunk/Source/WebCore/dom/Document.cpp (123183 => 123184)
--- trunk/Source/WebCore/dom/Document.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/Document.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -421,7 +421,7 @@
Document::Document(Frame* frame, const KURL& url, bool isXHTML, bool isHTML)
: ContainerNode(0, CreateDocument)
- , TreeScope(this)
+ , TreeScope(this, this)
, m_guardRefCount(0)
, m_contextFeatures(ContextFeatures::defaultSwitch())
, m_compatibilityMode(NoQuirksMode)
@@ -493,7 +493,7 @@
, m_didDispatchViewportPropertiesChanged(false)
#endif
{
- m_document = this;
+ setTreeScope(this);
m_pageGroupUserSheetCacheValid = false;
@@ -676,7 +676,7 @@
for (unsigned i = 0; i < WTF_ARRAY_LENGTH(m_collections); i++)
ASSERT(!m_collections[i]);
- m_document = 0;
+ setTreeScope(0);
InspectorCounters::decrementCounter(InspectorCounters::DocumentCounter);
}
@@ -1350,13 +1350,14 @@
String Document::suggestedMIMEType() const
{
- if (m_document->isXHTMLDocument())
+ Document* doc = document();
+ if (doc->isXHTMLDocument())
return "application/xhtml+xml";
- if (m_document->isSVGDocument())
+ if (doc->isSVGDocument())
return "image/svg+xml";
- if (m_document->xmlStandalone())
+ if (doc->xmlStandalone())
return "text/xml";
- if (m_document->isHTMLDocument())
+ if (doc->isHTMLDocument())
return "text/html";
if (DocumentLoader* documentLoader = loader())
Modified: trunk/Source/WebCore/dom/Document.h (123183 => 123184)
--- trunk/Source/WebCore/dom/Document.h 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/Document.h 2012-07-20 06:33:48 UTC (rev 123184)
@@ -1539,20 +1539,48 @@
// Put these methods here, because they require the Document definition, but we really want to inline them.
+inline TreeScope* Node::treeScope() const
+{
+ return m_treeScope == TreeScope::nullInstance() ? 0 : m_treeScope;
+}
+
+inline void Node::setTreeScope(TreeScope* scope)
+{
+ m_treeScope = scope ? scope : TreeScope::nullInstance();
+ setFlag(!m_treeScope->isDocumentScope(), InShadowTree);
+}
+
+inline Document* Node::documentInternal() const
+{
+ if (getFlag(InShadowTree))
+ return m_treeScope->rootDocument();
+ return static_cast<Document*>(m_treeScope);
+}
+
+inline Document* Node::document() const
+{
+ Document* document = documentInternal();
+ // FIXME: below ASSERT is useful, but prevents the use of document() in the constructor or destructor
+ // due to the virtual function call to nodeType().
+ ASSERT(document || (nodeType() == DOCUMENT_TYPE_NODE && !inDocument()));
+ return document;
+}
+
inline bool Node::isDocumentNode() const
{
- return this == m_document;
+ return this == documentInternal();
}
inline Node::Node(Document* document, ConstructionType type)
: m_nodeFlags(type)
- , m_document(document)
+ , m_treeScope(0)
, m_previous(0)
, m_next(0)
, m_renderer(0)
{
if (document)
document->guardRef();
+ setTreeScope(document);
#if !defined(NDEBUG) || (defined(DUMP_NODE_STATISTICS) && DUMP_NODE_STATISTICS)
trackForDebugging();
#endif
Modified: trunk/Source/WebCore/dom/Node.cpp (123183 => 123184)
--- trunk/Source/WebCore/dom/Node.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/Node.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -406,7 +406,7 @@
if (renderer())
detach();
- Document* doc = m_document;
+ Document* doc = documentInternal();
if (AXObjectCache::accessibilityEnabled() && doc && doc->axObjectCacheExists())
doc->axObjectCache()->removeNodeForUse(this);
@@ -421,41 +421,6 @@
InspectorCounters::decrementCounter(InspectorCounters::NodeCounter);
}
-void Node::setDocument(Document* document)
-{
- ASSERT(!inDocument() || m_document == document);
- if (inDocument() || m_document == document)
- return;
-
- m_document = document;
-}
-
-NodeRareData* Node::setTreeScope(TreeScope* scope)
-{
- if (!scope) {
- if (hasRareData()) {
- NodeRareData* data = ""
- data->setTreeScope(0);
- return data;
- }
-
- return 0;
- }
-
- NodeRareData* data = ""
- data->setTreeScope(scope);
- return data;
-}
-
-TreeScope* Node::treeScope() const
-{
- // FIXME: Using m_document directly is not good -> see comment with document() in the header file.
- if (!hasRareData())
- return m_document;
- TreeScope* scope = rareData()->treeScope();
- return scope ? scope : m_document;
-}
-
NodeRareData* Node::rareData() const
{
ASSERT(hasRareData());
@@ -1441,11 +1406,6 @@
return parent && !parent->isShadowRoot() ? parent : 0;
}
-bool Node::isInShadowTree() const
-{
- return treeScope() != document();
-}
-
Element* Node::parentOrHostElement() const
{
ContainerNode* parent = parentOrHostNode();
@@ -2762,7 +2722,7 @@
MemoryClassInfo<Node> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
info.visitBaseClass<TreeShared<Node, ContainerNode> >(this);
info.visitBaseClass<ScriptWrappable>(this);
- info.addInstrumentedMember(m_document);
+ info.addInstrumentedMember(document());
info.addInstrumentedMember(m_next);
info.addInstrumentedMember(m_previous);
}
Modified: trunk/Source/WebCore/dom/Node.h (123183 => 123184)
--- trunk/Source/WebCore/dom/Node.h 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/Node.h 2012-07-20 06:33:48 UTC (rev 123184)
@@ -233,7 +233,8 @@
// Returns 0, a child of ShadowRoot, or a legacy shadow root.
Node* nonBoundaryShadowTreeRootNode();
- bool isInShadowTree() const;
+ bool isInShadowTree() const { return getFlag(InShadowTree); }
+
// Node's parent, shadow tree host.
ContainerNode* parentOrHostNode() const;
Element* parentOrHostElement() const;
@@ -411,14 +412,7 @@
// Returns the document associated with this node. This method never returns NULL, except in the case
// of a DocumentType node that is not used with any Document yet. A Document node returns itself.
- Document* document() const
- {
- ASSERT(this);
- // FIXME: below ASSERT is useful, but prevents the use of document() in the constructor or destructor
- // due to the virtual function call to nodeType().
- ASSERT(m_document || (nodeType() == DOCUMENT_TYPE_NODE && !inDocument()));
- return m_document;
- }
+ Document* document() const;
TreeScope* treeScope() const;
@@ -426,7 +420,7 @@
// node tree, false otherwise.
bool inDocument() const
{
- ASSERT(m_document || !getFlag(InDocumentFlag));
+ ASSERT(treeScope() || !getFlag(InDocumentFlag));
return getFlag(InDocumentFlag);
}
@@ -696,10 +690,12 @@
#endif
InNamedFlowFlag = 1 << 26,
HasAttrListFlag = 1 << 27,
- HasCustomCallbacksFlag = 1 << 28
+ HasCustomCallbacksFlag = 1 << 28,
+ InShadowTree = 1 << 29
+
};
- // 4 bits remaining
+ // 3 bits remaining
bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; }
void setFlag(bool f, NodeFlags mask) const { m_nodeFlags = (m_nodeFlags & ~mask) | (-(int32_t)f & mask); }
@@ -735,16 +731,14 @@
void setHasCustomCallbacks() { setFlag(true, HasCustomCallbacksFlag); }
+ void setTreeScope(TreeScope*);
+ Document* documentInternal() const;
+
private:
friend class TreeShared<Node, ContainerNode>;
void removedLastRef();
- // These API should be only used for a tree scope migration.
- // setTreeScope() returns NodeRareData to save extra nodeRareData() invocations on the caller site.
- NodeRareData* setTreeScope(TreeScope*);
- void setDocument(Document*);
-
enum EditableLevel { Editable, RichlyEditable };
bool rendererIsEditable(EditableLevel) const;
bool isEditableToAccessibility(EditableLevel) const;
@@ -787,7 +781,7 @@
#endif
mutable uint32_t m_nodeFlags;
- Document* m_document;
+ TreeScope* m_treeScope;
Node* m_previous;
Node* m_next;
RenderObject* m_renderer;
Modified: trunk/Source/WebCore/dom/NodeRareData.h (123183 => 123184)
--- trunk/Source/WebCore/dom/NodeRareData.h 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/NodeRareData.h 2012-07-20 06:33:48 UTC (rev 123184)
@@ -184,8 +184,7 @@
WTF_MAKE_NONCOPYABLE(NodeRareData); WTF_MAKE_FAST_ALLOCATED;
public:
NodeRareData()
- : m_treeScope(0)
- , m_childNodeList(0)
+ : m_childNodeList(0)
, m_tabIndex(0)
, m_tabIndexWasSetExplicitly(false)
, m_isFocused(false)
@@ -213,9 +212,6 @@
return rareDataMap().get(node);
}
- TreeScope* treeScope() const { return m_treeScope; }
- void setTreeScope(TreeScope* treeScope) { m_treeScope = treeScope; }
-
void clearNodeLists() { m_nodeLists.clear(); }
void setNodeLists(PassOwnPtr<NodeListsNodeData> lists) { m_nodeLists = lists; }
NodeListsNodeData* nodeLists() const { return m_nodeLists.get(); }
@@ -349,7 +345,6 @@
private:
- TreeScope* m_treeScope;
OwnPtr<NodeListsNodeData> m_nodeLists;
ChildNodeList* m_childNodeList;
OwnPtr<EventTargetData> m_eventTargetData;
Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (123183 => 123184)
--- trunk/Source/WebCore/dom/ShadowRoot.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -46,7 +46,7 @@
ShadowRoot::ShadowRoot(Document* document)
: DocumentFragment(document, CreateShadowRoot)
- , TreeScope(this)
+ , TreeScope(this, document)
, m_prev(0)
, m_next(0)
, m_applyAuthorStyles(false)
@@ -55,11 +55,9 @@
{
ASSERT(document);
- // Assume document as parent scope.
- setParentTreeScope(document);
// Shadow tree scopes have the scope pointer point to themselves.
// This way, direct children will receive the correct scope pointer.
- ensureRareData()->setTreeScope(this);
+ setTreeScope(this);
}
ShadowRoot::~ShadowRoot()
Modified: trunk/Source/WebCore/dom/TreeScope.cpp (123183 => 123184)
--- trunk/Source/WebCore/dom/TreeScope.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/TreeScope.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -52,14 +52,22 @@
using namespace HTMLNames;
-TreeScope::TreeScope(ContainerNode* rootNode)
+TreeScope::TreeScope(ContainerNode* rootNode, Document* rootDocument)
: m_rootNode(rootNode)
- , m_parentTreeScope(0)
+ , m_rootDocument(rootDocument)
+ , m_parentTreeScope(rootNode == rootDocument ? 0 : rootDocument)
, m_idTargetObserverRegistry(IdTargetObserverRegistry::create())
{
ASSERT(rootNode);
}
+TreeScope::TreeScope()
+ : m_rootNode(0)
+ , m_rootDocument(0)
+ , m_parentTreeScope(0)
+{
+}
+
TreeScope::~TreeScope()
{
if (m_selection) {
@@ -82,6 +90,7 @@
ASSERT(newParentScope);
m_parentTreeScope = newParentScope;
+ m_rootDocument = newParentScope->rootDocument();
}
Element* TreeScope::getElementById(const AtomicString& elementId) const
@@ -248,6 +257,11 @@
return 0;
}
+bool TreeScope::isDocumentScope() const
+{
+ return this == m_rootDocument;
+}
+
static void listTreeScopes(Node* node, Vector<TreeScope*, 5>& treeScopes)
{
while (true) {
@@ -281,5 +295,11 @@
return treeScopesA[indexA] == treeScopesB[indexB] ? treeScopesA[indexA] : 0;
}
+TreeScope* TreeScope::nullInstance()
+{
+ DEFINE_STATIC_LOCAL(TreeScope, instance, ());
+ return &instance;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/dom/TreeScope.h (123183 => 123184)
--- trunk/Source/WebCore/dom/TreeScope.h 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/TreeScope.h 2012-07-20 06:33:48 UTC (rev 123184)
@@ -34,6 +34,7 @@
class ContainerNode;
class DOMSelection;
+class Document;
class Element;
class HTMLMapElement;
class IdTargetObserverRegistry;
@@ -78,17 +79,23 @@
void adoptIfNeeded(Node*);
ContainerNode* rootNode() const { return m_rootNode; }
-
+ Document* rootDocument() const { return m_rootDocument; }
+ bool isDocumentScope() const;
IdTargetObserverRegistry& idTargetObserverRegistry() const { return *m_idTargetObserverRegistry.get(); }
+ static TreeScope* nullInstance();
+
protected:
- TreeScope(ContainerNode*);
+ TreeScope(ContainerNode*, Document*);
virtual ~TreeScope();
void destroyTreeScopeData();
private:
+ TreeScope();
+
ContainerNode* m_rootNode;
+ Document* m_rootDocument;
TreeScope* m_parentTreeScope;
DocumentOrderedMap m_elementsById;
Modified: trunk/Source/WebCore/dom/TreeScopeAdopter.cpp (123183 => 123184)
--- trunk/Source/WebCore/dom/TreeScopeAdopter.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/dom/TreeScopeAdopter.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -49,7 +49,9 @@
oldDocument->incDOMTreeVersion();
for (Node* node = root; node; node = node->traverseNextNode(root)) {
- if (NodeRareData* rareData = node->setTreeScope(newDocument == m_newScope ? 0 : m_newScope)) {
+ node->setTreeScope(m_newScope);
+ if (node->hasRareData()) {
+ NodeRareData* rareData = node->rareData();
if (rareData->nodeLists())
rareData->nodeLists()->adoptTreeScope(oldDocument, newDocument);
if (node->isElementNode())
@@ -96,8 +98,6 @@
if (oldDocument)
oldDocument->moveNodeIteratorsToNewDocument(node, newDocument);
- node->setDocument(newDocument);
-
#ifndef NDEBUG
didMoveToNewDocumentWasCalled = false;
oldDocumentDidMoveToNewDocumentWasCalledWith = oldDocument;
Modified: trunk/Source/WebCore/editing/MoveSelectionCommand.cpp (123183 => 123184)
--- trunk/Source/WebCore/editing/MoveSelectionCommand.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/editing/MoveSelectionCommand.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -26,6 +26,7 @@
#include "config.h"
#include "MoveSelectionCommand.h"
+#include "Document.h"
#include "DocumentFragment.h"
#include "ReplaceSelectionCommand.h"
Modified: trunk/Source/WebCore/editing/RemoveNodeCommand.cpp (123183 => 123184)
--- trunk/Source/WebCore/editing/RemoveNodeCommand.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/editing/RemoveNodeCommand.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -26,6 +26,7 @@
#include "config.h"
#include "RemoveNodeCommand.h"
+#include "Document.h"
#include "Node.h"
#include <wtf/Assertions.h>
Modified: trunk/Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp (123183 => 123184)
--- trunk/Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -26,6 +26,7 @@
#include "config.h"
#include "RemoveNodePreservingChildrenCommand.h"
+#include "Document.h"
#include "Node.h"
#include <wtf/Assertions.h>
Modified: trunk/Source/WebCore/inspector/PageConsoleAgent.cpp (123183 => 123184)
--- trunk/Source/WebCore/inspector/PageConsoleAgent.cpp 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebCore/inspector/PageConsoleAgent.cpp 2012-07-20 06:33:48 UTC (rev 123184)
@@ -35,6 +35,7 @@
#include "PageConsoleAgent.h"
#include "DOMWindow.h"
+#include "Document.h"
#include "InjectedScriptHost.h"
#include "InjectedScriptManager.h"
#include "InspectorAgent.h"
Modified: trunk/Source/WebKit2/ChangeLog (123183 => 123184)
--- trunk/Source/WebKit2/ChangeLog 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebKit2/ChangeLog 2012-07-20 06:33:48 UTC (rev 123184)
@@ -1,3 +1,13 @@
+2012-07-19 MORITA Hajime <[email protected]>
+
+ [Refactoring] Replace Node's Document pointer with a TreeScope pointer
+ https://bugs.webkit.org/show_bug.cgi?id=59816
+
+ Reviewed by Ryosuke Niwa.
+
+ * win/WebKit2.def: Added newly exported symbols.
+ * win/WebKit2CFLite.def: Ditto.
+
2012-07-19 Sudarsana Nagineni <[email protected]>
[EFL] [WK2] Add methods to get/set a custom text encoding
Modified: trunk/Source/WebKit2/win/WebKit2.def (123183 => 123184)
--- trunk/Source/WebKit2/win/WebKit2.def 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebKit2/win/WebKit2.def 2012-07-20 06:33:48 UTC (rev 123184)
@@ -253,6 +253,7 @@
??1ContextDestructionObserver@WebCore@@MAE@XZ
?contextDestroyed@ContextDestructionObserver@WebCore@@UAEXXZ
??0ContextDestructionObserver@WebCore@@QAE@PAVScriptExecutionContext@1@@Z
+ ?nullInstance@TreeScope@WebCore@@SAPAV12@XZ
?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N0@Z
?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
?webkitWillEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
Modified: trunk/Source/WebKit2/win/WebKit2CFLite.def (123183 => 123184)
--- trunk/Source/WebKit2/win/WebKit2CFLite.def 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/WebKit2/win/WebKit2CFLite.def 2012-07-20 06:33:48 UTC (rev 123184)
@@ -246,6 +246,7 @@
?userPreferredLanguages@WebCore@@YA?AV?$Vector@VString@WTF@@$0A@@WTF@@XZ
?utf8@String@WTF@@QBE?AVCString@2@_N@Z
?view@Document@WebCore@@QBEPAVFrameView@2@XZ
+ ?nullInstance@TreeScope@WebCore@@SAPAV12@XZ
?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N0@Z
?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
?restrictScaleFactorToInitialScaleIfNotUserScalable@WebCore@@YAXAAUViewportAttributes@1@@Z
Modified: trunk/Source/autotools/symbols.filter (123183 => 123184)
--- trunk/Source/autotools/symbols.filter 2012-07-20 06:12:54 UTC (rev 123183)
+++ trunk/Source/autotools/symbols.filter 2012-07-20 06:33:48 UTC (rev 123184)
@@ -167,6 +167,7 @@
_ZN7WebCore26ContextDestructionObserverD2Ev;
_ZN7WebCore26ContextDestructionObserverC2EPNS_22ScriptExecutionContextE;
_ZN7WebCore26ContextDestructionObserver16contextDestroyedEv;
+_ZN7WebCore9TreeScope12nullInstanceEv;
local:
_Z*;
cti*;