static final class EquivalentConcurrentHashMapV8.TreeBin<K,V> extends EquivalentConcurrentHashMapV8.Node<K,V>
Modifier and Type | Field and Description |
---|---|
(package private) EquivalentConcurrentHashMapV8.TreeNode<K,V> |
first |
(package private) int |
lockState |
private static long |
LOCKSTATE |
(package private) static int |
READER |
(package private) EquivalentConcurrentHashMapV8.TreeNode<K,V> |
root |
private static sun.misc.Unsafe |
U |
(package private) java.lang.Thread |
waiter |
(package private) static int |
WAITER |
(package private) static int |
WRITER |
Constructor and Description |
---|
EquivalentConcurrentHashMapV8.TreeBin(EquivalentConcurrentHashMapV8.TreeNode<K,V> b,
EquivalentConcurrentHashMapV8.NodeEquivalence<K,V> nodeEq)
Creates bin with initial set of nodes headed by b.
|
Modifier and Type | Method and Description |
---|---|
(package private) static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> |
balanceDeletion(EquivalentConcurrentHashMapV8.TreeNode<K,V> root,
EquivalentConcurrentHashMapV8.TreeNode<K,V> x) |
(package private) static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> |
balanceInsertion(EquivalentConcurrentHashMapV8.TreeNode<K,V> root,
EquivalentConcurrentHashMapV8.TreeNode<K,V> x) |
(package private) static <K,V> boolean |
checkInvariants(EquivalentConcurrentHashMapV8.TreeNode<K,V> t)
Recursive invariant check
|
private void |
contendedLock()
Possibly blocks awaiting root lock.
|
(package private) EquivalentConcurrentHashMapV8.Node<K,V> |
find(int h,
java.lang.Object k)
Returns matching node or null if none.
|
private void |
lockRoot()
Acquires write lock for tree restructuring.
|
(package private) EquivalentConcurrentHashMapV8.TreeNode<K,V> |
putTreeVal(int h,
K k,
V v)
Finds or adds a node.
|
(package private) boolean |
removeTreeNode(EquivalentConcurrentHashMapV8.TreeNode<K,V> p)
Removes the given node, that must be present before this
call.
|
(package private) static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> |
rotateLeft(EquivalentConcurrentHashMapV8.TreeNode<K,V> root,
EquivalentConcurrentHashMapV8.TreeNode<K,V> p) |
(package private) static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> |
rotateRight(EquivalentConcurrentHashMapV8.TreeNode<K,V> root,
EquivalentConcurrentHashMapV8.TreeNode<K,V> p) |
(package private) static int |
tieBreakOrder(java.lang.Object a,
java.lang.Object b)
Tie-breaking utility for ordering insertions when equal
hashCodes and non-comparable.
|
private void |
unlockRoot()
Releases write lock for tree restructuring.
|
EquivalentConcurrentHashMapV8.TreeNode<K,V> root
volatile EquivalentConcurrentHashMapV8.TreeNode<K,V> first
volatile java.lang.Thread waiter
volatile int lockState
static final int WRITER
static final int WAITER
static final int READER
private static final sun.misc.Unsafe U
private static final long LOCKSTATE
EquivalentConcurrentHashMapV8.TreeBin(EquivalentConcurrentHashMapV8.TreeNode<K,V> b, EquivalentConcurrentHashMapV8.NodeEquivalence<K,V> nodeEq)
static int tieBreakOrder(java.lang.Object a, java.lang.Object b)
private final void lockRoot()
private final void unlockRoot()
private final void contendedLock()
final EquivalentConcurrentHashMapV8.Node<K,V> find(int h, java.lang.Object k)
find
in class EquivalentConcurrentHashMapV8.Node<K,V>
final EquivalentConcurrentHashMapV8.TreeNode<K,V> putTreeVal(int h, K k, V v)
final boolean removeTreeNode(EquivalentConcurrentHashMapV8.TreeNode<K,V> p)
static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> rotateLeft(EquivalentConcurrentHashMapV8.TreeNode<K,V> root, EquivalentConcurrentHashMapV8.TreeNode<K,V> p)
static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> rotateRight(EquivalentConcurrentHashMapV8.TreeNode<K,V> root, EquivalentConcurrentHashMapV8.TreeNode<K,V> p)
static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> balanceInsertion(EquivalentConcurrentHashMapV8.TreeNode<K,V> root, EquivalentConcurrentHashMapV8.TreeNode<K,V> x)
static <K,V> EquivalentConcurrentHashMapV8.TreeNode<K,V> balanceDeletion(EquivalentConcurrentHashMapV8.TreeNode<K,V> root, EquivalentConcurrentHashMapV8.TreeNode<K,V> x)
static <K,V> boolean checkInvariants(EquivalentConcurrentHashMapV8.TreeNode<K,V> t)