From: Jonathan Nieder Date: Tue, 3 Nov 2015 19:24:02 +0000 (-0800) Subject: Use 'reused' bitmap to filter walk during bitmap selection X-Git-Tag: v4.2.0.201511101648-m1~13^2~5 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2a2c2f3373f0a3e76546e7c44ec3afa96d5e6e6f;p=jgit.git Use 'reused' bitmap to filter walk during bitmap selection When building fullBitmap in order to determine which ancestor chain to add this commit to, we were excluding the ancestors of reusedCommits using markUninteresting. This use of markUninteresting is a bit wasteful because we already have a bitmap indicating exactly which commits should be excluded (which can save some walking). Use it. A separate commit will remove the now-redundant markUninteresting call. No behavior change intended (except for performance improvement). Change-Id: I1112641852d72aa05c9a8bd08a552c70342ccedb --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java index f14e8cc5d2..4df54942a7 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java @@ -265,8 +265,8 @@ class PackWriterBitmapPreparer { for (AnyObjectId objectId : selectionHelper.reusedCommits) { rw.markUninteresting(rw.parseCommit(objectId)); } - rw.setRevFilter( - PackWriterBitmapWalker.newRevFilter(null, fullBitmap)); + rw.setRevFilter(PackWriterBitmapWalker.newRevFilter( + selectionHelper.reusedCommitsBitmap, fullBitmap)); while (rw.next() != null) { // The RevFilter adds the reachable commits from this @@ -464,7 +464,7 @@ class PackWriterBitmapPreparer { } return new CommitSelectionHelper(peeledWant, commits, pos, - orderedTipCommitBitmaps, reuseCommits); + orderedTipCommitBitmaps, reuse, reuseCommits); } /*- @@ -565,6 +565,8 @@ class PackWriterBitmapPreparer { private static final class CommitSelectionHelper implements Iterable { final Set peeledWants; final List tipCommitBitmaps; + + final BitmapBuilder reusedCommitsBitmap; final Iterable reusedCommits; final RevCommit[] commitsByOldest; final int commitStartPos; @@ -572,11 +574,13 @@ class PackWriterBitmapPreparer { CommitSelectionHelper(Set peeledWant, RevCommit[] commitsByOldest, int commitStartPos, List bitmapEntries, + BitmapBuilder reusedCommitsBitmap, Iterable reuse) { this.peeledWants = peeledWant; this.commitsByOldest = commitsByOldest; this.commitStartPos = commitStartPos; this.tipCommitBitmaps = bitmapEntries; + this.reusedCommitsBitmap = reusedCommitsBitmap; this.reusedCommits = reuse; }