| Index: Source/core/dom/DOMNodeIds.cpp
|
| diff --git a/Source/core/dom/DOMNodeIds.cpp b/Source/core/dom/DOMNodeIds.cpp
|
| index 404a8672f5b3c091c5841706f6705fefa25764b7..532f4e9a701928289f5e5e512a04e6df0099350d 100644
|
| --- a/Source/core/dom/DOMNodeIds.cpp
|
| +++ b/Source/core/dom/DOMNodeIds.cpp
|
| @@ -4,72 +4,37 @@
|
|
|
| #include "config.h"
|
| #include "core/dom/DOMNodeIds.h"
|
| -
|
| -#if ENABLE(OILPAN)
|
| #include "core/dom/Node.h"
|
| -#else
|
| -#include "core/dom/WeakNodeMap.h"
|
| -#endif
|
| #include "platform/heap/Handle.h"
|
|
|
| namespace blink {
|
|
|
| -#if ENABLE(OILPAN)
|
| -typedef HeapHashMap<WeakMember<Node>, int> NodeToIdMap;
|
| -typedef HeapHashMap<int, WeakMember<Node>> IdToNodeMap;
|
| -
|
| -static NodeToIdMap& nodeToIdMap()
|
| -{
|
| - DEFINE_STATIC_LOCAL(Persistent<NodeToIdMap>, nodeToIdMap, (new NodeToIdMap()));
|
| - return *nodeToIdMap;
|
| -}
|
| -
|
| -static IdToNodeMap& idToNodeMap()
|
| +#if !ENABLE(OILPAN)
|
| +void WeakIdentifierMapTraits<Node>::removedFromIdentifierMap(Node* node)
|
| {
|
| - DEFINE_STATIC_LOCAL(Persistent<IdToNodeMap>, idToNodeMap, (new IdToNodeMap()));
|
| - return *idToNodeMap;
|
| + node->clearFlag(Node::HasWeakReferencesFlag);
|
| }
|
|
|
| -int DOMNodeIds::idForNode(Node* node)
|
| +void WeakIdentifierMapTraits<Node>::addedToIdentifierMap(Node* node)
|
| {
|
| - static int s_nextNodeId = 1;
|
| - NodeToIdMap::iterator it = nodeToIdMap().find(node);
|
| - if (it != nodeToIdMap().end())
|
| - return it->value;
|
| - int id = s_nextNodeId++;
|
| - nodeToIdMap().set(node, id);
|
| - ASSERT(idToNodeMap().find(id) == idToNodeMap().end());
|
| - idToNodeMap().set(id, node);
|
| - return id;
|
| + node->setFlag(Node::HasWeakReferencesFlag);
|
| }
|
| +#endif
|
|
|
| -Node* DOMNodeIds::nodeForId(int id)
|
| -{
|
| - return idToNodeMap().get(id);
|
| -}
|
| -#else
|
| static WeakNodeMap& nodeIds()
|
| {
|
| - DEFINE_STATIC_LOCAL(WeakNodeMap, self, ());
|
| - return self;
|
| + DEFINE_STATIC_LOCAL(RawPtrWillBePersistent<WeakNodeMap>, self, (new WeakNodeMap()));
|
| + return *self;
|
| }
|
|
|
| int DOMNodeIds::idForNode(Node* node)
|
| {
|
| - static int s_nextNodeId = 1;
|
| - WeakNodeMap& ids = nodeIds();
|
| - int result = ids.identifier(node);
|
| - if (!result) {
|
| - result = s_nextNodeId++;
|
| - ids.put(node, result);
|
| - }
|
| - return result;
|
| + return nodeIds().identifier(node);
|
| }
|
|
|
| Node* DOMNodeIds::nodeForId(int id)
|
| {
|
| return nodeIds().lookup(id);
|
| }
|
| -#endif
|
|
|
| }
|
|
|