[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