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 |
} |