Some small optimizations
authorkhizmax <libcds.dev@gmail.com>
Thu, 8 Oct 2015 18:40:32 +0000 (21:40 +0300)
committerkhizmax <libcds.dev@gmail.com>
Thu, 8 Oct 2015 18:40:32 +0000 (21:40 +0300)
cds/intrusive/impl/multilevel_hashset.h
cds/intrusive/multilevel_hashset_rcu.h

index 5c3c5455f2a0011b63868a3a474ff99d459db4ad..edb7941fc2c7e8a6a9d186b28637caaa1e325564 100644 (file)
@@ -1080,8 +1080,7 @@ namespace cds { namespace intrusive {
         static array_node * alloc_array_node( size_t nSize, array_node * pParent, size_t idxParent )
         {
             array_node * pNode = cxx_array_node_allocator().NewBlock( sizeof(array_node) + sizeof(atomic_node_ptr) * (nSize - 1), pParent, idxParent );
-            for ( atomic_node_ptr * p = pNode->nodes, *pEnd = pNode->nodes + nSize; p < pEnd; ++p )
-                p->store( node_ptr(), memory_model::memory_order_release );
+            new ( pNode->nodes ) atomic_node_ptr[ nSize ];
             return pNode;
         }
 
index 1c0886127aa0afcc1e59afe8e291a56e0aeaa22e..accb6aa6f13c447911fc32a474397fc28173a50f 100644 (file)
@@ -1285,8 +1285,7 @@ namespace cds { namespace intrusive {
         static array_node * alloc_array_node(size_t nSize, array_node * pParent, size_t idxParent)
         {
             array_node * pNode = cxx_array_node_allocator().NewBlock(sizeof(array_node) + sizeof(atomic_node_ptr) * (nSize - 1), pParent, idxParent);
-            for (atomic_node_ptr * p = pNode->nodes, *pEnd = pNode->nodes + nSize; p < pEnd; ++p)
-                p->store(node_ptr(), memory_model::memory_order_release);
+            new (pNode->nodes) atomic_node_ptr[nSize];
             return pNode;
         }