diff options
author | Kulanthaivel Palanichamy <kulanthaivel@codeaurora.org> | 2012-09-06 17:34:17 -0700 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2013-01-21 01:19:49 -0800 |
commit | 4bb8cc2e30240dd477bdb3fa20c16c9208ad7292 (patch) | |
tree | 09933305d36c04e26964a73eb2b3f1e5b58394a4 /Source | |
parent | 91437969ddb28bc81b3652986a67aae7e2465db2 (diff) | |
download | external_webkit-4bb8cc2e30240dd477bdb3fa20c16c9208ad7292.zip external_webkit-4bb8cc2e30240dd477bdb3fa20c16c9208ad7292.tar.gz external_webkit-4bb8cc2e30240dd477bdb3fa20c16c9208ad7292.tar.bz2 |
[WebKit] Make PLD DOM traversal optimization configurable
Add board specific configuration to enable/disable PLD DOM
traversal optimization
Change-Id: I6fccbcff2a51c53ec954af34f0f6d4536f2c4dfb
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebCore/dom/Document.h | 2 | ||||
-rw-r--r-- | Source/WebCore/dom/Node.h | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/Source/WebCore/dom/Document.h b/Source/WebCore/dom/Document.h index f94ce7a..a51861b 100644 --- a/Source/WebCore/dom/Document.h +++ b/Source/WebCore/dom/Document.h @@ -1434,7 +1434,9 @@ inline Node::Node(Document* document, ConstructionType type) : m_document(document) , m_previous(0) , m_next(0) +#ifdef __ARM_USE_PLD , m_prefetch(0) +#endif , m_renderer(0) , m_nodeFlags(type) , m_previousNode(0) diff --git a/Source/WebCore/dom/Node.h b/Source/WebCore/dom/Node.h index 886dd88..ad5ee9d 100644 --- a/Source/WebCore/dom/Node.h +++ b/Source/WebCore/dom/Node.h @@ -244,6 +244,7 @@ public: // These low-level calls give the caller responsibility for maintaining the integrity of the tree. void setPreviousSibling(Node* previous) { m_previous = previous; } +#ifdef __ARM_USE_PLD ALWAYS_INLINE void updatePrefetchTarget() { if (m_next) { int skew; @@ -258,6 +259,9 @@ public: } void setPrefetchTarget(Node *prefetch) { m_prefetch = prefetch; } void setNextSibling(Node* next) { m_next = next; updatePrefetchTarget(); } +#else + void setNextSibling(Node* next) { m_next = next; } +#endif void updatePreviousNode() { m_previousNode = traversePreviousNode(); if (m_previousNode) m_previousNode->setNextNode(this); } void updateNextNode() { m_nextNode = traverseNextNode(); if (m_nextNode) m_nextNode->setPreviousNode(this); } void updatePrevNextNodesInSubtree(); @@ -421,10 +425,12 @@ public: Node* traverseNextNodeFastPath() const { prefetchTarget(); return m_nextNode; } ALWAYS_INLINE void prefetchTarget() const { +#ifdef __ARM_USE_PLD if (m_prefetch) { __builtin_prefetch(((char *) m_prefetch)); __builtin_prefetch(((char *) m_prefetch) + 64); } +#endif } Node* lastDescendantNode(bool includeThis = false) const; @@ -736,7 +742,9 @@ private: Document* m_document; Node* m_previous; Node* m_next; +#ifdef __ARM_USE_PLD Node* m_prefetch; +#endif RenderObject* m_renderer; mutable uint32_t m_nodeFlags; Node* m_previousNode; |