Actually, this is my entire outstanding patch set series. 1 and 2 should be trivial to apply. 3-6 should be fairly straightforward. 7 maybe we delay until later, but I don't think any applications use that map type. 8 is pretty trivial, and is needed to prevent 9 from deadlocking. 9-11 is the rewrite of WindowCache, with new unit tests to get higher levels of coverage in this section of the code. Actually doing better is really hard, as we'd need to cause thread race conditions deep within critical sections. The only way I can think to do that is to add injection points where we can insert "evil other thread" logic during the unit test, and rely on the JIT to compile them out in normal application usage. Ick. Its also quite fragile. Shawn O. Pearce (11): Fix more computation of integer average overflows Fix performance problem recently introduced to DeltaPackedObjectLoader Replace inefficient new String(String) constructor to silence FindBugs Replace inefficient new Long(long) constructor to silence FindBugs Change IndexPack to use ObjectIdSubclassMap instead of ObjectIdMap Use getCachedBytes in IndexPack to avoid an unnecessary copy Remove ObjectIdMap from the JGit library Don't use ByteWindows when checking pack file headers/footers Rewrite WindowCache to be easier to follow and maintain Add tests for WindowCache.reconfigure cases Add tests to increase coverage of WindowCache .../jgit/test/resources/all_packed_objects.txt | 96 ++++ .../org/spearce/jgit/lib/ConcurrentRepackTest.java | 4 - .../tst/org/spearce/jgit/lib/ObjectIdMapTest.java | 103 ---- .../org/spearce/jgit/lib/WindowCacheGetTest.java | 143 ++++++ .../jgit/lib/WindowCacheReconfigureTest.java | 119 +++++ .../src/org/spearce/jgit/lib/ByteArrayWindow.java | 57 +-- .../src/org/spearce/jgit/lib/ByteBufferWindow.java | 41 +- .../src/org/spearce/jgit/lib/ByteWindow.java | 91 +--- .../spearce/jgit/lib/DeltaPackedObjectLoader.java | 1 + .../src/org/spearce/jgit/lib/ObjectIdMap.java | 201 -------- .../org/spearce/jgit/lib/ObjectIdSubclassMap.java | 31 ++- .../src/org/spearce/jgit/lib/OffsetCache.java | 534 ++++++++++++++++++++ .../src/org/spearce/jgit/lib/PackFile.java | 128 +++-- .../src/org/spearce/jgit/lib/PackIndexV1.java | 2 +- .../src/org/spearce/jgit/lib/PackIndexV2.java | 6 +- .../org/spearce/jgit/lib/PackedObjectLoader.java | 11 +- .../src/org/spearce/jgit/lib/RefDatabase.java | 3 +- .../src/org/spearce/jgit/lib/WindowCache.java | 424 +++++----------- .../src/org/spearce/jgit/lib/WindowCursor.java | 42 +- .../src/org/spearce/jgit/transport/IndexPack.java | 129 +++-- .../src/org/spearce/jgit/transport/LongMap.java | 152 ++++++ org.spearce.jgit/src/org/spearce/jgit/util/NB.java | 32 ++ 22 files changed, 1465 insertions(+), 885 deletions(-) create mode 100644 org.spearce.jgit.test/tst-rsrc/org/spearce/jgit/test/resources/all_packed_objects.txt delete mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/ObjectIdMapTest.java create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/WindowCacheGetTest.java create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/WindowCacheReconfigureTest.java delete mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/OffsetCache.java create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/LongMap.java -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html