[infinispan-commits] Infinispan SVN: r1455 - trunk/core/src/main/java/org/infinispan/util/concurrent.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Thu Feb 4 17:12:11 EST 2010
Author: vblagojevic at jboss.com
Date: 2010-02-04 17:12:11 -0500 (Thu, 04 Feb 2010)
New Revision: 1455
Modified:
trunk/core/src/main/java/org/infinispan/util/concurrent/BufferedConcurrentHashMap.java
Log:
optimize path for LIRS#onEntryMiss
Modified: trunk/core/src/main/java/org/infinispan/util/concurrent/BufferedConcurrentHashMap.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/util/concurrent/BufferedConcurrentHashMap.java 2010-02-04 18:49:30 UTC (rev 1454)
+++ trunk/core/src/main/java/org/infinispan/util/concurrent/BufferedConcurrentHashMap.java 2010-02-04 22:12:11 UTC (rev 1455)
@@ -981,24 +981,27 @@
if (queue.size() < hirSizeLimit) {
assert !queue.contains(e);
queue.addLast(e);
- } else {
- Set<HashEntry<K, V>> evicted = new HashSet<HashEntry<K, V>>();
+ } else {
boolean inStack = stack.containsKey(e.hashCode());
HashEntry<K, V> first = queue.removeFirst();
assert first.recency() == Recency.HIR_RESIDENT;
first.transitionHIRResidentToHIRNonResident();
- evicted.add(first);
+
stack.put(e.hashCode(), e);
if (inStack) {
e.transitionHIRResidentToLIRResident();
+ Set<HashEntry<K, V>> evicted = new HashSet<HashEntry<K, V>>();
switchBottomostLIRtoHIRAndPrune(evicted);
+ removeFromSegment(evicted);
} else {
assert !queue.contains(e);
queue.addLast(e);
}
- removeFromSegment(evicted);
+
+ //evict from segment
+ remove(first.key, first.hash, null);
}
}
}
More information about the infinispan-commits
mailing list