projects
/
folly.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
non-throwing, non-allocating exception_wrapper
[folly.git]
/
folly
/
ConcurrentSkipList.h
diff --git
a/folly/ConcurrentSkipList.h
b/folly/ConcurrentSkipList.h
index 3ebdeb940bb3bc1492a3a6ff1788ccdbf2a50c32..7d5cb9589c478fa2bcdf916a623d9149bf0fab10 100644
(file)
--- a/
folly/ConcurrentSkipList.h
+++ b/
folly/ConcurrentSkipList.h
@@
-1,5
+1,5
@@
/*
/*
- * Copyright 201
6
Facebook, Inc.
+ * Copyright 201
7
Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-117,8
+117,7
@@
Sample usage:
}
*/
}
*/
-#ifndef FOLLY_CONCURRENT_SKIP_LIST_H_
-#define FOLLY_CONCURRENT_SKIP_LIST_H_
+#pragma once
#include <algorithm>
#include <atomic>
#include <algorithm>
#include <atomic>
@@
-196,7
+195,7
@@
class ConcurrentSkipList {
//===================================================================
~ConcurrentSkipList() {
//===================================================================
~ConcurrentSkipList() {
- /* static */ if (NodeType::template
destroyIsNoOp<NodeAlloc>()
) {
+ /* static */ if (NodeType::template
DestroyIsNoOp<NodeAlloc>::value
) {
// Avoid traversing the list if using arena allocator.
return;
}
// Avoid traversing the list if using arena allocator.
return;
}
@@
-329,9
+328,9
@@
class ConcurrentSkipList {
// locks acquired and all valid, need to modify the links under the locks.
newNode =
NodeType::create(recycler_.alloc(), nodeHeight, std::forward<U>(data));
// locks acquired and all valid, need to modify the links under the locks.
newNode =
NodeType::create(recycler_.alloc(), nodeHeight, std::forward<U>(data));
- for (int
layer = 0; layer < nodeHeight; ++layer
) {
- newNode->setSkip(
layer, succs[layer
]);
- preds[
layer]->setSkip(layer
, newNode);
+ for (int
k = 0; k < nodeHeight; ++k
) {
+ newNode->setSkip(
k, succs[k
]);
+ preds[
k]->setSkip(k
, newNode);
}
newNode->setFullyLinked();
}
newNode->setFullyLinked();
@@
-379,8
+378,8
@@
class ConcurrentSkipList {
continue; // this will unlock all the locks
}
continue; // this will unlock all the locks
}
- for (int
layer = nodeHeight - 1; layer >= 0; --layer
) {
- preds[
layer]->setSkip(layer, nodeToDelete->skip(layer
));
+ for (int
k = nodeHeight - 1; k >= 0; --k
) {
+ preds[
k]->setSkip(k, nodeToDelete->skip(k
));
}
incrementSize(-1);
}
incrementSize(-1);
@@
-680,7
+679,7
@@
class detail::csl_iterator :
friend class boost::iterator_core_access;
template<class,class> friend class csl_iterator;
friend class boost::iterator_core_access;
template<class,class> friend class csl_iterator;
- void increment() { node_ = node_->next(); }
;
+ void increment() { node_ = node_->next(); }
bool equal(const csl_iterator& other) const { return node_ == other.node_; }
value_type& dereference() const { return node_->data(); }
bool equal(const csl_iterator& other) const { return node_ == other.node_; }
value_type& dereference() const { return node_->data(); }
@@
-719,7
+718,7
@@
class ConcurrentSkipList<T, Comp, NodeAlloc, MAX_HEIGHT>::Skipper {
}
int max_layer = maxLayer();
for (int i = 0; i < max_layer; ++i) {
}
int max_layer = maxLayer();
for (int i = 0; i < max_layer; ++i) {
- hints_[i] =
i + 1
;
+ hints_[i] =
uint8_t(i + 1)
;
}
hints_[max_layer] = max_layer;
}
}
hints_[max_layer] = max_layer;
}
@@
-800,5
+799,3
@@
class ConcurrentSkipList<T, Comp, NodeAlloc, MAX_HEIGHT>::Skipper {
};
} // namespace folly
};
} // namespace folly
-
-#endif // FOLLY_CONCURRENT_SKIP_LIST_H_